hibernate--ID生成策略

本文详细介绍了Java Persistence API (JPA) 中ID生成的四种主要策略:AUTO、IDENTITY、SEQUENCE及TABLE,并提供了相应的Java注解示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、注解式 annotation:  (java在线文档----java ee----javax.presistence----GenerationType)

一)@GeneratedValue

  默认为(1)AUTO:
                mysql 默认为auto_increment

                oracle 默认 hibernate_sequence(固定写法)

如:

package com.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Student {
	private int id;
	private String name;
	private String password;
@Id
@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}

(2)采用identity策略:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

(3)sequence策略:用于oracle数据库

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)

使用sequence生成器可以自定义生成器名字(类之前使用@SequenceGenerator(name = "mySequence",sequenceName = "mySequence_DB"))如:

@Entity
@SequenceGenerator(name = "mySequence",sequenceName = "mySequence_DB")
public class Student {
	private int id;
	private String name;
	private String password;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "mySequence")
	public int getId() {
		return id;
	}

二)@TableGenerator :表格生成器(多用于跨平台(跨数据库等),很多时候都不会遇到, 故为了解内容)

@Entity
@TableGenerator(
        name="stu_GEN", 
        table="Table_GEN", 
        pkColumnName="GEN_KEY", 
        valueColumnName="GEN_VALUE", 
        pkColumnValue="Student", 
        allocationSize=1) 
public class Student {
	private int id;
	private String name;
	private String password;
@Id
@GeneratedValue(strategy = GenerationType.TABLE,generator = "stu_GEN")
	public int getId() {
		return id;
	}
原理:

有两个字段 , key 和 value 字段,可以放入n条记录(不同的实例),通过key来获取value 的值(即生成id),每次获取完成后,value的值加1



二、XML生成ID

generator:常用四个属性native 、 identity 、sequence 、 uuid

其中native根据数据类型自动选择属性:
  在mysql 中默认 identity (auto_increment)

  在oracle 中默认 sequence

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值