Hibernate各种主键生成策略和配置详解 Hibernate是一种流行的Java持久层框架,它提供了多种主键生成策略,以满足不同的应用需求。了解这些策略和配置方法是开发者必须具备的知识。本文将详细介绍Hibernate十一种主键生成策略,并提供相应的XML文件配置方法和Annotation使用规则。 1. assigned主键生成策略 assigned主键生成策略是指由外部程序负责生成主键,在save()之前必须指定一个。Hibernate不负责维护主键生成。这种方法可以跨数据库,但需要在存储对象前使用主键的setter方法赋值。配置方式如下: ```xml <id name="id" column="id"> <generator class="assigned"/> </id> ``` 或使用Annotation: ```java @Id @GeneratedValue(generator="ud") @GenericGenerator(name="ud", strategy="assigned") private int id; ``` 特点:可以跨数据库,人为控制主键生成,应尽量避免。 2. increment主键生成策略 increment主键生成策略是指由Hibernate从数据库中取出主键的最大值,然后以该值为基础,每次增量为1,在内存中生成主键。不依赖于底层的数据库,因此可以跨数据库。配置方式如下: ```xml <id name="id" column="id"> <generator class="increment"/> </id> ``` Hibernate调用org.hibernate.id.IncrementGenerator类里的generate()方法,使用select max(idColumnName) from tableName语句获取主键最大值。该方法被声明成了synchronized,因此在一个独立的Java虚拟机内部是没有问题的,然而,在多个JVM同时并发访问数据库select max时就可能取出相同的值,再insert就会发生Dumplicate entry的错误。所以只能有一个Hibernate应用进程访问。 3. hilo主键生成策略 hilo主键生成策略是指使用高低位算法生成主键。高位用于标识数据库的唯一性,低位用于标识本地的唯一性。配置方式如下: ```xml <id name="id" column="id"> <generator class="hilo"/> </id> ``` 4. seqhilo主键生成策略 seqhilo主键生成策略是指使用序列高低位算法生成主键。序列用于标识数据库的唯一性,高低位用于标识本地的唯一性。配置方式如下: ```xml <id name="id" column="id"> <generator class="seqhilo"/> </id> ``` 5. sequence主键生成策略 sequence主键生成策略是指使用数据库的序列生成主键。配置方式如下: ```xml <id name="id" column="id"> <generator class="sequence"/> </id> ``` 6. identity主键生成策略 identity主键生成策略是指使用数据库的identity生成主键。配置方式如下: ```xml <id name="id" column="id"> <generator class="identity"/> </id> ``` 7. native主键生成策略 native主键生成策略是指使用数据库的本地生成主键。配置方式如下: ```xml <id name="id" column="id"> <generator class="native"/> </id> ``` 8. uuid主键生成策略 uuid主键生成策略是指使用UUID生成主键。配置方式如下: ```xml <id name="id" column="id"> <generator class="uuid"/> </id> ``` 9. guid主键生成策略 guid主键生成策略是指使用GUID生成主键。配置方式如下: ```xml <id name="id" column="id"> <generator class="guid"/> </id> ``` 10. foreign主键生成策略 foreign主键生成策略是指使用外键生成主键。配置方式如下: ```xml <id name="id" column="id"> <generator class="foreign"/> </id> ``` 11. select主键生成策略 select主键生成策略是指使用select语句生成主键。配置方式如下: ```xml <id name="id" column="id"> <generator class="select"/> </id> ``` Hibernate提供了多种主键生成策略,以满足不同的应用需求。开发者可以根据实际情况选择合适的策略,并正确地配置XML文件或使用Annotation规则。
下载后可阅读完整内容,剩余6页未读,立即下载
- 粉丝: 5
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦