您的位置:首页 > 编程语言 > Java开发

新版本中spring与hibernate整合dao层调用session的方法

2010-12-02 15:24 701 查看
(选自:《Beginning Hibernate》及《spring-framework-3.0.5.RELEASE reference》)

在spring和hibernate整合框架中,session factory被配置为一个spring
bean,以前版本会利用HibernateDaoSupport和HibernateTemplate这两个类,在新版本中可直接利用方法
session factory的getCurrentSession()返回当前事务的session。

如:

1. public List<Paper> getAll() {
2. Session session = this.sessionFactory.getCurrentSession();
3. List<Paper> papers = (List<Paper>)session.createQuery("from Paper").list();
4. return papers;
5. }


Hibernate 3.0.1开始具有有contextual sessions特性,这样hibernate为每个事务管理一个当前session。之前都是spring的相关支持类来实现这个功能。我们推荐使用这种方式。
优点:只依赖于hibernate,不再需要spring相关类。减小入侵性。

(Hibernate 3 has a feature called contextual sessions, wherein
Hibernate itself manages one current
Session

per transaction. This is roughly
equivalent to Spring's synchronization of one Hibernate
Session

per transaction. A corresponding
DAO implementation resembles the following example, based on the plain
Hibernate API:)
Spring的 LocalSessionFactoryBean为其事务策略 支持Hibernate的

SessionFactory.getCurrentSession() 方法, 返回当前spring管理的事务session,

(Spring's LocalSessionFactoryBean supports Hibernate's

SessionFactory.getCurrentSession() method for any Spring transaction strategy, returning

the current Spring-managed transactional Session even with HibernateTransactionManager.)

public List<Paper> getAll() {
Session session = this.sessionFactory.getCurrentSession();
List<Paper> papers = (List<Paper>)session.createQuery("from Paper").list();
return papers;


With your session factory configured as a Spring bean, you can now go on to create DAOs that take

advantage of Hibernate’s functionality. Previous versions of Spring and Hibernate required the use of

the HibernateDaoSupport class and/or HibernateTemplate class to form the basis of your DAOs; however,

recent versions of Spring and Hibernate have eliminated the need for these classes. Hibernate now

supports a getCurrentSession() method on the SessionFactory that returns a Session object that is

associated with the current transaction.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐