当前位置: 首页 > news >正文

Hibernate 3 标识符生成策略

在手册的第 5 章 对象/关系数据库映射基础(Basic O/R Mapping)

5.1.4.1. Generator
可选的<generator>子元素是一个Java类的名字, 用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数, 用<param>元素来传递。

<id name="id" type="long" column="cat_id">
<generator class="org.hibernate.id.TableHiLoGenerator">
<param name="table">uid_table</param>
<param name="column">next_hi_value_column</param>
</generator>
</id>
所有的生成器都实现net.sf.hibernate.id.IdentifierGenerator接口。 这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然, Hibernate提供了很多内置的实现。下面是一些内置生成器的快捷名字:

increment
用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。

identity
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。

sequence
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。

hilo
使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和字段(默认分别是是 hibernate_unique_key 和next_hi)作为高位值的来源。 高/低位算法生成的标识符只在一个特定的数据库中是唯一的。

seqhilo
使用一个高/低位算法来高效的生成long, short 或者 int类型的标识符,给定一个数据库序列(sequence)的名字。

uuid
用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。

guid
在MS SQL Server 和 MySQL 中使用数据库生成的GUID字符串。

native
根据底层数据库的能力选择identity, sequence 或者hilo中的一个。

assigned
让应用程序在save()之前为对象分配一个标示符。这是 <generator>元素没有指定时的默认生成策略。

select
通过数据库触发器选择一些唯一主键的行并返回主键值来分配一个主键。

foreign
使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。

相关文章:

  • “大”服务的成功来自“小”细节
  • 酷博短信发送软件
  • [导入]千万千万不要买宏图三胞的东西
  • 基于Win32的多线程客户/服务器通信
  • 转:在自己的工具条中使用ArcGIS Engine提供的命令和工具
  • 费劲千辛万苦终于找到了数据库!
  • 忽然之间
  • 在VS2008中使用WSE 3.0
  • ASP.NET中值类型与列类型不匹配的问题
  • 【PHP】日文全角转半角半角判断
  • 硬盘知识
  • 医药公司网站建设方案
  • 工作需要,了解了下HSRP.
  • 【转】华为Java笔试题
  • 2008年7月51CTO.com十大热点文章排行榜
  • Centos6.8 使用rpm安装mysql5.7
  • github从入门到放弃(1)
  • Mac转Windows的拯救指南
  • Rancher-k8s加速安装文档
  • RxJS: 简单入门
  • spring + angular 实现导出excel
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 力扣(LeetCode)357
  • 每天一个设计模式之命令模式
  • 前嗅ForeSpider教程:创建模板
  • 什么是Javascript函数节流?
  • 使用docker-compose进行多节点部署
  • 小程序 setData 学问多
  • 在Unity中实现一个简单的消息管理器
  • 做一名精致的JavaScripter 01:JavaScript简介
  • FaaS 的简单实践
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #Z2294. 打印树的直径
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计高校学生选课系统
  • (力扣题库)跳跃游戏II(c++)
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (实战篇)如何缓存数据
  • (一)Neo4j下载安装以及初次使用
  • (转)http协议
  • **python多态
  • .gitignore文件—git忽略文件
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET 材料检测系统崩溃分析
  • .Net 高效开发之不可错过的实用工具
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net6使用Sejil可视化日志
  • .NET和.COM和.CN域名区别
  • @Async注解的坑,小心
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...