jdbctemplate手动提交事务(Hibernate 与 Spring的JDBCTemplate,效率分别怎样,那个高一些)

:暂无数据 2026-07-06 10:30:09 :0

jdbctemplate手动提交事务(Hibernate 与 Spring的JDBCTemplate,效率分别怎样,那个高一些)

“jdbctemplate手动提交事务”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看jdbctemplate手动提交事务(Hibernate 与 Spring的JDBCTemplate,效率分别怎样,那个高一些)!

本文目录

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.

jdbctemplate不会加入事务

是的。
jdbcTemplate是不能支持事务的。
JDBCTemplate是Spring框架提供的对JDBC封装对象,目的是简化JDBC开发,是因为传统JDBC代码有着大量的重复。

请问DAO层采用JdbcTemplate操作数据,如何在Service层控制事务

Service层调用DAO层方法。
由于一个Service方法可能需要调用多个DAO对象的方法,需要在Service层进行事务控制。
由于一些原因,需要采用编程式事务(现使用TransactionTemplate)。
可是存在一个问题:
只有当创建TransactionTemplate对象的DataSourceTransactionManager使用的DataSource对象和DAO对象创建JdbcTemplate对象使用的DataSource是同一个对象时才能在transactionTemplate.execute()方法中控制事务。暂时想到如下设计:
1. BasicDao类
所有DAO的父类,提供静态变量DataSource用于为所有的DAO类创建JdbcTemplate对象。
同时提供DataSource的get方法,用于在Service方法中创建DataSourceTransactionManager对象。
public class BasicDao { private static DataSource dataSource; protected JdbcTemplate jdbc; static { dataSource = new MyDataSource(); } public BasicDao() { jdbc = new JdbcTemplate(dataSource); } //....getters and setters } 2. DAO类
继承自BasicDao类,完成数据库操作。
3. Service类
调用DAO类的方法,完成业务。
DataSource dataSource = BasicDao.getDataSource(); DataSourceTransactionManager txManager = new DataSourceTransactionManager(dataSource); TransactionTemplate txTemplate = new TransactionTemplate(txManager ); final Dao1 dao1= new Dao1(); final Dao2 dao2= new Dao2(); transactionTemplate.execute(new TransactionCallback(){ public Object doInTransaction(TransactionStatus arg0) { dao1.function1(); dao2.function2(); //.... return null; } }); 暂时只能这样来实现,请问各位有什么更好的实现吗?不要使用Spring的IOC容器和声明式事务。
以上面的Service方法为例吧:
1.在ProxyClass中进行事务的控制,将DataSource保存到ThreadLocal。
2.在ProxyClass中调用代理的具体Service类的service方法。
3.Service类的service方法只完成具体的业务dao方法调用。
4.Dao类的DataSource对象从ThreadLoacl中取得。
public class ProxyClass { public static final ThreadLocal threadLocal = new ThreadLocal(); private DataSourceTransactionManager txManager; private TransactionTemplate txTemplate; TargetService target; //代理的具体的目标服务对象 public ProxyClass() { DataSource dataSource = new MyDataSource(); txManager = new DataSourceTransactionManager(dataSource); txTemplate = new TransactionTemplate(txManager ); threadLocal.set(dataSource); } public void service() { transactionTemplate.execute(new TransactionCallback(){ public Object doInTransaction(TransactionStatus arg0) { target.service(); //调用具体服务方法 } }); } //...... } 问题补充:finallygo 写道不对的,你的代码编译可以通过吗?
如果是直接使用JDBC进行操作的话,在ThreadLocal应该存储Connection。

如何解决jpaTemplate和jdbcTemplate 共享一个事务处理

1.xml
xml version="1.0" encoding="UTF-8"?》
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
《bean
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"》
《!-- property name="proxyTargetClass" value="true"》《/property --》
《/bean》

《bean id="railWeightEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"》
《property name="persistenceUnitName" value="railWeightEntityManager" /》
《property name="jpaProperties"》
《props》《/props》
《/property》
《/bean》

《bean id="railWeightTransactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager"》
《property name="entityManagerFactory" ref="railWeightEntityManagerFactory" /》
《/bean》

《bean id="railWeightTransactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"》
《property name="transactionManager" ref="railWeightTransactionManager" /》
《property name="transactionAttributeSource"》
《bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource" /》
《/property》
《/bean》

《bean id="railWeightTransactionAttributeSourceAdvisor"
class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor"》
《property name="transactionInterceptor" ref="railWeightTransactionInterceptor" /》
《/bean》
《/beans》
《?xml version="1.0" encoding="UTF-8"?》
***隐藏网址***

《persistence-unit name="railWeightEntityManager" transaction-type="RESOURCE_LOCAL"》
《!-- provider》org.hibernate.ejb.HibernatePersistence《/provider--》
《!-- jta-data-source》java:comp/env/jdbc/opendb《/jta-data-source--》
《properties》
《property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect" /》
《property name="hibernate.max_fetch_depth" value="3" /》
《property name="hibernate.show_sql" value="true" /》

《property name="hibernate.connection.driver_class" value="com.ibm.db2.jcc.DB2Driver" /》
《property name="hibernate.connection.url" value="jdbc:db2://10.1.1.21:50001/matDev" /》
《property name="hibernate.connection.username" value="db2inst1" /》
《property name="hibernate.connection.password" value="admin" /》
《/properties》

《/persistence-unit》

《/persistence》

要使用jdbctemplate 必须要依赖datasource 如何配置可以解决使得jpaTemplate和jdbcTemplate 共享一个事务处理

文章分享结束,jdbctemplate手动提交事务和Hibernate 与 Spring的JDBCTemplate,效率分别怎样,那个高一些的答案你都知道了吗?欢迎再次光临本站哦!

jdbctemplate手动提交事务(Hibernate 与 Spring的JDBCTemplate,效率分别怎样,那个高一些)

本文编辑:admin

本文相关文章:


discovering(discover是什么意思)

discovering(discover是什么意思)

大家好,如果您还对discovering不太了解,没有关系,今天就由本站为大家分享discovering的知识,包括discover是什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月9日 04:40

sql2000怎么新建查询(sql server 新建查询功能怎么实现)

sql2000怎么新建查询(sql server 新建查询功能怎么实现)

“sql2000怎么新建查询”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看sql2000怎么新建查询(sql server 新建查询功能怎么实现)!

2026年10月5日 14:10

local是什么文件夹(C:\Users\hp\AppData\Local这文件夹是做什么用的)

local是什么文件夹(C:\Users\hp\AppData\Local这文件夹是做什么用的)

大家好,如果您还对local是什么文件夹不太了解,没有关系,今天就由本站为大家分享local是什么文件夹的知识,包括C:\Users\hp\AppData\Local这文件夹是做什么用的的问题都会给大家分析到,还望可以解决大家的问题,下面我

2026年10月3日 21:50

undergraduate怎么读(这3个英语yawn ;undergraduate; teenager ;怎么读的)

undergraduate怎么读(这3个英语yawn ;undergraduate; teenager ;怎么读的)

各位老铁们,大家好,今天由我来为大家分享undergraduate怎么读,以及这3个英语yawn ;undergraduate; teenager ;怎么读的的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支

2026年10月2日 03:30

microsoft silverlight v3(Microsoft Silverlight安装失败)

microsoft silverlight v3(Microsoft Silverlight安装失败)

大家好,如果您还对microsoft silverlight v3不太了解,没有关系,今天就由本站为大家分享microsoft silverlight v3的知识,包括Microsoft Silverlight安装失败的问题都会给大家分析到

2026年9月28日 22:50

win10如何安装activex控件(win10怎么安装Adobe Flash Player Activex 我没收到微软的补丁 结果Flash没法用了)

win10如何安装activex控件(win10怎么安装Adobe Flash Player Activex 我没收到微软的补丁 结果Flash没法用了)

这篇文章给大家聊聊关于win10如何安装activex控件,以及win10怎么安装Adobe Flash Player Activex 我没收到微软的补丁 结果Flash没法用了对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年9月26日 17:40

mousewithoutborders(mouse without borders在win7不能启动)

mousewithoutborders(mouse without borders在win7不能启动)

今天给各位分享mouse without borders在win7不能启动的知识,其中也会对mouse without borders在win7不能启动进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月19日 14:10

bootstrapper已停止工作(打开steam的时候突然蹦出steam client bootstrapper 已停止工作是怎么回事)

bootstrapper已停止工作(打开steam的时候突然蹦出steam client bootstrapper 已停止工作是怎么回事)

大家好,今天小编来为大家解答以下的问题,关于bootstrapper已停止工作,打开steam的时候突然蹦出steam client bootstrapper 已停止工作是怎么回事这个很多人还不知道,现在让我们一起来看看吧!

2026年9月7日 03:20

sql server2008支持什么系统(sql server 2008 都可以安装在什么操作系统中)

sql server2008支持什么系统(sql server 2008 都可以安装在什么操作系统中)

本篇文章给大家谈谈sql server2008支持什么系统,以及sql server 2008 都可以安装在什么操作系统中对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月5日 23:10

assertequals断言的使用(python断言assertequals是什么意思)

assertequals断言的使用(python断言assertequals是什么意思)

大家好,assertequals断言的使用相信很多的网友都不是很明白,包括python断言assertequals是什么意思也是一样,不过没有关系,接下来就来为大家分享关于assertequals断言的使用和python断言asserteq

2026年9月4日 09:30

更多文章:


teammate(teammate,company,partner)

teammate(teammate,company,partner)

各位老铁们,大家好,今天由我来为大家分享teammate,以及teammate,company,partner的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2026年10月11日 06:10

javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)

javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)

其实javascript arraybuffer的问题并不复杂,但是又很多的朋友都不太了解javascript可以把base64编码转换成二进制代码吗求示例代码!,因此呢,今天小编就来为大家分享javascript arraybuffer的

2026年10月11日 04:00

text函数公式(excel中round和text函数的区别是什么)

text函数公式(excel中round和text函数的区别是什么)

“text函数公式”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看text函数公式(excel中round和text函数的区别是什么)!

2026年10月11日 03:50

pascal编程软件(介绍一下pascal语言!)

pascal编程软件(介绍一下pascal语言!)

大家好,如果您还对pascal编程软件不太了解,没有关系,今天就由本站为大家分享pascal编程软件的知识,包括介绍一下pascal语言!的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 02:40

google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)

google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)

本篇文章给大家谈谈google chrome打不开,以及chrome浏览器打不开怎么回事 浏览器打不开的处理方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了

2026年10月11日 02:00

websocket整合springboot(Springboot整合Websocket遇到的坑)

websocket整合springboot(Springboot整合Websocket遇到的坑)

大家好,websocket整合springboot相信很多的网友都不是很明白,包括Springboot整合Websocket遇到的坑也是一样,不过没有关系,接下来就来为大家分享关于websocket整合springboot和Springbo

2026年10月11日 01:40

小米官方首爆miui14(miui14耗电严重官方回应)

小米官方首爆miui14(miui14耗电严重官方回应)

各位老铁们好,相信很多人对小米官方首爆miui14都不是特别的了解,因此呢,今天就来为大家分享下关于小米官方首爆miui14以及miui14耗电严重官方回应的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月11日 00:40

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

本篇文章给大家谈谈drawerlayout,以及android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月10日 19:20

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

大家好,今天小编来为大家解答以下的问题,关于xor四位数怎么运算,单片机怎样用C语言实现4个数字间的异或这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 17:50

perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)

perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)

其实perl数组中最多的元素的问题并不复杂,但是又很多的朋友都不太了解用perl实现,得到一个数组中重复次数最多的元素,因此呢,今天小编就来为大家分享perl数组中最多的元素的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧

2026年10月10日 17:00

最近更新

ideapad15alc7能玩什么游戏(联想ideapad15可以玩刺客信条启示录吗)
2026-10-11 08:10:05 浏览:0
me是国内域名吗(me域名的概况)
2026-10-11 07:50:35 浏览:0
vivoiqoo9发布会(vivoiqoo9pro什么时候上市)
2026-10-11 07:20:22 浏览:0
热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:5
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表