为了让应用在JDBC事务和JTA事务环境中能够移植,建议使用可选的Hibernate Transaction API, 它包装并隐藏了底层系统
经过设置Hibernate配置属性hibernate.transaction.factory_class来指定 一个Transaction实例的工厂类
有三个标准(内建)的选择:
1:委托给数据库(JDBC)事务(默认)
Hibernate4之前:org.hibernate.transaction.JDBCTransactionFactory
Hibernate4里面:org.hibernate.engine.transaction.internal.jdbc.JDBCTransactionFactory
2:JTA事务,若是在上下文环境中存在运行着的事务(如, EJB会话Bean的方法), 则委托给容器管 理的事务, 不然,将启动一个新的事务,并使用Bean管理的事务.
Hibernate4之前: org.hibernate.transaction.JTATransactionFactory
Hibernate4里面: org.hibernate.engine.transaction.internal.jta.JTATransactionFactory
3:委托给容器管理的JTA事务
Hibernate4之前: org.hibernate.transaction.CMTTransactionFactory
Hibernate4
里面:org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory
也能够定义属于你本身的事务策略 (如, 针对CORBA的事务服务)