我有一个项目,其中我想利用Hibernate来提高基本操作的开发速度,结合Spring的JDBC模板,以便能够使用我自己的SQL查询来执行一些特定的操作,而不是松散的控制,因为有一些繁重的、对性能要求很高的操作。
这是可能的或者是一个好主意吗?
发布于 2013-06-04 14:53:03
是的,这是可能的。是的,这是个好主意。
The documentation说:
对于跨多个Hibernate会话工厂的分布式事务,
只需将JtaTransactionManager作为一种事务策略与多个LocalSessionFactoryBean定义相结合。然后,每个DAO都会获得一个特定的SessionFactory引用,并将其传递到相应的bean属性中。如果所有底层JDBC数据源都是事务性容器数据源,那么只要使用JtaTransactionManager作为策略,业务服务就可以跨任意数量的DAO和任意数量的会话工厂划分事务,而无需特别注意。
..。
对于特定的DataSource,
HibernateTransactionManager可以将Hibernate JDBC连接导出为普通的JDBC访问代码。如果您只访问一个数据库,则此功能允许使用混合的Hibernate和JDBC数据访问进行高级事务划分,完全不需要JTA。如果您通过DataSource类的dataSource属性设置了传入的SessionFactory,那么dataSource会自动将Hibernate事务公开为JDBC事务。或者,您可以通过HibernateTransactionManager类的DataSource属性显式指定要为其公开事务的dataSource。
因此,如果您在支持JTA事务和DataSources的全栈Java容器中,请使用在Java容器中定义的DataSource和JTATransactionManager。
如果你在一个简单的web容器中,比如Tomcat,使用一个Spring提供的DataSource和一个HibernatTransactionManager。
https://stackoverflow.com/questions/16911355
复制相似问题