zoukankan      html  css  js  c++  java
  • JPA主键策略

    JPA 自带的主键策略有 4 种,在枚举 javax.persistence.GenerationType 中,分别是:TABLE、SEQUENCE、IDENTITY、AUTO。

    TABLE:
    通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。不同的JPA实现商生成的表名是不同的,如OpenJPA生成openjpa_sequence_table表,Hibernate生成一个hibernate_sequences表,而TopLink则生成sequence表。这些表都具有一个序列名和对应值两个字段,如SEQ_NAME和SEQ_COUNT。

    SEQUENCE
    表示使用数据库的序列为新增加的实体对象赋唯一值。这种情况下需要数据库提供对序列的支持常用的数据库中,Oracle支持,MySQL不支持这种方式。

    IDENTITY
    JPA 容器将使用数据库的自增长字段为新增加的实体对象赋唯一值。这种情况下需要数据库提供对自增长字段的支持,SQL Server、MySQL、DB2、Derby等支持。数据库在insert时分配标识值。Oracle不支持这种方式。

    AUTO
    由JPA自动生成,默认,委托JPA实现负责产生字段值。JPA会自动选择一个最适合底层数据库的主键生成策略。如MySQL会自动对应auto increment。这个是默认选项,即如果只写@GeneratedValue,等价于@GeneratedValue(strategy=GenerationType.AUTO)。

    如果使用Hibernate对JPA的实现,可以使用Hibernate对主键生成策略的扩展,通过Hibernate的@GenericGenerator实现。
    示例:

    1
    2
    3
    4
    5
    6
    7
    @Id
    //用generator属性指定要使用的策略生成器。
    @GeneratedValue(generator = "system-uuid")
    //声明一个策略通用生成器,name为”system-uuid”,策略strategy为”uuid”。
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(name="uuid", length=32)
    private String uuid;
  • 相关阅读:
    自己动手编写一个网络图片爬虫
    使用maven构建项目的注意事项
    maven 构建一个web项目
    构建简单的Maven工程,使用测试驱动的方式开发项目
    像Maven一样构建java项目的目录,更好的管理java工程的源码
    Tomcat源码导入eclipse的步骤
    [HNOI2012] 矿场搭建
    UVA10641 Barisal Stadium 照亮体育馆
    CSP-J/S(NOIP PJ/TG) 游记
    [BalticOI 2011 Day1] Switch the Lamp On
  • 原文地址:https://www.cnblogs.com/luoxiaolei/p/4272526.html
Copyright © 2011-2022 走看看