就像我们知道的一样,Hibernate是ORM领域事实上的标准,它在操作数据库方面,提供了最大程度的遍历与快捷,而hibernate与 spring的结合,更是将这种便利发挥到了极致,这其中得益于HibernateDaoSupport 和HiberateTemplate以及HibernateTransation的大力支持.简单的来说,有了spring,使得使用Hibernate 的时候,更简洁,更便利,而统一的声明事务,又让本来就已经很简洁的Hibernate对事务的处理,大大简化.这其中,得益于AOP思想的应用.可以说,有了Spring之后,Hibernate就像插上了翅膀,转化为软件开发人员手中一件天使一般的工具.不能不说,这是我们这个时代的一个骄傲.
但任何事务都有两面性,在带来大量便捷的同时,Hibernate也给我们留下了一点小小的遗憾,比如众所周知的,在处理大批量数据查询的时候,Hibernate的查询效率,是不尽人意的,有人做过测试,在高并发查询的时候,hibernate的查询效率,仅仅相当于使用jdbc效率7成左右,这对于对速度有着很高要求的互联网应用来说,不能不说是悲剧.尽管有存在有各种各样的缓存解决方案,但还是在高并发查询下,让人们对 hibernate的性能,捏了一把汗.同时,hibernate在查询的时候,所带来的n+1问题,也一直让人所诟病.
进而在批量操作方面,比如在早期,在没有使用jdbc3.0的batch update的时候,hibernate的批量删除,是让人很头痛的, 甚至是一条记录的删除,也不能做到像jdbc一样让人满意.
所以,在我们的项目框架中,混合使用hibernate与jdbc,各自发挥各自的优势与长处,弥补对方的缺陷,提高系统的响应速度.但是需要注意的时, jdbcTemplate的HibernateTemplate混合使用的时候,要注意其混合事务的处理.
正如我们以前的项目一样,一开始在项目中使用的是JDBCTemplate,为了提高开发效率决定采用Hibernate,但是发现Hibernate 在做批量操作时,效率不是很理想。所以现在采用JDBCTemplate和Hibernate混用,JDBCTemplate和Hibernate混用是可以的,有几个注意事项.
1.如果采用JDBCTemplate的部分只涉及到查询,则可以使用Hibernate的应用缓存,即二级缓存.
2.如果采用JDBCTemplate的部分涉及到对数据库的更新操作,即增,删,改.则不能开启Hibernate的二级缓存,如果系统有缓存的需要,我觉得可以自己在逻辑层实现缓存.Java的缓存方案还是很多的.
3.在使用Spring做为容器的系统中,混用JDBCTemplate和Hibernate,事务管理请统一使用HibernateTransactionManager,前提是JDBCTemplate和Hibernate共用一个DataSource.
分享到:
相关推荐
Spring提供了多种持久化模板,如JdbcTemplate和HibernateTemplate,以简化数据库操作并减少代码中的样板代码。这两个模板都是Spring JDBC模块的一部分,用于增强对SQL数据库的访问能力。本文将深入探讨Spring对...
本手册和使用指南提供了全面的Spring 2.0相关知识,包括其核心特性、配置方式以及如何在实际项目中应用。 首先,让我们深入了解一下Spring框架的核心概念。Spring的依赖注入(Dependency Injection,简称DI)是一种...
Spring 和 Hibernate 是两个非常重要的 Java 开发框架,它们在企业级应用开发中有着广泛的应用。Spring 是一个全面的后端应用程序框架,提供了依赖注入、面向切面编程、数据访问、事务管理等多种功能。Hibernate 则...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
此外,Spring 2.0还加强了对JDBC的支持,引入了JdbcTemplate和HibernateTemplate,简化了数据库操作,减少了代码中的SQL硬编码。 "spring20英文.pdf"很可能是Spring 2.0的官方英文文档,包含了详细的框架介绍、API...
在Spring 2.5.5中,你可以使用JdbcTemplate或者HibernateTemplate来实现数据库访问。 总之,Spring 2.5.5虽然不是最新版本,但它包含的许多核心功能和设计思想仍然适用于现代Java开发。通过学习这个版本,开发者...
在JDBC方面,Spring通过JdbcTemplate和NamedParameterJdbcTemplate简化了SQL的执行,提供了事务管理、连接池管理等功能,避免了手动处理数据库连接和关闭资源的繁琐工作。配置通常涉及以下步骤: 1. 配置数据源:在...
在Spring中,JdbcTemplate和HibernateTemplate就是模板方法模式的典型应用。它们为数据库操作提供了一个通用模板,包括打开连接、设置事务、执行SQL、提交事务和关闭连接等步骤。子类可以通过重写特定方法来定制自己...
Spring 和 Swing 是两个在 Java 开发中非常重要的库。Spring 是一个开源的框架,主要用于构建企业级的 Java 应用程序,它强调依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,...
Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,以其IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心特性,极大地简化了企业级应用的开发。...
3. **创建JdbcTemplate对象**:在Spring配置文件中定义数据源和JdbcTemplate bean。数据源负责连接数据库,而JdbcTemplate则用于执行SQL语句。 ```xml <!-- 在Spring配置文件中定义数据源 --> ...
Spring 2.5 和 Hibernate 是两个非常重要的Java企业级开发框架,它们在现代Web应用程序的开发中扮演着核心角色。Spring 提供了一个全面的编程和配置模型,旨在简化Java应用程序的开发,而Hibernate则是一个强大的...
它通过模板类简化了数据访问操作,如JdbcTemplate和HibernateTemplate,降低了代码量,同时提供事务管理能力。 5. **MVC框架** Spring MVC是Spring 2.0中的Web应用开发框架,支持模型-视图-控制器模式。它包含...
书中会介绍如何使用Spring的JdbcTemplate和HibernateTemplate简化数据库操作,以及如何进行事务管理,确保数据的一致性。 Spring AOP(面向切面编程)是另一个关键特性,它允许开发者定义横切关注点,如日志、安全...
4. **定义DAO层**:使用Spring的HibernateTemplate或JdbcTemplate,编写数据访问对象(DAO),实现对数据库的操作。 5. **定义Service层**:创建业务服务接口和实现,使用Spring的@Autowired注解注入DAO,封装业务...
Spring 3对ORM(对象关系映射)框架如Hibernate、JPA的支持进一步增强,提供了更丰富的数据访问抽象,如JdbcTemplate和HibernateTemplate。此外,Spring 3还引入了Spring JDBC模块,提供了一种更简洁的方式来执行SQL...
你可以在源码中找到如何在配置和代码中使用SpEL的例子。 10. **AspectJ集成**:Spring 3.0增强了与AspectJ的集成,使得AOP功能更为强大。你可以看到如何使用AspectJ的编译时或加载时织入。 通过研究这些示例,你...
Spring框架是Java企业级应用开发中使用最为广泛的一个开源框架,它提供了全面的编程和配置模型,用于现代Java基础类库,尤其是Java EE。在Spring框架中,JdbcTemplate是一个用于简化JDBC操作的对象,它利用了模板...
在数据库操作上,Spring4.3.7通过JdbcTemplate和HibernateTemplate提供了数据库访问的抽象层,简化了DAO(Data Access Object)的开发。同时,Spring Data项目提供了一种更高级别的抽象,支持自动化的Repository接口...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...