码迷,mamicode.com
首页 > Web开发 > 详细

hibernate之主键生成策略

时间:2019-08-03 10:56:25      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:over   text   str   spi   aaa   import   cep   color   hbm   

首先建立Student和Woker的实体类,在导入两个实体类的hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.two.Student" table="t_hibernate_student">
        <id name="sid" type="java.lang.Integer" column="sid">
            <!--  <generator class="assigned" />人工控制数据类型不限-->
        <!-- <generator class="increment" /> -->    
        <!-- <generator class="identity" />数据库控制  数据库没有列段没有自增回报错,数字类型 -->    
<!--             <generator class="increment" /> hibernate控制-->
                          <generator class="increment"     /> 
            <!-- <generator class="sequence" />String类型的ID -->
            <!-- <generator class="sequence" > <param name="sequence_name">aaa</param> 
                </generator> -->
            <!-- <generator class="com.javaxl.two.id.Myts" /> -->
        </id>
        <property name="sname" type="java.lang.String" column="sname">
        </property>
    </class>
</hibernate-mapping>

主键策略分为四种,人工控制,数据库控制,以及hibernate控制,

generator中填的其实是一个类

人工控制:

技术图片

数据库变化:

技术图片

 

然后在是数据库控制数据

 

数据库控制  数据库没有列段没有自增会报错,仅限数字类型

技术图片

数据库:

技术图片

跟手动输入的值没有任何的关系,只会跟随数据库的自增而变化

 

自定义主键策略:

package com.two;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.IdentifierGenerator;

public class MyTsGenerator implements IdentifierGenerator {

    @Override
    public Serializable generate(SharedSessionContractImplementor arg0, Object arg1) throws HibernateException {
        // TODO Auto-generated method stub
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        return "book_order_"+sdf.format(new Date());
    }

}

可以自定义将ID列段改成自定义内容

 技术图片

需要将你自己写的自定义的类的路劲写入class

 

 

技术图片

数据库变化:

技术图片

 

 

 

自定义uuid:

随机生成32位的String数值

 

 技术图片

 

数据库变化

技术图片

 

 这就是hibernate的主键策略

 

hibernate之主键生成策略

标签:over   text   str   spi   aaa   import   cep   color   hbm   

原文地址:https://www.cnblogs.com/xhpcc/p/11293911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!