在Spring 3中使用Hibernate

我当前的Web开发工具是Spring 3,我之前使用过Hibernate,在访问注释和实体以及会话对象之后,我实际上对它非常熟悉.但是,这是我第一次需要从头开始进行实际设置.

当前,我有一个用于JDBCTemplate的数据源,并且想将其重用于Hibernate.

不幸的是,我越了解Hibernate,就越困惑.配置它的方式有很多,自一些教程以来,情况已经发生了很大变化.最令人困惑的是,有时会使用persistence.xml文件,有时会使用休眠配置XML文件.

然后有会话工厂,但也有实体管理器工厂.有人可以摘录其中的一些信息,所以我面前还有一条清晰的路.

我唯一真正的要求是我可以在Hibernate中使用批注.我也想支持交易.

我知道这个问题有些含糊,但这是因为我一直无法真正找到一个可靠的“教程化”解决方案,该解决方案与我信任的Spring 3无关.

最佳答案

Currently I have a datasource that I have used for JDBCTemplate,and I want to reuse that for Hibernate.

没问题.我只是提到通过Hibernate和JDBC访问相同的表将需要一些预防措施.

(…) Most confusing is that sometimes a persistence.xml file is used,sometimes a hibernate config XML file.

hibernate.cfg.xml是Hibernate本机配置文件. persistence.xml是JPA(标准化Java Persistence API)配置文件.如果您决定采用JPA方式(这是我的建议),则通常仅使用persistence.xml.而且,如果您使用Spring,无论如何大多数配置实际上都将存储在Spring配置文件中.

Then there are session factories,but then there are also entity manager factories. Could someone please distill some of this information so I have a bit more of a clear path ahead of me.

与上述相同的故事. SessionFactory(和Session)是Hibernate本地API中的类,而EntityManagerFactory和EntityManager则是JPA的“对应部分”.如果您采用JPA方式,则将处理EntityManagerFactory和EntityManager.

My only real requirements are that I can use the annotations with Hibernate. I’d like to have support for transactions too.

如前所述,我的建议是使用标准化的JPA API(仅在严格要求时才使用Hibernate专有扩展).对于事务,请使用Spring.

文档的12.6. JPA部分涵盖了配置Spring所需的所有内容(我建议使用将与数据源一起提供的LocalContainerEntityManagerFactoryBean).

对于数据访问层(DAO),请使用JpaTemplate and JpaDaoSupport类或使用注入的EntityManagerFactory或EntityManager实现DAOs based on plain JPA(我个人使用后一种方法).

所有这些对Spring 2.5文档的引用在Spring 3.0中仍然有效.以防万一,这是一个不太旧的tutorial,可以帮助您入门.

也可以看看

> Similarity and difference between JPA and Hibernate
> Difference Hibernate 3.5 / JPA 2.0

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...