博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate(2)
阅读量:7107 次
发布时间:2019-06-28

本文共 1203 字,大约阅读时间需要 4 分钟。

一、实体类编写规则

  1、实体类里面的属性属于私有的

  2、私有属性使用公开的set和get方法操作

  3、要求实体类有属性作为唯一值(一般使用id值)

  4、实体类属性建议不要使用基本数据类型,使用基本数据类型对应的包装类

 

二、Hibernate 主键生成策略

    1、主键的分类

    自然主键:把具有业务含义的字段作为主键,称之为自然主键。例如在user表中,如果把name字段作为主键,其前提条件必须是:每一个客户的姓名不允许为null,不允许客户重名,并且不允许修改客户姓名。尽管这也是可行的,但是不能满足不断变化的业务需求,一旦出现了允许客户重名的业务需求,就必须修改数据模型,重新定义表的主键,这给数据库的维护增加了难度。

    代理主键:把不具备业务含义的字段作为主键,称之为代理主键。该字段一般取名为“ ID ” 通常为整数类型,因为整数类型比字符串类型要节省更多的数据库空间。在上面例子中,显然更合理的方式是使用代理主键。

 

    2、hibernate的主键生产策略:使用 generator 标签

      

 

        classs属性值主要有2个(native,uuid):

 

        

       注意:使用uuid生产策略时,实体类id属性必须使用 字符串类型

          

 

 

 三、实体类对象的三种状态

   1、瞬时态(transient)

    瞬时态也称为临时态或者自由态,瞬时态的实例是new命令创建、开辟内存空间的对象,不存在持久化标识OID(相当于主键值),尚未与Hibernate sesslon关联,在数据库中也没有记录,失去引用后将被JVM回收。瞬时状态的对象在内存中是孤立存在的,与数据库中的数据无任何关联,仅是一个信息携带的载体。

    瞬时态:对象里面没有id值,对象与session没有关联

    

   2、持久态(persistent)

    持久态的对象存在持久化标识OID,加入到了Session缓存中,并且相关联的Session没有关闭,在数据库中有对应的记录,每条记录只对应唯一的持久化对象,需要注意的是,持久态对象是在事务还未提交前变成持久态的。

    持久态:对象里面有id值,对象与session关联

    

   3、脱管态(detached)

    脱管态也称离线态或者游离态,当某个持久化状态的实例与Session的关联被关闭时就变成了脱管态。脱管态对象存在持久化标识OID,并且仍然与数据库中的数据存在关联,只是失去了与当前 Session的关联,脱管状态对象发生改变时Hibernate不能检测到

    托管态:对象有id值,对象与session没有关联

    

 

 

 

 

  

转载于:https://www.cnblogs.com/flei/p/6629210.html

你可能感兴趣的文章
JVM 一套卷,助你快速掌握优化法则
查看>>
多迪技术部带你回顾2017年程序员们过得好吗?
查看>>
idea保存时自动format
查看>>
A guide to this in JavaScript
查看>>
babel插件开发心得
查看>>
简单聊聊Android组件化
查看>>
Java多线程编程笔记之多线程技能
查看>>
浅谈伪共享
查看>>
Clean Code 读书笔记
查看>>
通过 HTTP Session 单点登录解决方案
查看>>
Android热修复之 打补丁原来如此简单
查看>>
Xshell传输文件
查看>>
同城货运主导全新商流体系:智慧物流成胜负关键?
查看>>
[MetalKit]27-Using-MetalKit-part-17使用MetalKit17
查看>>
QPM 之悬浮窗助力性能优化
查看>>
Android组件化专题 - 组件化配置
查看>>
React生命周期详解
查看>>
大数据成神之路-Java高级特性增强(volatile关键字)
查看>>
C进阶 - 内存四驱模型
查看>>
mp3怎么转换成m4r(iPhone铃声制作)
查看>>