参考地址:http://blog.youkuaiyun.com/cmtobby/article/details/1750632
保存:
session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(jc);
①执行save()方法,不执行session.flush()方法,或者commit()方法:只有选取出主键Id字段
Hibernate: select hibernate_sequence.nextval from dual
</pre><span style="color:#ff0000">②</span>执行save(),并且<span style="color:#ff0000">执行flush()方法</span>:向缓存提交插入语句<p></p><p></p><pre name="code" class="java">session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(jc);
session.flush();
所以有提交,不执行
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into SXBBKF.J_CARS (NAME, TIME, ID) values (?, ?, ?)
③执行save()方法并 commit()
session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(jc);
session.getTransaction().commit();
提交了插入sql语句,并执行了更新
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into SXBBKF.J_CARS (NAME, TIME, ID) values (?, ?, ?)
附:关于beginSession问题
一、在save()方法中:
session=HibernateSessionFactory.getSession();
session.beginTransaction();
session.save(jc);
session.getTransaction().commit();开启事务,并进行事务提交
二、在delete()方法中:
session=HibernateSessionFactory.getSession();
//session.beginTransaction();
JCars jc=(JCars)session.get(JCars.class, new Integer("104")); //get、load之后,就编程了持久化状态
session.delete(jc);
session.getTransaction().commit();不beginSeesion,仅通过Get方法来加载
<span style="color:#ff0000;">Transaction not successfully started</span>并无法正常提交,会报错
开始transaction后,执行删除操作成功!
三、在modify()方法中:
session=HibernateSessionFactory.getSession();
JCars jc=(JCars)session.get(JCars.class, new Integer("111"));
jc.setName("byd2");
session.getTransaction().commit();同样出错:
<span style="color:#ff0000;">Transaction not successfully started</span>
同样需要begginSession()
开启后,成功修改
本文详细介绍了使用Hibernate框架保存数据的不同方式及其对数据库的影响。包括仅调用save方法、save后执行flush方法以及save后commit的全过程。同时,探讨了在不同操作(如save、delete、modify)中如何正确管理事务。
1万+

被折叠的 条评论
为什么被折叠?



