Java 在SpringFramework3.0中同时使用Hibernate和Jdbc

Java 在SpringFramework3.0中同时使用Hibernate和Jdbc,java,spring,hibernate,jdbc,Java,Spring,Hibernate,Jdbc,我正在从事一个使用Spring3.0和Hibernate3.0的项目。我的项目有控制器、服务和DAO层。DAO(用hibernate编写)是从服务层访问的。现在的要求是我需要同时使用Hibernate和JDBC。休眠部分约为80-90%。对于剩下的10%,我必须使用简单的JDBC(可以使用JdbcTemplate)。请建议我,如何同时使用hibernate和Jdbc。我需要分离、可重用的设计。在春季如何实施 如有任何建议,我们将不胜感激 提前谢谢 我写这个答案是希望人们能改进我的答案,因为这可能

我正在从事一个使用Spring3.0和Hibernate3.0的项目。我的项目有控制器、服务和DAO层。DAO(用hibernate编写)是从服务层访问的。现在的要求是我需要同时使用Hibernate和JDBC。休眠部分约为80-90%。对于剩下的10%,我必须使用简单的JDBC(可以使用JdbcTemplate)。请建议我,如何同时使用hibernate和Jdbc。我需要分离、可重用的设计。在春季如何实施

如有任何建议,我们将不胜感激


提前谢谢

我写这个答案是希望人们能改进我的答案,因为这可能不是最好的答案,所以请评论

在hibernate中,可以使用命名本机查询 例子: 向下滚动一点,找到文件:Professor.java
你可以用这个例子。通过这种方式,您可以从hibernate启动本机查询。

您可以安全地将hibernate与spring JDBC混合使用,并且两者都应该能够共享由
HibernateTransactionManager
管理的事务。请记住,您应该使用spring模板来实现这一点,因为它们能够检测和重用活动事务的线程绑定连接。如果出于某种原因,您想在混合中添加另一个基于jdbc的库(例如groovy sql),您仍然可以通过spring
DataSourceUtils
来完成


当hibernate和SpringJDBC模板对同一数据进行操作时,唯一可能出现的问题是。Hibernate可能会延迟数据库更新,SpringJDBC随后会访问过时的数据。我对这种交互的经验来自较旧版本的spring,现在可能有一些机制来解决这个问题。

好的,创建数据访问层(DAO是对象,我建议创建一个自定义层)如何,以便根据需要使用Hibernate功能和本机JDBC。这就像你有一个另一层(接口),它有一些方法来执行你想使用hibernate功能(如CRUD)完成的操作,你还支持构建定制的hibernate查询(或、介于和之间),你有一个方法来执行简单的JDBC查询,它返回结果集(记录集)您将拥有相同DAO的多个实现吗?ie:PersonDaoHibernate和PersonDaoJdbc?@BrandonV所以我们有DAO(映射到表的普通类),它将包含所有hibernate注释。然后是另一层数据访问层,在该层中使用通用模板创建类,并在T上执行操作,如(类模板)。也可能是同一个类,或者像你说的那样,jdbc可以有jdbc查询机制。你能告诉我如何使用它吗?关于如何获取连接以及如何使用连接的任何示例?使用SpringJDBC,您不需要手动获取连接或管理连接,您可以提供回调(行映射器)来处理数据。最好参考优秀的spring文档以获得解释和示例。事务管理器呢?我使用过HibernateTransactionManager。
HibernateTransactionManager
基本上完成了
DataSourceTransactionManager
所做的一切,另外它还管理hibernate会话。两者都使用相同的底层机制将事务+连接绑定到线程。谢谢!我还确认了这个答案