zoukankan      html  css  js  c++  java
  • 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);
     
  • 相关阅读:
    windows基线检测脚本编写指南-powershell版
    2020蓝帽杯CTF Web 题
    2020天翼杯CTF Web 题
    Firefox 密码脱取
    利用iptables做端口转发
    Flask 快速学习笔记
    JSP无%%号命令执行一句话
    linux 后渗透凭据收集
    Fastjson漏洞利用
    Gogs远程命令执行利用
  • 原文地址:https://www.cnblogs.com/goingforward/p/5817301.html
Copyright © 2011-2022 走看看