文章目录
  1. 1. hibernate应用
    1. 1.0.1. 如何创建session?
    2. 1.0.2. 什么是session?
    3. 1.0.3. po对象的三个状态(po对象的生命周期)
    4. 1.0.4. 常用的方法:
    5. 1.0.5. get与load的区别?
    6. 1.0.6. 主键的设计事项

hibernate应用

如何创建session?

  1. Configguration:配置文件
  2. SessionFactory:session工厂
  3. Session:核心接口

    什么是session?

  • Java运行程序与hibernate之间的会话。主要功能是对经过映射的实体类提供创建,读取,删除操作;同时session也是一个容器,它可以临时保存着po对象的引用。
  • 也就是说session可以缓存数据库的数据。可以减少对数据库的操作次数。

    po对象的三个状态(po对象的生命周期)

  1. 瞬时态:从来没有持久化,也没有纳入到session的管理。
  2. 持久态:纳入到了session的管理。
  3. 游离态:曾经是持久化对象,当前不与session关联。

    常用的方法:

    flush:刷新(与数据库同步),刷新不等于提交,rollback可以回退。
    save:插入
    persist:插入(不能忽略主键的值)
    get:根据oid获得对应的po 对象
    evict:从session移除一个实体
    clear:从session中移除所有对象
    close:关闭session,并从session中移除所有对象
    update:修改游离态的对象(将游离态对象转成持久化对象)
    delete:删除
    

    get与load的区别?

  • 作用:都是根据oid获取对应的实体。
  • 区别:

    1.get会立即执行查询语句,得到真实对象,如果找不到,则返回null;
    2.load不会立即查询语句,返回一个代理对象,当需要访问这个实体时才会发送SQL语句,如果实体不存在,则抛出ObjectNotFoundException异常。
    相同点:查询时,先查询缓存,如找到,无论找到的是真实对象还是代理对象,都不会再发SQL语句。

    主键的设计事项

  • 每个表都应该有主键,与之对应的实体也应该有一个oid;
  • 主键的设置应该是无意义的,最好是数字,不应该与业务关联
  • hibernate的主键生成方式主要有:
    increment:自增长(最大值+1);只是应用于测试,不适用并发访问,支持int long short类型。
    identity:支持mysql  db2  ms  sqlserver支持,数据库自身的自增长。
    sequence:序列
    hilo:高低算法;
    native:先identity,sequence,hilo
    assigned:手动分配
    uuid:生成128位的码,返回的是字符串;
    foreign:外键(一对一)
    

更多精彩内容,请关注公众号:轮子工厂,公众号内回复:我要造轮子,可免费获得100本计算机经典电子图书; 回复:福利,获取大学生礼包; 回复:加群,邀请您进高手如云技术交流群。

文章目录
  1. 1. hibernate应用
    1. 1.0.1. 如何创建session?
    2. 1.0.2. 什么是session?
    3. 1.0.3. po对象的三个状态(po对象的生命周期)
    4. 1.0.4. 常用的方法:
    5. 1.0.5. get与load的区别?
    6. 1.0.6. 主键的设计事项