JPA主键生成策略
来源:互联网 发布:程序员用的浏览器 编辑:程序博客网 时间:2024/05/16 11:27
JPA默认提供了四种主键生成策略。
(1) GeneratorType.AUTO:容器自动生成
(2) GenerationType.IDENTITY :使用数据库的自动增长字段生成,JPA容器将使用数据库的自增长字段为新增的
实体对象赋唯一值,这种情况下,需要数据库本身提供自增长字段属性,支持该属性的DB有:SQL Server、DB2、
MySQL、Derby等支持。
(3) GenerationType.SEQUENCE:使用数据库的序列号为新增加的实体对象赋唯一值, 这种情况下需要数据库提供
对序列号的支持常用的数据库中,Oracle支持。
(4) GenerationType.TABLE :使用数据库表的字段生成,表示使用数据库中指定表的某个字段记录实体对象的标识,
通过该字段的增长为新增加的实体对象赋唯一值
JPA是实现使用举例:
1. GeneratorType.AUTO
(1) OpenJPA
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator = "uuid")
(2) Hibernate:Eclipse会提示错误,但是程序是可以运行的
@Id
@GenericGenerator(name = "test", strategy = "uuid")
@GeneratedValue(generator = "test")
说明:这中主键生成策略均跟实现有关系,不易于前移,推荐使用用:
java.util.UUID user.setUserId(UUID.randomUUID().toString());
2. GenerationType.IDENTITY
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long accountId;
如果是在Derby数据库中,则需要定义字段
USER_ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1);
而在MySQL中不需要。
3. GenerationType.TABLE
(1) Hibernate: 需要创建生成主键的表
@TableGenerator(name = "testId", table = "IDTABLE",
pkColumnName = "KEYID", valueColumnName = "KEYVALUE", pkColumnValue =
"TestUSER_ID")
@GeneratedValue(strategy=GenerationType.TABLE, generator="testId")
CREATE TABLE IDTABLE (
KEYID VARCHAR(255) NOT NULL,
KEYVALUE BIGINT,
PRIMARY KEY (KEYID)
);
(2) JPA实现:数据库中没有该表将会自动生成
转载地址:http://springsfeng.iteye.com/blog/1271590
- JPA主键生成策略
- JPA 主键生成策略
- JPA主键生成策略
- JPA主键生成策略
- jpa 主键生成策略
- JPA主键生成策略
- JPA 映射主键生成策略
- Jpa主键UUID生成策略
- JPA的主键生成策略
- JPA主键生成器和主键生成策略
- JPA主键生成器和主键生成策略
- JPA主键生成器和主键生成策略
- JPA注解生成主键策略详解
- JPA主键生成策略 @GeneratedValue @SequenceGenerator @GenericGenerator
- JPA注解主键生成策略-UUID
- Hibernate和JPA的主键生成策略
- hibernate JPA注解主键生成策略
- jpa和hibernate的主键生成策略
- Servlet生命周期与工作原理
- SSH之架包篇
- php多维数组的遍历方法
- Springmvc 应用Mongodb分页实现
- SQL server 2008 的日期时间类型
- JPA主键生成策略
- 开漏(open drain)和开集(open collector)
- centos FTP服务器的架设和配置
- C++ ceil 和 floor
- 搭建WP开发环境
- 风车网之败
- hdu-2045-LELE的RPG难题
- 6种方法遍历二维数组
- 黑马程序员 枚举,注解