文档章节

Hibernate主键生成策略

李茂冉
 李茂冉
发布于 2016/05/11 11:58
字数 467
阅读 12
收藏 0

1. ID生成策略

1.1.         XML方式

Xml生成Id

         Generator

         常用4个:

Native-int  identity (sqlserver,mysql)-int  sequence(oracle)-int    uuid-string

Increment(mysql) -int

<?xml version="1.0" encoding="utf-8"?>

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

<hibernate-mapping package="com.hiber">

    <class name="Student" table="student" >

       <id name="id">

           <!-- mysql中的auto_increment -->

<!--          <generator class="identity"/>-->

      

           <!-- oracle中的sequence -->

<!--          <generator class="sequence" />-->

      

           <!-- uuid唯一的值32 -->

           <generator class="uuid" />

      

           <!-- native(所有数据库的)自动递增 -->

<!--          <generator class="native" />-->

       </id>

       <property name="name" length="10"></property>

       <property name="sex" length="2" ></property>

       <property name="age" length="3" ></property>

    </class>

</hibernate-mapping>

 

 

1.2.         注解方式 Annotition

  例子:

@Id

  @GeneratedValue //此处默认为native

  public int getId() {

     return id;

  }

 

@Id

  @GeneratedValue(strategy=GenerationType.IDENTITY) //此处为 IDENTITY

  public int getId() {

     return id;

  }

 

 

1.3 联合主键的设置

         1.@Embeddable @Id

         2.@EmbeddedID

         3.@Id@IdClass

private Student_id_PK pk;

@EmbeddedId //联合主键的设置

  public Student_id_PK getPk() {

     return pk;

  }

例子:

package com.hiber;

import javax.persistence.EmbeddedId;

import javax.persistence.Entity;

@Entity

public class Student_id {

    private Student_id_PK pk;

    private String sex;

    @EmbeddedId   //联合主键的设置

    public Student_id_PK getPk() {

       return pk;

    }

    public void setPk(Student_id_PK pk) {

       this.pk = pk;

    }

    public String getSex() {

       return sex;

    }

    public void setSex(String sex) {

       this.sex = sex;

    }

    public int getAge() {

       return age;

    }

    public void setAge(int age) {

       this.age = age;

    }

    private int age;

   

}

 

package com.hiber;

//把当前类序列化

public class Student_id_PK implements java.io.Serializable{

    //联合主键

    private int id;

    private String name;

    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;

    }

   

    @Override

    public boolean equals(Object obj) {

       if(obj instanceof Student_id_PK){

           Student_id_PK p = (Student_id_PK)obj;

           if(p.id==this.id && p.name.equals(this.name)){

              return true;

           }

       }

       return false;

    }

    @Override

    public int hashCode() {

       return this.name.hashCode();

    }

}

 

package com.hiber;

import org.hibernate.HibernateException;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

import org.hibernate.cfg.Configuration;

import org.hibernate.classic.Session;

 

public class Student_id_Test {

         public static void main(String[] args) {

                  //创建连接

                  //建立Configuration

                  Configuration cfg = null;

                  //xml方式

                  //cfg = new Configuration();

                 

                  //Annotition方式

                  cfg = new AnnotationConfiguration();

                 

                  cfg.configure();

                  //打开SessionFactory

                  SessionFactory sf = cfg.buildSessionFactory();

                  //创建Session

                  Session session = sf.openSession();

                 

                 

                  Student_id_PK pk=new Student_id_PK();

                  pk.setId(1);

                  pk.setName("_11");

                  Student_id stu = new Student_id();

                  stu.setPk(pk);

                  stu.setSex("");

                  stu.setAge(19);

                 

                  //打开事务

                  session.beginTransaction();

                  //保存对象

                  try{

                          session.save(stu);

                          //提交事务

                          session.getTransaction().commit();

                          System.out.println("保存数据OK");

                  }catch(HibernateException e){

                          //回滚事务

                          session.getTransaction().rollback();

                          System.out.println("保存数据失败!");

                  }finally{

                          //关闭连接

                          session.close();

                  }

         }

}

 

 

© 著作权归作者所有

共有 人打赏支持
下一篇: c#调用exe
李茂冉
粉丝 5
博文 103
码字总数 59256
作品 0
东城
高级程序员
私信 提问

暂无文章

easyui tree

<tr> <th><spring:message code="wf.borrow.examiner"/></th> <td> <input id="inp-examiner1" type="text" name="examiner1" style="width:197px;height:20px;" data-options="required:tru......

小兵胖胖
14分钟前
1
0
内存性能的正确解读

一台服务器,不管是物理机还是虚拟机,必不可少的就是内存,内存的性能又是如何来衡量呢。 1. 内存与缓存 现在比较新的CPU一般都有三级缓存,L1 Cache(32KB-256KB),L2 Cache(128KB-2MB)...

阿里云云栖社区
16分钟前
1
0
微服务架构:Zuul 1.0 和 2.0 我们该如何选择?

在今年5月中,Netflix终于开源了它的支持异步调用模式的Zuul网关2.0版本,真可谓千呼万唤始出来。从Netflix的官方博文[附录1]中,我们获得的信息也比较令人振奋: The Cloud Gateway team a...

大木老师故事的小黄花
17分钟前
1
0
基础掌握

哪些是基础功呢?我觉得包括: 数据结构和算法:链表、队列、栈、堆、树(RBT, B/B+)、跳表、哈希、图;查找(二分、bst)、排序(冒泡、插入、快排、归并、堆排、希尔)、递归、归并、回溯、...

边鹏_尛爺鑫
18分钟前
1
0
Android APP的安装路径

一. Android应用安装路径有两种情况: system/app 系统自带的应用程序,无法删除。root后可以删除,注意可能造成系统崩溃,不过有的垃圾捆绑软件只能这么删除了 data/app 用户程序安装的目录,...

天王盖地虎626
21分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部