id生成策略-(xml、annotation)-4

id生成策略

在xml中:

  1. uuid
    注意,需要将java类中对应字段设为String,xml文件中
 <id name="id" >
            <generator class="uuid"/>
 </id>
  1. native
    (hibernate自动匹配id生成策略)
    如果是mysql数据库,java类中对应字段设为int
    (注意,如果只修改字段类型的话,hibernate不会重新生成表,测试时注意把旧表删掉)
  2. sequence
    在oracle中
  3. identity
    在mysql中

在annotation中:
1. auto
默认情况下相当于native,根据数据库的类型来生成
2. sequece(oracle)

// 在类名上指定sequece的名字
@SequenceGenerator(name = "teacherSEQ",sequenceName = "teacherSEQ_db")
public class Teacher {...}
// 在主键id上指定生成策略
@Id // 主键
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "teacherSEQ")// oracle
public int getId() {
        return id;
    }

3.table(用一张表来生成主键)
// 好处是跨平台,数据跨平台,在实际工作中几乎不用

@TableGenerator(name="Teacher_GEN",
                table = "GENERATOR_TABLE",
                pkColumnName = "pk_key",
                valueColumnName = "pk_value",
                pkColumnValue = "Teacher",
                allocationSize = 1)
public class Teacher {...}
   @GeneratedValue(strategy = GenerationType.TABLE,generator = "Teacher_GEN")// oracle
    public int getId() {
        return id;
    }
  1. identity
    mysql可使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值