企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 3.8\. J2EE应用程序服务器的集成 针对J2EE体系,Hibernate有如下几个集成的方面: * _容器管理的数据源(Container-managed datasources)_: Hibernate能使用通过容器管理,并由JNDI提供的JDBC连接. 通常, 特别是当处理多个数据源的分布式事务的时候, 由一个JTA兼容的`TransactionManager`和一个 `ResourceManager`来处理事务管理(CMT, 容器管理的事务). 当然你可以通过 编程方式来划分事务边界(BMT, Bean管理的事务). 或者为了代码的可移植性,你也也许会想使用可选的 Hibernate `Transaction` API. * _自动JNDI绑定_: Hibernate可以在启动后将 `SessionFactory`绑定到JNDI. * _JTA Session绑定:_ Hibernate `Session` 可以自动绑定到JTA事务作用的范围. 只需简单地从JNDI查找`SessionFactory`并获得当前的 `Session`. 当JTA事务完成时, 让Hibernate来处理 `Session`的清洗(flush)与关闭. 事务的划分可以是声明式的(CMT),也可以是编程式的(BMT/UserTransaction). * _JMX部署:_ 如果你使用支持JMX应用程序服务器(如, JBoss AS), 那么你可以选择将Hibernate部署成托管MBean. 这将为你省去一行从`Configuration`构建`SessionFactory`的启动代码. 容器将启动你的`HibernateService`, 并完美地处理好服务间的依赖关系 (在Hibernate启动前,数据源必须是可用的,等等). 如果应用程序服务器抛出"connection containment"异常, 根据你的环境,也许该将配置属性 `hibernate.connection.release_mode`设为`after_statement`.