一开始在项目中使用的是JDBCTemplate,为了提高开发效率决定采用Hibernate,但是发现Hibernate在做批量操作时,效率不是很理想。所以现在采用JDBCTemplate和Hibernate混用,JDBCTemplate和Hibernate混用是可以的,有几个注意事项.
1. 如果采用JDBCTemplate的部分只涉及到查询,则可以使用Hibernate的应用缓存,即二级缓存.
2. 如果采用JDBCTemplate的部分涉及到对数据库的更新操作,即增,删,改.则不能开启Hibernate的二级缓存,如果系统有缓存的需要,我觉得可以自己在逻辑层实现缓存.Java的缓存方案还是很多的.
3. 在使用Spring做为容器的系统中,混用JDBCTemplate和Hibernate,事务管理请统一使用HibernateTransactionManager,前提是JDBCTemplate和Hibernate共用一个DataSource.
在HibernateTransactionManager的类说明中有一段话
This transaction manager is appropriate for applications that use a single Hibernate SessionFactory for transactional data access, but it also supports direct DataSource access within a transaction (i.e. plain JDBC code working with the same DataSource). This allows for mixing services which access Hibernate and services which use plain JDBC (without being aware of Hibernate)! Application code needs to stick to the same simple Connection lookup pattern as with DataSourceTransactionManager (i.e. DataSourceUtils.getConnection(javax.sql.DataSource) or going through a TransactionAwareDataSourceProxy).
从代码的角度上看也是可以混用的.事务可以统一管理。HibernateTransactionManager的doBegin方法中有这么一段代码(注意标红的部分)
// add the Hibernate transaction to the session holder
txObject.getSessionHolder().setTransaction(session.beginTransaction());
// register transaction timeout
if (definition.getTimeout() != TransactionDefinition.TIMEOUT_DEFAULT)
{
txObject.getSessionHolder().setTimeoutInSeconds(definition.getTimeout());
}
// bind the session holder to the thread
if (txObject.isNewSessionHolder())
{
TransactionSynchronizationManager.bindResource(this.sessionFactory, txObject.getSessionHolder());
}
// register the Hibernate Session's JDBC Connection for the DataSource, if set
if (this.dataSource != null)
{
ConnectionHolder conHolder = new ConnectionHolder(session.connection());
if (definition.getTimeout() != TransactionDefinition.TIMEOUT_DEFAULT)
{
conHolder.setTimeoutInSeconds(definition.getTimeout());
}
TransactionSynchronizationManager.bindResource(this.dataSource, conHolder);
}
分享到:
相关推荐
SpringJdbcTemplate是Spring框架中用于简化Java数据库访问的工具,它是Spring JDBC模块的核心。这个封装工具类的出现是为了提供一种更简洁、易于使用的接口来执行SQL操作,减轻开发者处理数据库连接、事务管理以及...
使用maven构建项目,spring mvc,spring,分别与jdbctemplate,hibernate,mybatis全注解整合,其中包括包含有spring动态代理,数据库的事务处理。以及动态数据源的切换! 最新新增了ehcache缓存的应用
Spring JdbcTemplate是Spring框架中用于简化数据库操作的一个重要组件,它是Spring对JDBC的轻量级封装,旨在提供一种...在实际项目中,可以根据具体需求选择使用JdbcTemplate或是更强大的ORM框架如Hibernate或MyBatis。
在IT行业中,Spring、Hibernate和JdbcTemplate是三个非常重要的Java框架和工具,它们在企业级应用开发中扮演着核心角色。下面将详细讲解这三个技术及其相互间的整合。 **Spring框架**: Spring是一个全面的企业级...
在实际项目中,结合Spring的其他数据访问组件,如Hibernate或MyBatis,可以构建出强大且灵活的数据访问层。通过对JdbcTemplate的源码学习,我们可以更深入地理解其工作原理,从而更好地利用这一工具。
在与Spring和Hibernate整合时,需要正确配置MySQL的JDBC驱动(通常为`mysql-connector-java`),以便Spring的JdbcTemplate或Hibernate可以与数据库进行通信。注意,不同版本的MySQL可能需要对应版本的JDBC驱动,确保...
在"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA+JdbcTemplate"的DEMO中,开发者通常会创建一个Maven工程,配置相关依赖,然后分别设置Spring的配置文件(如`applicationContext.xml`)、SpringMVC的配置文件...
首先,我们需要在Spring配置中声明Hibernate的DataSource和SessionFactory,然后通过Spring的JdbcTemplate或Hibernate的Session接口进行数据访问。接着,我们定义Spring MVC的Controller,它将接收HTTP请求,通过...
- 使用Spring的JdbcTemplate或NamedParameterJdbcTemplate,提供更安全、可维护的数据库操作方式。 - 避免在Service层直接使用Session,而是通过HibernateTemplate或Repository接口进行操作。 - 利用Spring的...
在IT行业中,Spring、Hibernate和Struts2是Java企业级应用开发中的三大核心框架,它们分别专注于不同层面的问题。Spring4.0版本是Spring框架的一个重要里程碑,它提供了许多改进和新特性,使得应用程序的开发更为...
3. **持久化操作**:通过Spring的JdbcTemplate或Hibernate的Session,实现对User和Book的增删改查。例如,使用save()方法添加新记录,update()方法更新现有记录,delete()方法删除记录,以及find()或list()方法获取...
同时,可以使用Spring的JdbcTemplate或HibernateTemplate来简化数据访问代码。 6. **测试与优化**:完成配置后,进行单元测试和集成测试,确保各个组件能够正常协同工作。根据性能需求,还可以调整缓存策略、优化...
Spring 可以通过工厂方法或 JdbcTemplate、HibernateTemplate 提供的模板方法来获取 Session。 6. **Service 层设计**:Service 层是业务逻辑的核心,通常会注入 DAO 实例并调用其方法来完成业务处理。Service 层...
如果SSH在这里是其他含义,比如Spring、Struts、Hibernate的缩写,那么它可能意味着讨论的是基于这三个框架的Web应用开发,但这个信息并不直接影响JdbcTemplate的讨论。 总的来说,JdbcTemplate是Spring框架中一个...
4. 创建DAO层:使用Spring的JdbcTemplate或Hibernate的Session接口进行数据库操作,Spring会自动管理事务。 5. 创建Service层:业务逻辑层,通过@Autowired注解注入DAO,Spring会自动完成依赖注入。 6. 编写...
代码层面,我们可以利用Spring的JdbcTemplate或者HibernateTemplate来简化数据库操作,它们提供了事务边界内的操作方法,避免了手动管理事务的繁琐。对于复杂的业务逻辑,Spring的DAO层和Service层设计模式可以帮助...
此外,Spring的JdbcTemplate和HibernateTemplate还可以用于实现数据库操作的模板方法模式,提高了代码的可读性和可重用性。 总的来说,Spring 2.5 和 Hibernate 的结合为Java开发人员提供了一套强大的工具,用于...
Spring的JdbcTemplate或JPA(Java Persistence API)支持可以与Hibernate结合使用,进一步简化数据访问层的开发。 文档中可能包括了以下内容: 1. Spring框架概述:介绍Spring的基本概念、核心模块和使用场景。 2. ...
- **编写DAO层**:使用Spring的HibernateTemplate或JdbcTemplate来操作数据库,实现增删查改的方法。 - **事务管理**:配置Spring的声明式事务管理,确保数据库操作的原子性和一致性。 5. **测试**: 创建JUnit...
使用maven构建项目,spring mvc,spring,分别与jdbctemplate,hibernate,mybatis全注解整合,其中包括包含有spring动态代理,数据库的事务处理。以及动态数据源的切换! 最新新增了ehcache缓存的应用 ...