Hibernate 与 Spring的JDBCTemplate,效率分别怎样,那个高一些

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate 与 Spring的JDBCTemplate,效率分别怎样,那个高一些相关的知识,希望对你有一定的参考价值。

现在许多项目都采用hibernateTemplate和JDBCTemplate混用的方式
HibernateTemplate一般是为了加快开发效率,还有就是使用Hibernate的时候,更简洁,更便利,而统一的声明事务,又让本来就已经很简洁的Hibernate对事务的处理,大大简化
但任何事务都有两面性,在带来大量便捷的同时,Hibernate也给我们留下了一点小小的遗憾,比如众所周知的,在处理大批量数据查询的时候,Hibernate的查询效率,是不尽人意的,有人做过测试,在高并发查询的时候,hibernate的查询效率,仅仅相当于使用jdbc效率7成左右,这对于对速度有着很高要求的互联网应用来说,不能不说是悲剧。

Hibernate在做批量操作时,效率不是很理想。所以现在采用JDBCTemplate和Hibernate混用,这时有几个注意事项.

1.如果采用JDBCTemplate的部分只涉及到查询,则可以使用Hibernate的应用缓存,即二级缓存。
2.如果采用JDBCTemplate的部分涉及到对数据库的更新操作,即增,删,改.则不能开启Hibernate的二级缓存,如果系统有缓存的需要,我觉得可以自己在逻辑层实现缓存.Java的缓存方案还是很多的。
3.在使用Spring做为容器的系统中,混用JDBCTemplate和Hibernate,事务管理请统一使用HibernateTransactionManager,前提是JDBCTemplate和Hibernate共用一个DataSource.
参考技术A 数据量大的情况下Spring的JDBCTemplate效率高很多

spring 学习之三(spring 与hibernate, struts2整合)


spring 学习之三(spring 与hibernate, struts2整合)



 如果不会struts环境搭建的可以参考​​《Strust2学习之一(struts2  环境搭建)》​​



如果不会spring和 hibernate整合的可以参考​​《​​ ​​Spring 学习之二(Spring 和 hibernate 整合)  》​​




这里就直接开始讲解spring 与struts2的整合:


第一步:


在web.xml中加入:

<!-- 在web容器中实例化spring容器, -->


<!-- 指定spring的配置文件,默认从web根目录寻找配置文件,我们可以通过spring提供的classpath:前缀指定从类路径下寻找 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 对Spring容器进行实例化 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>




<bean id="studentDAO" class="com.wfg.dao.test.StudentDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="studentAction" class="com.wfg.action.test.StudentAction">
<property name="studentDAO" ref="studentDAO"/>
</bean>
现在就可以在jsp中用





<a href="$pageContext.request.contextPath /studentAction.action">student  test </a> 进行访问测试


当然studentaction中的studentdao不需要在new了此时


public class StudentAction 

private StudentDAO studentDAO;

public StudentDAO getStudentDAO()
return studentDAO;


public void setStudentDAO(StudentDAO studentDAO)
this.studentDAO = studentDAO;


public String execute()
System.out.println(studentDAO);
//List list = studentDAO.findAll();
//System.out.println(list);
return "dd";












这里就直接开始讲解



以上是关于Hibernate 与 Spring的JDBCTemplate,效率分别怎样,那个高一些的主要内容,如果未能解决你的问题,请参考以下文章

Spring与Hibernate整合

Spring与Hibernate整合

Hibernate 与 Spring 的整合

spring 学习之三(spring 与hibernate, struts2整合)

Spring 与Hibernate 整合

springjdbc