hibernate加jpa自带一共14种。
1.native
@Id @GeneratedValue(generator = "gen") @GenericGenerator(name = "gen", strategy = "native")
或
@Id @GeneratedValue(strategy=GenerationType.AUTO)
2.table : org.hibernate.id.enhanced.TableGenerator
@Id @GeneratedValue(strategy=GenerationType.TABLE, generator="empGen") @TableGenerator( name="empGen", table="ID_GEN", pkColumnName="GEN_KEY", valueColumnName="GEN_VALUE", pkColumnValue="EMP_ID", allocationSize=1) public int id;
3.uuid : org.hibernate.id.UUIDHexGenerator
最高生成36位长唯一字符串(加上分隔符),默认32位
@Id @GeneratedValue(generator = "gen") @GenericGenerator( name = "gen", strategy = "uuid", parameters={ //@Parameter(name="separator",value="自定义分隔符,长度1位") }) private String id;
4.hilo : org.hibernate.id.TableHiLoGenerator
@Id @GeneratedValue(generator="gen") @GenericGenerator( name="gen", strategy="hilo", parameters={ //@Parameter(name="table",value="hibernate_unique_key"), //@Parameter(name="column",value="next_hi"), //@Parameter(name="schema",value="schema"), //@Parameter(name="catalog",value="catalog"), //@Parameter(name="max_lo",value="20") }) private int id;
注释部分可以做相应的修改
5.assigned : org.hibernate.id.Assigned
@Id private int id;
6.identity : org.hibernate.id.IdentityGenerator
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id;
7.select : org.hibernate.id.SelectGenerator
8.sequence : org.hibernate.id.SequenceGenerator
@Id @GeneratedValue(generator="gen") @GenericGenerator( name="gen", strategy="sequence", parameters={ //@Parameter(name="sequence",value="hibernate_sequence"), //@Parameter(name="parameters",value=""), //@Parameter(name="schema",value=""), //@Parameter(name="catalog",value="") }) private int id;
或
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE) private int id;
支持DB2.H2.HSQL.Informix.Ingres.Interbase.Mckoi.Mimer.Oracle.Postgre.RDMSOS2200.SAPDB.TimesTen
9.seqhilo : org.hibernate.id.SequenceHiLoGenerator
@Id @GeneratedValue(generator="gen") @GenericGenerator( name="gen", strategy="seqhilo", parameters={ //@Parameter(name="sequence",value="hibernate_sequence"), //@Parameter(name="parameters",value=""), //@Parameter(name="schema",value=""), //@Parameter(name="catalog",value=""), //@Parameter(name="max_lo",value="20") }) private int id;
支持DB2.H2.HSQL.Informix.Ingres.Interbase.Mckoi.Mimer.Oracle.Postgre.RDMSOS2200.SAPDB.TimesTen
10.increment : org.hibernate.id.IncrementGenerator
@Entity @Table(name = "id_increment_gen") public class IncrementGen { @Id @GeneratedValue(generator="gen") @GenericGenerator( name="gen", strategy="increment", parameters={ @Parameter(name="tables",value="id_increment_gen"), //@Parameter(name="identity_tables",value="id_increment_gen"), @Parameter(name="column",value="id"), //@Parameter(name="target_column",value="id"), //@Parameter(name="schema",value=""), //@Parameter(name="catalog",value="") }) private int id;其中tables参数和identity_tables参数互斥,tables参数优先。column参数和target_column参数互斥, column参数优先,支持多表,以","分隔,会生成类似如下的语句:
select max (ids_.id) from ( select id from id_increment_gen ) ids_多表时为:
select max (ids_.id) from ( select id from id_increment_gen1 union select id from id_increment_gen2 ) ids_
11.foreign : org.hibernate.id. ForeignGenerator
12.guid : org.hibernate.id. GUIDGenerator
@Id @GeneratedValue(generator = "gen") @GenericGenerator(name = "gen", strategy = "guid") private String id;
支持mysql,oracle,sybase
13.uuid.hex : org.hibernate.id.UUIDHexGenerator // uuid.hex is deprecated
14.sequence-identity : org.hibernate.id.SequenceIdentityGenerator
15.自定义
可同时实现接口org.hibernate.id.IdentifierGenerator,org.hibernate.id.Configurable
@Id @GeneratedValue(generator = "gen") @GenericGenerator(name = "gen", strategy = "xg.CustGenerator") private String id;
strategy填写具体类名
相关推荐
通过以上步骤,你就成功地搭建了JPA环境,并理解了如何创建JPA实体和设置主键生成策略。继续深入学习,你将能够利用JPA的强大功能,如查询语言(JPQL)、级联操作、事务管理等,来更高效地进行数据库操作。
本压缩包文件"04_JPA详解_第一个JPA实例与JPA主键生成策略.zip"包含了关于如何在实际项目中运用JPA,以及理解JPA主键生成策略的详细教程。 ### JPA基础 1. **JPA简介**: JPA是Java EE的一部分,它提供了一套规范,...
### JPA主键生成策略详解 #### 一、概述 持久化对象的主键生成机制在JPA(Java Persistence API)中占据着重要的位置。它不仅关乎数据的唯一标识符如何确定,还与数据的存储效率及应用逻辑紧密相关。JPA通过`@...
### Hibernate主键生成策略 1. **`native`**:类似于JPA的`GenerationType.AUTO`,根据底层数据库选择合适的生成策略。 2. **`identity`**:相当于JPA的`GenerationType.IDENTITY`,适合自动增长主键的数据库。 3...
总的来说,理解并灵活运用JPA和Hibernate的主键生成策略,结合不同数据库的特性,是确保项目数据一致性和可移植性的关键。合理选择和配置主键生成方式,可以帮助我们优化数据库性能,同时保证数据的完整性。在实际...
seqhilo是一种通过hilo算法实现的主键生成策略,但是主键历史保存在Sequence中。这种策略适用于支持Sequence的数据库,如Oracle。 increment increment是一种插入数据的时候hibernate会给主键添加一个自增的主键的...
* @GeneratedValue:标注该实体Bean的主键自动生成策略 这些注解可以帮助JPA provider(例如Hibernate)生成对应的数据库表结构和SQL语句。 三、Hibernate概述 Hibernate是一个基于JPA规范的ORM(Object-...
- `@GeneratedValue`: 控制主键的生成策略,如自增、UUID等。 - `@Column`: 定义字段与数据库列的映射,可设置长度、是否允许为空等属性。 - `@OneToMany`, `@ManyToOne`, `@OneToOne`, `@ManyToMany`: 描述实体...
同时,使用`@Table`指定表名,`@Id`标记主键,`@GeneratedValue`定义主键生成策略。 最后,在控制器层,使用`@RestController`或`@Controller`注解定义控制器,通过`@RequestMapping`和`@GetMapping`等处理HTTP请求...
1. **实体注解**:如@Entity、@Table、@Id、@GeneratedValue等,这些注解用于标记Java类为实体,并指定其与数据库表的关系,以及主键的生成策略。 2. **查询语言**:Hibernate支持JPQL(Java Persistence Query ...
同时,使用`@Table`指定表名,`@Id`标识主键字段,`@GeneratedValue`处理主键生成策略,如自增。 ```java import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence....
- `@GeneratedValue`:用于自动生成主键值,支持多种策略如IDENTITY、SEQUENCE、TABLE等。 - `@Column`:定义实体属性与数据库列的映射,可以设置列名、长度、是否允许为空等属性。 - `@OneToMany`, `@ManyToOne`, `...
这些类通常会使用`@Entity`注解,并且属性使用`@Id`(主键)、`@GeneratedValue`(主键生成策略)等注解进行标注。 7. **Repository接口**:Spring Data JPA允许我们创建基于接口的DAO,只需定义基本的CRUD操作接口...
这里`@Entity`表示这是一个JPA实体,`@Table`指定对应的数据库表名,`@Id`定义主键,`@GeneratedValue`定义主键生成策略,`@Column`定义字段映射到表的列。 3. **Repository接口** 创建一个继承自JpaRepository的...
- 为了确保一对一关系的唯一性,通常其中一个实体的主键会作为另一个实体的外键,且两者的主键生成策略应保持一致。 - 考虑到性能,避免在查询时加载不必要的关联对象,可以使用懒加载(`fetch = FetchType.LAZY`)...
属性则使用`@Id`(主键)、`@GeneratedValue`(自动生成策略)等注解进行映射。 配置JPA的核心是`persistence.xml`文件,它位于`META-INF`目录下。在这个文件中,我们可以定义数据源、指定Hibernate为JPA提供者、...
自动生成的Entity类通常包含属性(对应表的字段)和getter/setter方法,有时还会包含一些特定的Hibernate注解,如@Id(主键)和@GeneratedValue(主键生成策略)。 2. **映射文件(Mapping Files)**:在传统的...
例如,@Entity表示这个类是一个持久化实体,@Table注解指定对应的数据库表,@GeneratedValue用于控制主键的生成策略。 5. Hibernate配置文件: 逆向工程也会生成hibernate.cfg.xml文件,这个文件包含了数据库连接...
例如,`@Entity`标记一个类为实体,`@Table`定义映射的数据库表,`@Id`指定主键字段,`@GeneratedValue`管理主键生成策略。 持久化单元配置文件(Persistence.xml)定义了数据源、实体类以及持久化策略。在...
`@Id`表示主键,`@GeneratedValue`定义主键生成策略,这里使用了数据库自增策略。 4. **创建Repository接口** Spring Data JPA允许我们通过接口来操作数据库,无需编写SQL。创建一个继承`JpaRepository`的接口: ...