Hibernate学习笔记(二)【标识符及基本级联配置】

来源:互联网 发布:高一历史优化设计答案 编辑:程序博客网 时间:2024/05/17 00:06

标识符

[plain] view plain copy
  1. increment 用于代理主键.由Hibernate自增方式生成标识符,每次增量为1  
  2. identity  同上。由底层数据库生成标识符.前提是要数据库支持自增  
  3. sequence  同上。由底层数据库生成标识符.前提是要数据库支持序列  
  4. hilo      同上。由Hibernate根据high/low算法生成标识符  
  5. native    同上。根据数据库的支持,选择identity,sequence或hilo  
  6. uuid.hex  同上。由Hibernate采用UUID算法生成字符串形式的标识符  
  7. assigned  用于自然主键。由Java代码通过setId()生成标识符。  
数据库可使用的标识符
[plain] view plain copy
  1. 几种常用数据库可以使用的标识符生成器:  
  2. 1.      MySQL:identity,increment,hilo,native  
  3. 2.      MS SQL Server:identity,increment,hilo,native  
  4. 3.      Oracle:sequence,seqhilo,hilo,increment,native  
  5. 4.      跨平台:native  

IdentityTester.hbm.xml

[html] view plain copy
  1. <span style="color: rgb(0, 0, 255); "><hibernate-mapping>  
  2.     <class name="mypack.IdentityTester" table="IDENTITY_TESTER">  
  3.         <id name="id" type="long" column="ID">  
  4.             <generator class="identity"/>          
  5.         </id>  
  6.                <property name="name" type="string" column="NAME"/>  
  7.     </class>  
  8. </hibernate-mapping></span>  

IncrementTester.hbm.xml

[html] view plain copy
  1. <span style="color: rgb(0, 0, 255); "><hibernate-mapping>  
  2.     <class name="mypack.IncrementTester" table="INCREMENT_TESTER">         
  3.         <id name="id" type="long" column="ID">  
  4.           <meta attribute="scope-set">private</meta>  
  5.             <generator class="increment"/>  
  6.         </id>  
  7.         <property name="name" type="string" column="NAME"/>  
  8.     </class>  
  9. </hibernate-mapping></span>  

NativeTester.hbm.xml

[html] view plain copy
  1. <span style="color: rgb(0, 0, 255); "><hibernate-mapping>  
  2.     <class name="mypack.NativeTester" table="NATIVE_TESTER">  
  3.         <id name="id" type="long" column="ID">  
  4.             <generator class="native"/>  
  5.         </id>  
  6.         <property name="name" type="string" column="NAME"/>  
  7.     </class>  
  8. </hibernate-mapping></span>  

HiloTester.hbm.xml   【101  201  301】

[html] view plain copy
  1. <span style="color: rgb(0, 0, 255); "><hibernate-mapping>  
  2.   <class name="mypack.HiloTester"  table="HILO_TESTER">     
  3.     <id name="id" type="long" column="ID">  
  4.     <generator class="hilo">  
  5.                 <param name="table">hi_value</param>  
  6.                 <param name="column">next_value</param>  
  7.                 <param name="max_lo">100</param>  
  8.         </generator>  
  9.     </id>  
  10.     <property name="name" type="string" column="NAME" />     
  11.   </class>  
  12. </hibernate-mapping></span>  

Squence.hbm.xml

[html] view plain copy
  1. <generator class="sequence”>  
  2.          <param name="squence”>test_id_seq</param>  
  3.  </generator>  

基础级联 Monkey属于Team

Team.hbm.xml       【inverse="true"  cascade="all-delete-orphan"】

[html] view plain copy
  1. <span style="color:#0000ff;"><hibernate-mapping>  
  2.     <class name="mypack.Team" table="TEAMS">         
  3.         <id name="id" type="long" column="ID">        
  4.             <generator class="increment"/>  
  5.         </id>  
  6.         <property name="name" type="string" column="NAME"/>             
  7.               <set name="monkeys"  
  8.                    cascade="all-delete-orphan"  
  9.                       inverse="true">  
  10.                       <key column="TEAM_ID"/>  
  11.                       <one-to-many class="mypack.Monkey"/>  
  12.               </set>            
  13.     </class>  
  14. </hibernate-mapping></span>  

Monkey.hbm.xml      【 none delete all delete-orphan all-delete-orphan 

[html] view plain copy
  1. <hibernate-mapping>  
  2.     <class name="mypack.Monkey" table="MONKEYS">  
  3.         <id name="id" type="long" column="ID">  
  4.             <generator class="increment"/>  
  5.         </id>  
  6.         <property name="name" type="string" column="NAME"/>         
  7.         <!--mapping with cascade -->        
  8.         <many-to-one  
  9.          name="team"  
  10.         column="TEAM_ID"  
  11.          class="mypack.Team"  
  12.          cascade="save-update" <!— none delete all delete-orphan all-delete-orphan  -->   
  13.          lazy="false"  <!-- proxy -->      
  14.         />                
  15.     </class>  
  16. </hibernate-mapping>  
操作Service类代码片段

[java] view plain copy
  1. tx = session.beginTransaction();  
  2.               Team team = new Team("BULL"new HashSet<Monkey>());  
  3.               Monkey monkey = new Monkey();  
  4.               monkey.setName("Tom");  
  5.               monkey.setTeam(team);  
  6.               team.getMonkeys().add(monkey);  
  7.               session.save(team);  
  8.               tx.commit();  
  9.               tx =session.beginTransaction();  
  10.               Team team =(Team) session.load(Team.class, teamId);  
  11.               Monkey monkey =(Monkey) team.getMonkeys().iterator().next();  
  12.               // 解除team和Monkey的关联关系  
  13.               team.getMonkeys().remove(monkey);  
  14.               monkey.setTeam(null);  
  15.               tx.commit();  
0 0
原创粉丝点击