Session 方法

Session:
 save:
  有两个save方法,save(Object) save(Object, ID),后者可以动态的指定对象的id属性。如果动态
  指定id属性时,该类的id生成策略是依赖本地数据库的话就会抛出异常。
  
 update:
  该方法将一个游离态的对象转变为持久态的,如果Session的缓存中存在与参数对象具有相同的id
  时,该方法会抛出异常。
  
  当我们调用update方法时,就会生成一条 update 的SQL语句,如果该对象的状态并没有发生改变
  这样就会生成不必要的访问数据库。在映射文件的 Class 元素中加入 select-before-update=true
  <class="" table="" select-before-update="true">
  该属性默认为 false,当配置该属性为 true 时,Hibernate在update对象前就会生成一条select
  语句来查询该对象,然后比较该对象的状态是否发生改变的情况来判断是否要生成 update 语句。
  当然对同一个对象的多次 update 操作,不会生成多条 update 语句,只有在Session清理缓存的
  时候才会根据对象状态的改变而生成 一条 SQL语句。
  应根据实际的应用情况来使用该属性,如果Java对象的属性状态不会经常发生改变,使用该数据
  可以减少不必要的 update ,这样会响应提高程序的性能,如果经常改变对象的状态还是不使用
  该属性的好。
  
 saveOrUpdate:
  该方法会根据对象的状态来对其进行不同的操作,如果方法传入的是一个临时态对象,就save。
  如果是一个游离态对象就update,如果是一个持久化对象就返回。那么,如果一个对象满足以下
  任何一个条件,那么这个对象就是一个临时态的对象。
  
  (1):Java对象的 oid 为 null
  (2):对象具有 version 属性并取值为 null
  (3):映射文件中为 <id> 元素设置了 unsaved-value 属性,并且该id与配置的属性值匹配。
    <id name="" column="" unsaved-value=0>
     <generator class="increment"></generator>
    </id>
  (4):映射文件中为 version 属性配置了 unsaved-value ,并且该属性值与配置的值相匹配。
  (5):自定义了Hibernate 中 Interceptor 的实现类,并且该 interceptor 类的isUnsaved()
    方法返回值为 true。
  
 get load :
  这两个方法都能从数据库中查询一条记录,并返回一个持久化的对象。区别在与,如果数据库中
  没有一条记录与要查询的对象 id 对应,load 方法会抛出 ObjectNotFoundException 异常,而
  get 方法会返回 null。
 
 delete:
  该方法是删除一个与对象对应的数据库记录,如果传人是 持久化对象 就会在清理缓存时执行delete
  语句,在Session.close时从缓存中删除该对象。如果传入的是 游离态 对象,Session会先关联该
  对象,使其转换为 持久态 对象,然后执行一个delete语句。
  
  delete ("from table where id > 5"); 方法重载,删除多条记录。

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值