Hibernate ID生成策略

我们在创建表的时候都有一个唯一id,但是我们想自动的跨平台的生成id,hibernate帮我们实现了方法。

常用的UUID,native:

方式一:

使用xml:Student.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.xxc.model.Student" table="student"><!-- 表名 -->
        <id name="id">
            <generator class="native"></generator>  <!--native可以改成UUID区别自己查-->
        </id><!-- column对应数据库表里面的字段 -->
        <property name="name" ></property>
        <property name="age" ></property>
    </class>

</hibernate-mapping>

这样我们在网数据库中存数据的时候就不需要s.setId();hibernate自动帮我们创建

方式二:

使用annotation:

我们就不需要.hbm.xml配置文件了,直接在实体类中添加@GeneratedValuepackage com.xxc.model;

import java.util.Date;

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

@Entity
@Table(name="teacher")
public class Teacher {
    private int id;

    @Id
    @GeneratedValue   //我们可以自己制定生成策略:@GeneratedValue(strategy=GenerationType.IDENTITY),这种方法SqlServer,mysql能用,但是oracle不能用,因为他用的是sequence  //在oracle中我门换成@GeneratedValue(strategy=GenerationType.SEQUENCE)就可以了  public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

}

这样生成id,我们如果有几个表的话,几个表就会公用同一个id生成器,如果我们想不一样,那就看下面

import java.util.Date;

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

@Entity
@Table(name="teacher")
@SequenceGenerator(name="teacherGen",sequenceName="teacherGen_DB")//name是指这个生成器的名字,sequenceName是指生产数据库后squence的名字
public class Teacher {
    private int id;

    @Id
    //@GeneratedValue 
   @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="teacherGen")
  //我们可以自己制定生成策略:@GeneratedValue(strategy=GenerationType.IDENTITY),这种方法SqlServer,mysql能用,但是oracle不能用,因为他用的是sequence   //在oracle中我门换成@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="teacherGen")就可以了   public int getId() { return id; } public void setId(int id) { this.id = id; } }

原文地址:https://www.cnblogs.com/alex-xxc/p/9756423.html

时间: 2024-10-15 18:36:09

Hibernate ID生成策略的相关文章

hibernate ID生成策略配置

1.Student.hbm.xml配置 <hibernate-mapping package="com.wxh.hibernate.model"> <class name="Student" > <id name="id"> <generator class="uuid"></generator> </id> <property name="

hibernate(四)ID生成策略

一.ID生成策略配置 1.ID生成方式在xml中配置方式: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping p

Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略

Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test    public void  test1()    {        Session session = null;         try {             session = Hiber

hibernate 中mysql的id生成策略

数据库的规划和操作号码大全中,咱们一般会给表建立长尾关键词挖掘工具的主键. 主键,可以分为天然主键和署理主键. 天然主键表明:选用具有事务逻辑意义的字段作为表的主键.比方在用户信息表中,选用用户的身份证号码作为主键.可是这样一来,跟着事务逻辑的变化,主键就有可能要更改.比方,假定哪天身份证号码升级成19,2位,那....... 署理主键:在表中人为的添加一个字段,该字段并没有表明任何的事务逻辑,仅仅用来标识一行数据.比方说在用户信息表中,添加一个用户ID的字段.用来表明该条用户信息的记录. 一般

Hibernate中ID生成策略

四.ID生成策略 第一种:XML配置ID 通过为<id>元素增加<generator>子元素,该子元素拥有class属性.常用的class属性有: (1)increment:用于为long.short.或者int类型生成唯一标识.只有在没有其他进程往同一张表中插入数据的时候才能使用.在集群不要使用.(极少使用) (2)native:让数据库自动选择identity,sequence,或者其他. (3)uuid:128位的UUID算法,产生String类型ID (4)identity

[Hibernate开发之路](4)ID生成策略

一 对象关系数据库映射之Id 被映射的类必须定义相应数据库表主键字段.大多数类有一个JavaBeans风格的属性, 为每个实例包括唯一的标识. <id> 元素定义了该属性到数据库表主键字段的映射. <id name="propertyName" type="typename" column="column_name" unsaved-value="null|any|none|undefined|id_value&quo

Hibernate系列之ID生成策略

一.概述 hibernate中使用两种方式实现主键生成策略,分别是XML生成id和注解方式(@GeneratedValue),下面逐一进行总结. 二.XML配置方法 这种方式是在XX.hbm.xml文件中对generator进行配置,eg: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" &qu

Hibernate学习笔记(4)ID生成策略

一 对象关系数据库映射之Id 被映射的类必须定义对应数据库表主键字段.大多数类有一个JavaBeans风格的属性, 为每一个实例包含唯一的标识.<id> 元素定义了该属性到数据库表主键字段的映射. <id name="propertyName" type="typename" column="column_name" unsaved-value="null|any|none|undefined|id_value&quo

ID生成策略

在电商项目中,图片名.商品ID都要唯一且方便存储,于是记录下这两个ID生成策略的方法,以便日后项目再有需要.具体代码如下 import java.util.Random; /** * 图片名生成 */ public static String genImageName() { //取当前时间的长整形值包含毫秒 long millis = System.currentTimeMillis();//加上三位随机数 Random random = new Random(); int end3 = ra