什么是持久化类
- 持久化:将内存中的一个对象持久化到数据库中的过程。Hibernate框架就是用来进行持久化的框架。
- 持久化类:一个java类与数据库建立了映射关系
- 持久化类 = java类 + 映射文件
持久化类的编写规则:
- 对持久化类提供一个无参的构造方法。
- hibernate的底层需要通过反射生成实例。
- 属性要私有,对私有属性提供get和set方法
- Hibernate中获取,设置值
- 对持久化类要提供一个唯一表示的OID与数据库主键对应
- 持久化类中属性尽量使用包装类型。
- 持久化类不能用final修饰
主键分类
自然主键
- 主键本身就是表中的一个字段(实体中一个具体的属性)。
- 创建一个人员表,人员会有一个身份证号(唯一的不可重复的,使用身份证做主键,这种主键就叫做自然主键。)
代理主键
- 本事不是表中一个必须的字段(不是实体中一个具体的属性)
- 创建一个人员表,没有使用身份证号,而是使用一个与此表不相关的ID字段。这种主键称之为代理主键
开发中尽量使用代理主键
- 一旦自然主键参与到业务逻辑中,后期有可能需要修改源代码
- 好的程序设计满足OCP,对程序的扩展是open的,对源码的修改是close的
主键的生成策略
- increment
- hibernate中提供的自增长的机制,适用于int,short,long类型的主键。在单线程中使用
- identity
- 数据库底层的增长机制,适用与int,short,long (Myslq,MSSQL)
- sequence
- 采用的是序列的方式。适用与int,short,long (Oracle)
- uuid
- hibernate中随机的生成字符串的主键
- native
- 本地策略,在identity和sequence中切换
- assigned
- hibernate放弃外键管理,需要通过手动添加。