assined 主鍵的值 程序指定java
uuid hibernate幫你生成uuid,因此主鍵必須爲String程序員
Identity 數據庫表必須支持自動增加,新的主鍵的產生是由數據庫完成的,並非由hibernate或者程序員完成的數據庫
increment 遞增長1session
1 <id name="pid" column="pid" length="200" type="java.lang.Long"> 2 <!-- 3 主鍵的產生器 4 就該告訴hibernate容器用什麼樣的方式產生主鍵 5 --> 6 <generator class="increment"></generator> 7 </id>
1 package cn.itcast.hibernate.sh.generator; 2 3 import org.hibernate.Session; 4 import org.hibernate.Transaction; 5 import org.junit.Test; 6 7 import cn.itcast.hibernate.sh.domain.Person; 8 import cn.itcast.hibernate.sh.utils.HiberanteUtils; 9 10 public class GeneratorTest extends HiberanteUtils{ 11 /** 12 * Hibernate: select max(pid) from Person 13 Hibernate: insert into Person (pname, psex, pid) values (?, ?, ?) 14 15 說明: 16 一、主鍵的類型必須是數字 17 二、主鍵的生成是由hibernate內部完成的,程序員不須要干預 18 三、這種生成機制效率比較低 19 */ 20 @Test 21 public void testIncrement(){ 22 Session session = sessionFactory.openSession(); 23 Transaction transaction = session.beginTransaction(); 24 25 Person person = new Person(); 26 person.setPname("上海第一期班長"); 27 person.setPsex("女"); 28 29 /** 30 * 參數必須持久化對象 31 */ 32 session.save(person); 33 34 transaction.commit(); 35 session.close(); 36 } 37 38 /* 39 * Hibernate: insert into Person (pname, psex) values (?, ?) 40 * 說明 41 * 一、新的主鍵的產生是由數據庫完成的,並非由hibernate或者程序員完成的 42 * 二、該表必須支持自動增加機制 43 * 三、效率比較高 44 */ 45 @Test 46 public void testIdentity(){ 47 Session session = sessionFactory.openSession(); 48 Transaction transaction = session.beginTransaction(); 49 50 Person person = new Person(); 51 person.setPname("上海第一期班長"); 52 person.setPsex("女"); 53 54 /** 55 * 參數必須持久化對象 56 */ 57 session.save(person); 58 59 transaction.commit(); 60 session.close(); 61 } 62 63 /** 64 * 由程序設置主鍵 65 */ 66 @Test 67 public void testAssigned(){ 68 Session session = sessionFactory.openSession(); 69 Transaction transaction = session.beginTransaction(); 70 71 Person person = new Person(); 72 person.setPname("上海第一期班長"); 73 person.setPsex("女"); 74 75 /** 76 * 參數必須持久化對象 77 */ 78 session.save(person); 79 80 transaction.commit(); 81 session.close(); 82 } 83 84 /** 85 * 一、UUID是由hibernate內部生成的 86 * 二、主鍵的類型必須是字符串String類型 87 */ 88 @Test 89 public void testUUID(){ 90 Session session = sessionFactory.openSession(); 91 Transaction transaction = session.beginTransaction(); 92 93 Person person = new Person(); 94 person.setPname("上海第一期班長"); 95 person.setPsex("女"); 96 97 /** 98 * 參數必須持久化對象 99 */ 100 session.save(person); 101 102 transaction.commit(); 103 session.close(); 104 } 105 106 107 /** 108 * hibernate內部是根據主鍵生成器來生成主鍵的,在客戶端設置主鍵不必定起做用,在assigned的時候起做用 109 */ 110 @Test 111 public void testIdentity_ID(){ 112 Session session = sessionFactory.openSession(); 113 Transaction transaction = session.beginTransaction(); 114 Person person = new Person(); 115 person.setPid(1L); 116 person.setPname("aa"); 117 person.setPsex("aa"); 118 session.save(person); 119 transaction.commit(); 120 session.close(); 121 } 122 }