Hibernate持久化对象

持久化类应遵循的规则:
  •     有无参构造器,构造器的修饰符>=默认访问控制符
  •     有标识属性,映射数据库表的主键,建议使用基本类型的包装类
  •     每个成员有setter和getter
  •     非final修饰的类
  •     重写equals()和hashCode()方法(当需要把持久化类的属性放进Set中时)
 
持久化类的状态:
 
  来自《轻量级JavaEE 企业应用实战》李刚著
 
改变持久化对象状态的方法:
 
持久化实体:
    Serializable  save(Object obj)   保存到数据库
    void  persist(Object obj)
    Serializable save(Object obj,Object pk) 保存到数据库,指定主键值
    void persist(Object obj,Object pk)
save()和persist()方法的 区别:使用sava()方法时,会立即将持久化对象插入数据库,返回该持久化对象的标识属性值。
                                              使用persist()方法时,不会立即插入数据库,没有返回值。
 
根据主键加载持久化实体:
    News n = sess. load(News.class , pk);
     根据主键加载一条记录,如果数据库中没有对应记录时可能会抛出 HibernateException异常,如果指定了延迟加载,则load方法会返回一个未初始化的代理对象,这个代理对象会直到程序调用它的某方法时才访问数据库。
    与get()方法的 区别:get()方法会立刻访问数据库(没有延迟加载),没有对应记录时返回null,而不是代理对象。、
 
更新持久化实体:
     n. setTitle("新标题");
      修改对象最简单的方法就是在Session处于打开状态时load它,然后直接修改即可,不需要调用update()方法。
 
更新托管实体:
     update()
     updateOrSave()判断对象是否持久化过,如果有,执行update()操作,否则,执行save()操作。
     merge()不持久化给定的对象,而是返回对象的副本,该副本处于持久化状态。如果Session中存在相同持久化标识的持久化对象,merge()方法里提供的对象状态覆盖原来的实例状态。如果没有,尝试从数据库中加载,或者创建新的持久化实例,最后返回该吃菊花实例对象。
                 
删除持久化实体:
    News n = sess.load(News.class , pk);
    sess. delete(n);
 

转载于:https://www.cnblogs.com/goingforward/p/5817301.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值