java session save_Java实战之02Hibernate-03Session中的常用方法

/** update方法

* 把一个脱管态的对象转成持久态*/

/** 问题3:

* 当我们持久化一个脱管态的对象时,如果该对象被别的程序删除了,则会报错*/@Testpublic voidtest5(){

Session s2=HibernateUtil.getSession();

Transaction tx2=s2.beginTransaction();

Student student2= s2.get(Student.class, 1);//持久态

student2.setGender("female");

s2.update(student2);//把脱管态对象转成持久态

tx2.commit();

s2.close();

}/** 问题2:

* 当我们持久化一个脱管态对象时,如果在session的一级缓存之中,已经包含了有相同OID的对象,则会报错。

* 解决办法:

* 使用使用merge方法*/@Testpublic voidtest4(){

Session s1=HibernateUtil.getSession();

Transaction tx1=s1.beginTransaction();

Student studnet1= s1.get(Student.class,1);//持久态

tx1.commit();

s1.close();

System.out.println(studnet1);//脱管态:有OID,和Session没有关系

Session s2=HibernateUtil.getSession();

Transaction tx2=s2.beginTransaction();

Student student2= s2.get(Student.class, 1);//持久态

s2.update(studnet1);//把脱管态对象转成持久态

tx2.commit();

s2.close();

}/** 问题1:

* 当我们使用update持久一个脱管态对象时,就算没有修改实体对象的数据,也会执行update语句。

* 解决办法:

* select-before-update

* 配置位置:映射文件的class元素上

*

* 取值:

* true:在更新之前,执行查询

* false:在更新之前不执行查询。默认值*/@Testpublic voidtest3(){

Session s1=HibernateUtil.getSession();

Transaction tx1=s1.beginTransaction();

Student s= s1.get(Student.class,1);//持久态

tx1.commit();

s1.close();

System.out.println(s);//脱管态:有OID,和Session没有关系

Session s2=HibernateUtil.getSession();

Transaction tx2=s2.beginTransaction();

s2.update(s);//持久态

tx2.commit();

s2.close();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值