Hibernate学习笔记_ID生成策略
2014-12-02 20:24
591 查看
[b]一,xml生成id[/b]
a) generator
b) 常用四个:native identity sequence uuid(跨平台 native uuid)
native
根据底层数据库的能力选择identity,sequence 或者hilo中的一个。(数据库自增)
identity
对DB2,MySQL, MS SQL Server,Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 (数据库自增)
sequence
在DB2,PostgreSQL, Oracle, SAPDB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。(数据库自增)
[b] 二, 注解方式:@GeneratedValue[/b]
a) 自定义ID
b) AUTO(直接写 @GeneratedValue 相当如native)
i. 默认:对 MySQL,使用auto_increment
ii. 对 Oracle使用hibernate_sequence(名称固定)
c) IDENTITY(@GeneratedValue(strategy=GenerationType.IDENTITY))
d) SEQUENCE(@GeneratedValue(strategy=GenerationType.SEQUENCE))
i. @SequenceGenerator(可自定义在数据库生成指定的sequence名)
e) TABLE (可以忘记)
原理:就是在数据库中建立一个表,这个表包含两个字段,一个字段表示名称,另一个字段表示值。每次在添加数据时,使用第一个字段的名称,来取值作为添加数据的ID,然后再给这个值累加一个值再次存入数据库,以便下次取出使用。
a) generator
<hibernate-mapping> <class name="com.bjsxt.hibernate.Student"> <id name="id"> <generator class="native"></generator> </id> <property name="age" /> <property name="sex" /> <property name="good" type="yes_no"></property> </class> </hibernate-mapping>
b) 常用四个:native identity sequence uuid(跨平台 native uuid)
native
根据底层数据库的能力选择identity,sequence 或者hilo中的一个。(数据库自增)
identity
对DB2,MySQL, MS SQL Server,Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 (数据库自增)
sequence
在DB2,PostgreSQL, Oracle, SAPDB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。(数据库自增)
[b] 二, 注解方式:@GeneratedValue[/b]
a) 自定义ID
b) AUTO(直接写 @GeneratedValue 相当如native)
i. 默认:对 MySQL,使用auto_increment
ii. 对 Oracle使用hibernate_sequence(名称固定)
@Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; }
c) IDENTITY(@GeneratedValue(strategy=GenerationType.IDENTITY))
d) SEQUENCE(@GeneratedValue(strategy=GenerationType.SEQUENCE))
i. @SequenceGenerator(可自定义在数据库生成指定的sequence名)
@Entity @Table(name="_Teacher") @SequenceGenerator(name="teacherSEQ",sequenceName="teacherSEQ_DB") //"teacherSEQ"为@SequenceGenerator的标识名 ,"teacherSEQ_DB"为指定到数据库生成的Sequence名public class Teacher { private int id; private String name; private String title; private String money; private Date birthDay; private ZhiCheng zhiCheng; @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="teacherSEQ") public int getId() { return id; } public void setId(int id) { this.id = id; } ............ }
e) TABLE (可以忘记)
原理:就是在数据库中建立一个表,这个表包含两个字段,一个字段表示名称,另一个字段表示值。每次在添加数据时,使用第一个字段的名称,来取值作为添加数据的ID,然后再给这个值累加一个值再次存入数据库,以便下次取出使用。
@TableGenerator( name="Teacher_GEN", //生成策略的名称 table="GENERATOR_TABLE",//在数据库生成表的名称 pkColumnName = "pk_key",//表中第一个字段的字段名 类型为varchar,key valueColumnName = "pk_value",//表中第二个字段的字段名 int ,value pkColumnValue="Teacher", //这个策略中使用该记录的第一个字段的值(key值) initialValue = 1, //这个策略中使用该记录的第二个字段的值(value值)初始化值 allocationSize=1//每次使用数据后累加的数值 ) @SequenceGenerator(name="teacherSEQ",sequenceName="teacherSEQ_DB") public class Teacher { private int id; private String name; private String title; private String money; private Date birthDay; private ZhiCheng zhiCheng; @Id @GeneratedValue(strategy=GenerationType.TABLE,generator="Teacher_GEN") public int getId() { return id; } public void setId(int id) { this.id = id; } .......... }
相关文章推荐
- Hibernate学习笔记-ID生成策略
- Hibernate学习笔记(4)ID生成策略
- Hibernate 学习笔记03 --ID生成策略
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
- Hibernate学习笔记-ID生成策略
- Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略
- Hibernate框架学习(第三讲)---Hibernate注解以及ID生成策略
- Hibernate笔记②--hibernate类生成表、id生成策略、级联设置、继承映射
- hibernate框架学习笔记4:主键生成策略、对象状态
- Hibernate学习笔记之主键生成策略和SchemaExport
- Hibernate 学习笔记-1-3(Hibernate的基本映射以及几种主键生成策略的测试)
- Hibernate学习笔记 -- day04 标识符、主键生成策略
- Hibernate学习——(三)ID生成策略介绍
- Hibernate的主键生成策略学习笔记
- Hibernate学习笔记总结(四)——缓存策略
- Follow Me:深入浅出学习Hibernate四:主键生成策略
- hibernate id 生成策略及主要使用方法
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- Hibernate的ID生成策略/联合主键解决方案
- Hibernate中自带ID生成策略中属性“ generator”的含义