在Spring 3中使用Hibernate

时间:2010-07-09 20:34:38

标签: hibernate spring spring-mvc annotations

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

目前我有一个用于JDBCTemplate的数据源,我希望将其重用于Hibernate。

不幸的是,我越了解Hibernate,我就越困惑。有许多不同的方法来配置它,自从一些教程以来,情况发生了很大的变化。最令人困惑的是,有时会使用persistence.xml文件,有时候是一个hibernate配置XML文件。

然后是会话工厂,但也有实体经理工厂。有人可以提炼一些这方面的信息,这样我就可以在我前面找到一条明确的道路。

我唯一真正的要求是我可以使用Hibernate的注释。我也想支持交易。

我知道这个问题有点含糊不清,但是因为我无法找到一个可靠的“教程化”解决方案,这个解决方案与我信任的第3弹是最新的。

1 个答案:

答案 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的类,而EntityManagerFactoryEntityManager在某种程度上是JPA“对应”。如果你采用JPA方式,你将处理EntityManagerFactoryEntityManager

  

我唯一真正的要求是我可以使用Hibernate的注释。我也想支持交易。

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

文档的12.6. JPA部分涵盖了配置Spring所需的一切(我建议您使用随数据源提供的LocalContainerEntityManagerFactoryBean)。

对于数据访问层(DAO)使用JpaTemplate and JpaDaoSupport类或使用注入的EntityManagerFactoryEntityManager实现DAOs based on plain JPA(我个人使用后面的方法)

所有这些对Spring 2.5文档的引用在Spring 3.0中仍然有效。为了以防万一,这里有一个不太老的tutorial可以帮助你开始。

另见