Lai*_*jus 17 java spring hibernate
应该如何正确地完成Spring下Hibernate会话的"生命周期"?
它SessionFactory由Spring自动创建,并从Glassfish连接池获取其数据库连接.目前我正在通过Hibernate会话SessionFactory.getCurrentSession().然后我开始交易,完成工作然后commit()或rollback()最后.我需要做任何其他操作,如disconnect(),close(),flush()在任何时间或任何其他人,以便连接将被适当地返回到游泳池或就是一切已经自动春天呢?
有了很多这些方法,我现在有点困惑,要了解应该做什么,也许有人可以指向正确的方向?
Nan*_*ale 12
由于SessionFactory是由Spring自动创建的,因此Spring框架将负责关闭连接.查看Spring Resource Management
如果你想检查.如果您正在使用应用程序的日志记录,则可以检查日志.它会像:
(主要)INFO [AnnotationSessionFactoryBean]关闭Hibernate SessionFactory
我从这个链接获得以下行
这里的主要合同是创建Session实例.通常,应用程序具有单个SessionFactory实例,并且服务客户端请求的线程从此工厂获取Session实例.SessionFactory的内部状态是不可变的.创建后,将设置此内部状态.此内部状态包括有关对象/关系映射的所有元数据.实现者必须是线程安全的.
关于连接如何释放回连接池的策略与Spring无关.它由Hibernate本身通过配置参数配置hibernate.connection.release_mode,配置参数由org.hibernate.ConnectionReleaseMode中的枚举标识.
从3.1+版本开始,默认值hibernate.connection.release_mode就是auto其对应的ConnectionReleaseMode值取决于JTA或JDBC交易是否被使用.在使用JDBC事务的情况下,将其设置为ConnectionReleaseMode.AFTER_TRANSACTION(即after_transaction).
行为ConnectionReleaseMode.AFTER_TRANSACTION是:连接将在每次事务后返回到连接池,即通过调用transaction.commit()或transaction.rollback()调用 session.close()和session.disconnect()
您可以在第11.5节的hibernate文档中验证此行为.
| 归档时间: |
|
| 查看次数: |
19680 次 |
| 最近记录: |