黑马程序员技术交流社区
标题:
hibernate中的session.save方法的问题。
[打印本页]
作者:
赵太云
时间:
2013-6-13 09:35
标题:
hibernate中的session.save方法的问题。
不是说,session.save方法不会把数据保存到二级缓存。。。。
@Test
public void testSave(){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Classes classes = new Classes();
classes.setCname("新一个班级又开始了");
classes.setDescription("坑爹的班级,我操。。。");
session.save(classes);
transaction.commit();
session.close();
Session session2 = sessionFactory.openSession();
//下面没有发出sql语句,说明,save也把classes对象存入到了二缓存中。
Classes classes2 = (Classes) session2.get(Classes.class, classes.getCid());
System.out.println(classes2.getCid()); //输出。session2.close();
}
作者:
Spole_168
时间:
2013-6-13 13:04
本帖最后由 Spole_168 于 2013-6-13 13:06 编辑
Session的save()方法完成以下的操作:
(1)把对象加入到缓存中,使它变为持久化对象。
(2)选用映射文件指定的标识符生成器为持久化对象分配惟一的OID
(3)计划执行一个insert语句,把对象当前的属性值组装到insert语句中:
insert into obj(ID, NAME, ......) values(1, 'Tom', ......);
值得注意的是,save()方法并不立即执行SQL insert语句。只有当Session清理缓存时,才会执行SQL insert语句。如果在save()方法之后,又修改了持久化对象的属性,这会使得Session在清理缓存时,额外执行SQL update语句。以下两段代码尽管都能完成相同的功能,但是左边代码仅执行一条SQL insert语句,而右边代码执行一条SQL insert和一条SQL update语句。左边代码减少了操作数据库的次数,具有更好的运行性能
作者:
赵太云
时间:
2013-6-13 14:30
Spole_168 发表于 2013-6-13 13:04
Session的save()方法完成以下的操作:
(1)把对象加入到缓存中,使它变为持久化对象。
(2)选用 ...
还是不懂。。。。。。。。。。。。。但是谢谢。。。。
作者:
袁梦希
时间:
2013-6-14 18:15
楼主尽量问一些java基础性的题目,这样方便在这个培训专区回答。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2