GettingHibernateSession |
|
Your trail: |
Difference between
current version
and
current version:
At line 1 added 43 lines. |
* How do I get hold of the Hibernate session in my DAO? |
;:''The DAO layer has the Hibernate sessionFactory injected (made available) to it through Spring and this entry in applicationContext-hibernate.xml: |
|
{{{ |
<property name="sessionFactory"><ref local="sessionFactory"/></property> |
}}} |
|
So to access the Hibernate session from within your DAO, place a method like this in your DAO: |
|
{{{ |
|
Session session = SessionFactoryUtils.getSession(getSessionFactory(), false); |
|
}}} |
|
* How do I get hold of the Hibernate session in my View code? |
;:''To get hold of the Session in the view code, you need to lookup the SessionFactory defined in the applicationContext-hibernate.xml: |
|
{{{ |
private void createApplicationContext() { |
if (ctx == null) { |
ctx = |
WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext()); |
} |
} |
|
public net.sf.hibernate.Session getCurrentHibernateSession() { |
createApplicationContext(); |
|
SessionFactory sessionFactory = (SessionFactory)ctx.getBean("sessionFactory"); |
SessionHolder sessionHolder = (SessionHolder)TransactionSynchronizationManager.getResource(sessionFactory); |
net.sf.hibernate.Session currentSession = null; |
Transaction currentTransaction = null; |
|
if (sessionHolder!=null) { |
currentSession = sessionHolder.getSession(); |
currentTransaction = sessionHolder.getTransaction(); |
} |
return currentSession; |
} |
|
}}} |
|
Back to GettingHibernateSession,
or to the Page History.
|