hibernate应该何时调用transaction的commit方法将数据与数据库同步

hibernate中,调用session的save、delete、update方法后只是缓存到session里,应该什么时候使用transection的commit方法与数据库数据同步?如果每次调用sava、delete等方法提交一次,好像违背了hibernate的初衷,性能不好。但在网站开发时,添加一个用户信息、更新、或删除时,这些操作是要及时与数据库同步的。我的问题就是应在什么时候把数据提交到数据库。

4个回答

这就得根据你的业务需求来确定事务的边界,例如添加用户信息,添加完成以后就得commit,而不是继续操作等着更新或者其他操作以后才commit,
这和性能无关,得和你的业务逻辑来确定事务的边界

如果你没有集成spring,则需要自己确定事务,事务完成之后手动提交。如果你集成了spring,配置事务后,每次事务会自己提交,即不用手动commit,而且当抛出RuntimeException的时候事务会自己回滚。

session.flush();
trans.commit();
就可以发出sql,将数据插入到数据库

数据库操作是放在事务内进行.
先开启事务-->对数据进行删除,增加等操作。执行到这步数据是放在缓存里,数据未提交到数据库-->事务提交。这步执行后数据同步到数据库。如果出现异常应进行事务回滚。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Could not commit Hibernate transaction
[img=https://img-bbs.csdn.net/upload/201311/20/1384947185_798963.jpg][/img][img=https://img-bbs.csdn.net/upload/201311/20/1384947195_226918.png][/img][img=https://img-bbs.csdn.net/upload/201311/20/1384947296_520329.png][/img]大家看,这是啥错。struts2+Spring+hibernate+Mysql+linux+tomcat的组合。辛苦各位啦
关于transaction的autocommit及数据库的COMMIT
我在程序中UPDATE()后没有显式的COMMIT,而且TRANSACTION的autocommit属性也是false,但在退出后也保存好了。有些意思。rn而且在SQLADV(SYBASE)中如果执行了一条语句如何ROLLBACK?rn希望大家讨论,大侠详细指点!!先谢过!
ssh框架 Could not commit Hibernate transaction问题
我的tomcat服务器开了不到一天 就报如下错误rnorg.apache.jasper.JasperException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC commit failedrn org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:476)rn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:803)rn org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)rn org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)rn org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)rn org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)rnrn重启一下tomcat就好了,在网上查了半天,说是mysql自动关闭问题,可是我的mysql并没关闭,而且我把mysql的wait_timeout设为88888888了,可是tomcat运行了不到一天又报上面的错了,又得重启一下tomcat才行,请教各位高手们是不是我的ssh整合中存在某种缺陷?请大家帮忙解决呀
求教,关于hibernate中Transaction的commit问题
public static final ThreadLocal tLocalsess = new ThreadLocal();rnpublic static final ThreadLocal tLocaltx = new ThreadLocal();rnrn[code=Java]rnpublic static void commitTransaction() rn Transaction tx = (Transaction) tLocaltx.get();rn System.out.println(tx.toString());rn try rn if (tx != null && !tx.wasCommitted() && !tx.wasRolledBack())rn tx.commit();rn tLocaltx.set(null);rn System.out.println("commit tx");rn catch (HibernateException e) rn e.printStackTrace();rn //这里报错 org.hibernate.SessionException: Session is closedrn rn rn[/code]rnrn执行到tx.commit();的时候会报错org.hibernate.SessionException: Session is closedrn这个问题大概会是出在什么地方?
transaction的commit方法到底是如何提交的?!
[code=java]public void save(Object obj) throws HibernateException rn Session session = HibernateUtil.currentSession();rn if (obj != null) rn Transaction tx = null;rn try rn tx = session.beginTransaction();rn session.save(obj);rn tx.commit();rn catch (HibernateException e) rn if (tx != null)rn tx.rollback();rn throw e;rn rn rn session.close();rn [/code]rn我看半天没看懂,就用beginTransaction创建一个tx对象就能提交了?提交的内容是什么呢?难道调用session的save方法就行了???[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/35.gif][/img]
commit transaction 请求没有对应的 BEGIN TRANSACTION
if sqlca.sqlcode<0 thenrn messagebox("错误","系统更新失败"+SQLCA.SQLERRTEXT)rn ROLLBACK USING SQLCA;rn returnrn elsern if dw_2.rowcount( )>0 thenrn COMMIT USING SQLCA;rn messagebox("提示","出仓操作成功"+SQLCA.SQLERRTEXT)rn end if rn end if rnrn有时会提示 出仓操作成功 commit transaction 请求没有对应的 BEGIN TRANSACTIONrn
commit transaction 请求没有对应的begin transaction
rn具体语句如下:(autocommit=false)rnSELECT pdistr_id INTO :ls_pdis_pid FROM d_purchasedistributecontent WHERE pdis_pid = :ls_pur_id;rnif sqlca.sqlcode <>100 thenrn DELETE FROM d_purchasedistribute WHERE pdistr_id = :ls_pdis_pid;rn COMMIT using sqlca;rn DELETE FROM d_purchasedistributecontent WHERE pdistr_id = :ls_pdis_pid;rn COMMIT using sqlca;rn CHOOSE CASE ll_stylern CASE 0rn UPDATE dbo.d_purchaseorder SET emp_id = null WHERE pur_id =:ls_pur_id;rn CASE 1rn UPDATE dbo.d_agreement SET emp_id = null WHERE agree_id =:ls_pur_id;rn CASE 2rn UPDATE dbo.d_project SET emp_id = null WHERE pro_id =:ls_pur_id;rn CASE 3rn UPDATE dbo.d_projectbatch SET emp_id = null WHERE bat_id =:ls_pur_id;rn END CHOOSErn COMMIT using sqlca;rnend ifrnrn如果是因为autocommit为false的情况下insert、update、delete不自动开始一个事务的话又该如何设置呢?rn如果是自动的话,那又是怎么回事?如何解决呢?rn谢谢!
transaction begin,commit, rollback的问题
有两个类A和B,B是已经实现好的,现在的逻辑是这样的rn[code=Java]rnA.method1()rn beginTransaction();rn tryrn //businessrn B.business();rn commitTransaction();rn catch(Exception e)rn rollback();rn rnrn[/code]rn结果发现B.business()里面也有类似的逻辑(beginTransaction,commitTransaction)rn这样上面的代码就有错误,因为逻辑上就变为rnbeginrn beginrn commitrncommitrnrn把代码改为rn[code=Java]rnA.method1()rn beginTransaction();rn tryrn //businessrn commitTransaction();rnrn B.business();//放到commit下面rn catch(Exception e)rn rollback();rn rnrn[/code]rn编译上是没有问题,但是在catch里面,rollback的时候是rollback了哪个transaction呢?能保证出错后A和B所作的操作都rollback吗?
如何保证transaction commit的完整性
欢迎和我探讨数据库技术,可以给我发信:tieyingz@cs.cmu.edu 当commit涉及到多行的时候,并且提供的是行锁,那么就涉及到如何保证多行commit的完整性,不至于1行提交了,另外一行没有提交,那么concurrent txn会读到不同的结果。 如何解决上述问题?需要一个全局锁,至于这个锁如何实现,不同数据库不同方法。感兴趣的同学可以参考一下oracle的实
EJB Transaction没有自动commit
使用EJB的时候遇到一个问题,因为系统比较老 用得的都是xml配置的 rn有两张表:A,Brn是原本的想法是A中的a字段update后,B表中的b字段根据A中更新a字段的数据做updatern但是执行此方法 2个update好像是同时发出,所以B中的字段没有upadte 只有A的会变化rn rn代码大致如下:rnpublic class Implrn void update(xx)rn DetailDao.updateA(xx);rn DetailDao.updateB(xx);rn rnrnrnpublic class DetailDao rn static void updateA(xx)rn CommonDao.update(xx);rn rn static void updateB(xx)rn CommonDao.update(xx);rn rnrnrnpublic class CommonDaorn //实际的sqlrn .....rnrnrnejb-jar.xml配置如下rn rn Implrn Implrn com.xx.ImplHomern com.xx.ImplRemotern com.xx.Implrn Statelessrn Containerrn rn请大家帮帮忙rn谢谢~
关于版本控制何时commit的问题
应该是版本控制最基本的问题rn可也不知道确切的答案,所以想问问各位高手rnrn进行开发的时候大家都是怎么个过程?rn我们同事间有两种观点:rn我是说在本地进行开发,开发一部分就commit一部分,在服务器上运行进行测试。rn其他同事是说架设本地服务器,在本地进行开发完成,进行测试以后再把代码都上传到服务器上。rnrn大家是怎么做的?应该怎么做涅?
Hibernate——flush()方法强制同步数据库
@Test public void testFlush() { Session session = sf.getCurrentSession(); session.beginTransaction(); Student s = (Student)session.load(Student.class, 2); s.setName("ss"); s.setName("sss
调用CALL TRANSACTION的三种方法
1.使用屏幕传入               REFRESH BDCDATA.               CLEAR   BDCDATA.               BDCDATA-PROGRAM = 'SAPLCSDI'.      "Programm St點kliste               BDCDATA-DYNPRO   = '0100'.          "Dynpr
hibernate同步数据库的问题
书上说hibernate会在某些查询执行前同步数据库数据,但是我试了试,无论怎样查询,只要不commit,数据库都不会发生改变。rnrn到底会不会同步?最好能给个例子说明下。
onNewIntent方法何时被调用?
今天星期六,在家撸代码的好日子,特意写了个demo apk验证下 onNewIntent方法到底何时被调用。 情况一: // 启动自己 public void startSelf(View view) { Intent intent = new Intent(this, MainActivity.class); intent.setFlags(...
同步数据,数据库同步,sql数据库同步
同步当前数据库和服务器数据库的数据,使得两个数据库的数据一致,这个属于sql的高级应用,相信对你们都很有用处,也可以对你们的数据库能用有所提示,是一篇比较好的资料,由于该资料是本人开发的,所以希望尊重本人的成果,不要乱传。
将数据批量导入数据库的方法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:VS2015 作者:张海锋 撰写时间:2019/6/6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在做项目过程中,我们会遇到批量将表格数据导入到数据库的操作,那么我们该如何...
hibernate中ehcache何时会被调用
1 当用户查询的时候,hibernate会先到ehcache中去找是否存在,如果存在就会去调用echache 2 当用户执行增、删、改的时候,hibernate会执行dao操作,然后通知ehcache写入缓存中。
commit transaction 请求没有对应的begin transaction 是怎么回事?
if dw_5.update() <> 1 thenrn rollback using sqlca;rn rollback using dbtrans;rn return -1rn end ifrn if dw_6.update() <> 1 thenrn rollback using sqlca;rn rollback using dbtrans;rn return -1rn elsern commit using dbtrans;rn if dbtrans.sqlcode <> 0 thenrn rollback using dbtrans;rn return -1rn elsern commit using sqlca;rn end if
Ajax何时需要同步?
Ajax何时需要同步?
commit transaction 请求没有对应的begain transaction?大虾帮忙!
我在保存记录时不知道怎么出现这个提示保存失败!这是怎么回事请大虾们帮忙!小北不盛感激!以前没有出现可以保存的!我保存的是用rowscopy的记录!顺便问下大家用rowscopy是不是不能copy图片(数据库存储的)!先谢谢大家啦!
fragment切换时,transaction调用commit()出现卡死ANR
问题 最近遇到个问题,当多个fragment被添加到activity中后,如果在当前fragment中停留过久的话,再去操作fragment之间的切换,可能会造成ANR(PS.这个应用是运行在一种配置很低的设备上)。 思索 当时就想,是不是由于Android系统在资源吃紧的情况下,会自动回收后台的进程,但是,只有一个activity+多个fragment,对所有的生命周期进行了日志观察,并未...
存储过程 [SQL Server]COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION
求大神解答,万分感谢rn我执行这个存储过程 每次都会提示 rnrnServerD.exe 中的 0x7c80bee7 处最可能的异常: Microsoft C++ 异常: 内存位置 0x264dda98 处的 CRCException。rnServerD.exe 中的 0x7c80bee7 处最可能的异常: Microsoft C++ 异常: 内存位置 0x00000000 处的 [rethrow]。rn***[ c:\d\serverdaima\neo\server\user2.cpp, 27051 ] 25000, 3902, [Microsoft][ODBC SQL Server Driver][SQL Server]COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。, 100 ***rnrn存储过程如下rn[code=sql]rnrnCREATE PROCEDURE WRITE_USERBANK_LOGrn @strAccount varchar(100),rn @strUserID varchar(30),rn @strMode varchar(1000),rn @strWPName varchar(100),rn @strLog varchar(1000)rnASrnrn INSERT INTO LOG_USERBANK(str_Account,str_Name,str_LogMode,str_wpName,str_Log) rn VALUES (@strAccount,@strUserID,@strMode,@strWPName,@strLog)rn rn IF (@@ERROR <> 0)rn BEGIN rn ROLLBACK TRAN rn RETURN 255rn ENDrn ELSErn BEGINrn COMMIT TRANrn RETURN 0 rn ENDrnGOrnrnrn[/code]
C++何时调用构造函数,何时调用析构函数
前言:   最近自考C++刷题的时候快被构造函数和析构函数搞得疯掉了,现在特意写一篇博客来记录自己的收获!   在我们创建新的对象的时候,都要执行某一个类中的构造函数,而当构造函数中分配了资源之后,当我们销毁一个对象的时候需要一个相应的操作将这些资源释放出去,这就需要析构函数。 一般来说,在有基类和派生类存在时,在创建派生类类型时,会先构造基类,再构造派生类,析构顺序反之,类似于进栈出栈的...
关于hibernate中Transaction
测试能否通过hibernate插入数据时,下面代码可以插入rn[code]rn public static void main(String[] args)rn Session session = HibernateSessionFactory.getSession();rn Transaction tx = null;rn try rn tx = session.beginTransaction();rn account a = new account("admin","123");rn session.save(a);rn tx.commit();rn catch (Exception ex) rn tx.rollback();rn ex.printStackTrace();rn finally rn session.close();rn rn rn[/code]rn但如果注释了Transaction部分为什么就插入不了了呢?rn[code]rn public static void main(String[] args)rn Session session = HibernateSessionFactory.getSession();rn //Transaction tx = null;rn try rn // tx = session.beginTransaction();rn account a = new account("admin","123");rn session.save(a);rn // tx.commit();rn catch (Exception ex) rn // tx.rollback();rn ex.printStackTrace();rn finally rn session.close();rn rn rn[/code]rnTransaction不就是控制事务的类么?也不是必须的呀,为什么去掉就不行呢?
asp.net调用两台同步数据库数据问题
有两台数据库服务器rn1为发布rn2为订阅rnrn现在如何用asp.net程序调用呢?rn
hibernate 的transaction和 session问题
用的SSH框架,事务切到service层, 在service取出一个用户列表,在action中循环此列表修改每个用户的角色id属性为角色名称后 , 数据库就变了呀 !! rnrn在网上搜索了好久 说session关闭的时候会吧持久对象更新到数据库中,rnrn但是自己做了一个例子rnrn[code=java]rnrnTransaction tx = session.beginTransaction();rn Query query = session.createQuery("from Test01");rn query.setFirstResult(begin);rn query.setMaxResults(count);rn List l = (List)query.list();rn for(Test01 u : l)rn u.setPwd("1");rn rn rn tx.commit();rn for(Test01 u : l)rn System.out.println(u);rn u.setPwd("22222");rn session.update(u);rn rn session.flush();rn session.close();rn[/code]rnrn修改后数据库中 pwd却是"1" 不是"22222" 为什么? rnrnrn
数据库技术八(事务start transaction、rollback、commit)
一、事务的基本介绍 1.概念:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。 2.操作:             1. 开启事务: start transaction;             2. 回滚:rollback;             3. 提交:commit; 3.例子: CREATE TABLE account ( id ...
关于hibernate的commit和rollback
本人不是很明白为什么rnrnSession hbmSession = HibernateSessionFactory.currentSession();rn Transaction tx = hbmSession.beginTransaction();rn rn Company company = (Company)hbmSession.get(Company.class , id);rn company.setName(name);rn company.setAddress(address);rn hbmSession.save(company);rn tx.commit();rn要执行tx.commit();具体作用是什么?rn另外,rollback又有何用?rn望各位大侠详细解释下,多谢了!rn
Hibernate JtaTransactionManager 不会commit
我有一个工程是连接多个数据库的,在"sessionfactory.xml"中配置如下rnrnrnrnrnrn rn rn MessageResourcesrn rn rn rn rn rn rn rn rnrn rn rn rn rn rn zzch\obj\content.hbm.xmlrn rn rn rn rn rn org.hibernate.dialect.OracleDialectrn rn threadrn falsern truern true/ehcache.xmlrn org.hibernate.cache.EhCacheProviderrn DBPoolrn rn proxool.xmlrn rn 25rn rn rn rn rn rn rn rn rn rn rn rn rn zzch\obj\content.hbm.xmlrn rn rn rn rn rn rn org.hibernate.dialect.SQLServerDialectrn rn threadrn falsern truern truern /ehcache.xmlrn org.hibernate.cache.EhCacheProviderrn DBPool2rn rn proxool2.xmlrn rn 25rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rnrn rn PROPAGATION_REQUIRED,readOnlyrn PROPAGATION_REQUIREDrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rnrn rn rn rn rn rn rn rn rn rn rnrnrnrn通过上面的配置,我可以查看多个数据库的内容,但是在执行update和INSERT时,却无法提交到数据库中,程序没有报错,语句也执行了,就是没写进数据库.不知道是为什么?请高手指点.
hibernate session.flush 和 commit 问题
那位大虾能告诉小弟hibernate2 中session.flush 和 commit的区别?rn在什么情况下使用session.flush rn
hibernate commit 问题 急!
我用的SQL2000,补丁是sp4。rn程序目的是测试hibernate,但遇到了错误,请帮助!!!rntest.java 是测试类。rnpackage org.tong.hibernateDemo1;rnimport org.apache.commons.logging.Log;rnimport org.apache.commons.logging.LogFactory;rnimport org.hibernate.*;rnimport org.hibernate.cfg.Configuration;rnpublic class test rn private static Log log = LogFactory.getLog(test.class); rn public void find() rn SessionFactory sessionFactory;rn try rn sessionFactory = new Configuration().configure()rn .buildSessionFactory();rnrn Session session = sessionFactory.openSession();rn catch (HibernateException e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn rnrn rnrn public void insert() rnrn SessionFactory sessionFactory;rn try rn sessionFactory = new Configuration().configure()rn .buildSessionFactory();rnrn Person p = new Person();rn p.setId("11111111");rn p.setName("mmm");rn p.setPassword("23");rnrn Session session = sessionFactory.openSession();rn Transaction tx = session.beginTransaction();rn session.save(p);rn tx.commit();rn session.close();rn sessionFactory.close();rnrn System.out.println("插入数据OK!请在MySQL查看结果!");rn catch (HibernateException e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn rn rnrn public static void main(String[] args) throws HibernateException rnrn new test().find();rn new test().insert();rnrn rnrnrnhibernate.cfg.xml 的内容是:rnrnrnrnrnrnrn rn sarn jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hibernate_test;SelectMethod=Cursorrn org.hibernate.dialect.SQLServerDialectrn personrn sarn com.microsoft.jdbc.sqlserver.SQLServerDriverrn rn rnrnrnrnPerson.hbm.xml 的内容是:rnrnrnrnrnrnrnrnrn rn rn rn rn rn rn rn rn rn rn rnrnrnrnrn错误提示是:rnException in thread "main" java.lang.NoClassDefFoundError: com/microsoft/util/UtilUCS2InputStreamToCharacterReaderrn at com.microsoft.jdbc.base.BasePreparedStatement.setObjectInternal(Unknown Source)rn at com.microsoft.jdbc.base.BasePreparedStatement.setString(Unknown Source)rn at org.hibernate.type.StringType.set(StringType.java:24)rn at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:62)rn at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:39)rn at org.hibernate.persister.entity.BasicEntityPersister.dehydrate(BasicEntityPersister.java:1617)rn at org.hibernate.persister.entity.BasicEntityPersister.dehydrate(BasicEntityPersister.java:1594)rn at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1850)rn at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:2200)rn at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:46)rn at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)rn at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)rn at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)rn at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)rn at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)rn at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)rn at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)rn at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)rn at org.tong.hibernateDemo1.test.insert(test.java:45)rn at org.tong.hibernateDemo1.test.main(test.java:59)rnrntest.java:45 是 tx.commit();rntest.java:59 是 insert() 方法;rn请帮助,如何改正错误!rnrn
Hibernate commit() 和flush() 的区别
Hibernate commit() 和flush() 的区别rn孙卫琴<>p177 说,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;commit()方法会先调用flush()方法,然后提交事务.提交事务意味着对数据库所做的更新会永久保持下来rnp148 所谓清理,是指Hibernate 按照持久化象的状态来同步更新数据库rnrn既然flush()已经同步更新数据库了,那也就意味着永久保存下来了,不解
javaWeb项目 Hibernate 调用数据库存储过程的方法
Dao层调用存储过程分两种情况,有输出参数 和没有输出参数。处理没有输出参数时public void dataBackup(final String filePath,final String fileName) throws DAOException { Session session = sessionFactory.getCurrentSession(); session.doWor...
hibernate查询的数据与数据库中的数据部同步问题
在数据库中增加ID相同的一条数据后,数据库里可以看出已经增加成功,但我用hibernate以下两种方法查询相同ID的数据时,得到的还是之前查询的数据,新增加的时间没有被找出来,第二种我ssion.flush();还是没有新增的数据,这是为什么?怎么解决呢?rn谢谢哪位能指点一下我,谢了。rnpublic ResultInfo findCategoryBlockByBlockId(rn Integer blockId,PageInfo pageInfo) rn StringBuffer hql = new StringBuffer();rn hql.append("from BlkCategoryBlock b where b.blkBlock.blockId=");rn hql.append(blockId);rn hql.append(" order by b.id desc");rn return find(hql.toString(), pageInfo);rn rn rnpublic List findCategoryBlockByBlockId(Integer blockId) rn StringBuffer hql = new StringBuffer();rn Session session=this.getHibernateTemplate().getSessionFactory().getCurrentSession();rn Query query=session.createQuery("from BlkCategoryBlock b where b.blkBlock.blockId=? order by b.id desc");rn query.setParameter(0,blockId);rn List list=query.list();rn session.flush();rn return list;rn
hibernate数据库和内存同步的问题
我们的项目在测试阶段,出现了很多界面上有,数据库里没有的现象。我们甚至在session查询记录集前就用session.clear()但还是没有解决。俺是hibernate水手,希望大家多帮忙。有什么方法提供一下。
hibernate could not commit
HIBERNATE在运行一段时间后出现could not commit的异常,有时候还会有could not query的异常一起出现。请问有可能是什么问题?
mysql transaction的commit到底怎么用?
创建表的代码:[code=sql]CREATE TABLE `students` (rn `uid` INT(10) NOT NULL AUTO_INCREMENT,rn `studentname` VARCHAR(64) NULL DEFAULT NULL,rn `grade` INT(10) NULL DEFAULT 1,rn PRIMARY KEY (`uid`)rn)[/code]rnrn定义的存储过程:[code=sql]DELIMITER //rnCREATE PROCEDURE addstudent()rnBEGINrn START TRANSACTION;rn INSERT INTO students(studentname) VALUES("xiao ming");rn INSERT INTO students(uid, studentname) VALUES(100, "xiao jun");rn SELECT * FROM students;rn COMMIT;rnEND//rnDELIMITER ; [/code]rnrn第一次执行命令 [code=sql]CALL addstudent();[/code]students表中将插入了两行,再次执行[code=sql]CALL addstudent();[/code]此时MySQL提示“xiao jun”的行插入失败,但是执行:[code=sql]SELECT * FROM students;[/code]后发现表中又插入新的一行 “xiao ming”。第三次调用[code=sql]CALL addstudent();rnSELECT * FROM students;[/code]会发现此时存在三行“xiao ming”,如果此时退出数据库,再重新登录进去,执行[code=sql]SELECT * FROM students;[/code]发现只有两行“xiao ming”。怎么回事啊?
hibernate链接数据库 Could not open Hibernate Session for transaction;
hibernate和spring集成,之前用的Mysql数据库正常,换连oracle数据库就不会了,照猫画虎但是一直连接不上rnrnException in thread "main" org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.UnsupportedOperationException: The user must supply a JDBC connectionrn at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596)rn at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)rn at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:354)rn at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:103)rn at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)rn at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)rn at $Proxy10.save(Unknown Source)rn at com.app.APP.main(APP.java:20)rnCaused by: java.lang.UnsupportedOperationException: The user must supply a JDBC connectionrn at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)rn at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)rn at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)rn at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)rn at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)rn at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)rn at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)rn ... 7 morernrnrnrn[color=#FF0000][b]sping配置[/b][/color]rnrnrn rn rn rn rn rnrn rnrn rn rn rn rn rn rn rn rnrn[b]rn[b]rnhibernate配置[/b]rn[/b][color=#FF0000][/color]rnrnrnrnrnrn rn rn org.hibernate.dialect.Oracle9Dialectrn rn rnrn rnrn
Hibernate 调用本地多个数据库数据
Hibernate配置数据源,然后被sessionFactory调用,很简单呢的问题。但是,无意中发现了一个问题。配置好数据源以后,调用本地下的其他数据库(非配置好的数据源关联的数据库),居然能查询得到数据。那么应该也能进行增加修改删除操作。那么问题来了,配置了一个数据源,但是,连接到了数据源以外的数据库,这个是什么原因?暂且不知道,以后知道了再补充上来吧。 因为以上原因的存在,可以访问多个数据
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数