我目前的网络开发工具是Spring 3,之前我使用过Hibernate,我实际上非常熟悉它之后我可以访问注释和实体,以及会话对象。但是,这将是我第一次需要从头开始实际设置它。
目前我有一个用于JDBCTemplate的数据源,我希望将其重用于Hibernate。
不幸的是,我越了解Hibernate,我就越困惑。有许多不同的方法来配置它,自从一些教程以来,情况发生了很大的变化。最令人困惑的是,有时会使用persistence.xml文件,有时候是一个hibernate配置XML文件。
然后是会话工厂,但也有实体经理工厂。有人可以提炼一些这方面的信息,这样我就可以在我前面找到一条明确的道路。
我唯一真正的要求是我可以使用Hibernate的注释。我也想支持交易。
我知道这个问题有点含糊不清,但是因为我无法找到一个可靠的“教程化”解决方案,这个解决方案与我信任的第3弹是最新的。
答案 0 :(得分:3)
目前我有一个用于JDBCTemplate的数据源,我希望将其重用于Hibernate。
没问题。我只想提一下,通过Hibernate和JDBC访问相同的表需要一些预防措施。
(...)最令人困惑的是,有时会使用persistence.xml文件,有时候是一个hibernate配置XML文件。
hibernate.cfg.xml
是Hibernate native 配置文件。 persistence.xml
是JPA(标准化Java Persistence API)配置文件。如果您决定采用JPA方式(这将是我的建议),您通常只使用persistence.xml
。如果你使用Spring,大多数配置实际上都会在Spring配置文件中结束。
然后是会话工厂,但也有实体经理工厂。有人可以提炼一些这方面的信息,这样我就可以在我前面找到一条明确的道路。
与上述相同。 SessionFactory
(和Session
)是来自Hibernate原生API的类,而EntityManagerFactory
和EntityManager
在某种程度上是JPA“对应”。如果你采用JPA方式,你将处理EntityManagerFactory
和EntityManager
。
我唯一真正的要求是我可以使用Hibernate的注释。我也想支持交易。
如前所述,我的建议是使用标准化的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可以帮助你开始。