_001_Hibernate的复合主键

1>:首先将要作为主键的属性首先抽取成单独的实体  并提供get And set方法  并且还需要序列化

      比如现在有一个实体 People ,具有属性pName,pAddress,pJavaScore,pCscore

     复合主键为pName,pAddress

   将这两个属性抽离形成一个新的实体并提供setter,gettter方法实现序列化

compositionkey.java

[java] view plain copy
  1. import java.io.Serializable;  
  2.   
  3. /** 
  4.  *  
  5.  * @author Guomin JIn 
  6.  * 
  7.  */  
  8. public class CompositionKey implements Serializable{  
  9.     private String pName;  
  10.     private String pAddress;  
  11.     public String getpName() {  
  12.         return pName;  
  13.     }  
  14.     public void setpName(String pName) {  
  15.         this.pName = pName;  
  16.     }  
  17.     public String getpAddress() {  
  18.         return pAddress;  
  19.     }  
  20.     public void setpAddress(String pAddress) {  
  21.         this.pAddress = pAddress;  
  22.     }  
  23.       
  24. }  

  2>:在实际的实体中申明主键实体的变量

抽离之后的Peopel实体如下:

People.java

[java] view plain copy
  1. package cn.pzhu.composition;  
  2. /** 
  3.  * 实体类 
  4.  * @author Guomin JIn 
  5.  * 
  6.  */  
  7. public class People {  
  8.     private CompositionKey key;  
  9.     private float pJavaScore;  
  10.     private float pCScore;  
  11.     public CompositionKey getKey() {  
  12.         return key;  
  13.     }  
  14.     public void setKey(CompositionKey key) {  
  15.         this.key = key;  
  16.     }  
  17.     public float getpJavaScore() {  
  18.         return pJavaScore;  
  19.     }  
  20.     public void setpJavaScore(float pJavaScore) {  
  21.         this.pJavaScore = pJavaScore;  
  22.     }  
  23.     public float getpCScore() {  
  24.         return pCScore;  
  25.     }  
  26.     public void setpCScore(float pCScore) {  
  27.         this.pCScore = pCScore;  
  28.     }  
  29.     @Override  
  30.     public String toString() {  
  31.         return "People [key=" + key + ", pJavaScore=" + pJavaScore + ", pCScore=" + pCScore + "]";  
  32.     }  
  33.       
  34.       
  35. }  

  3>:在映射文件中编写实体的配置文件 

配置文件如下:

hibernate.cfg.xml省略()

people.hbm.xml

[html] view plain copy
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
  5.   
  6. <hibernate-mapping package="cn.pzhu.composition">  
  7.     <class name="People" table="peopel" >  
  8.         <composite-id name="key">  
  9.             <key-property name="pName" length="10" type="java.lang.String"></key-property>  
  10.             <key-property name="pAddress" length="10" type="java.lang.String"></key-property>  
  11.         </composite-id>  
  12.         <property name="pJavaScore" length="5"/>  
  13.         <property name="pCScore"></property>  
  14.     </class>  
  15. </hibernate-mapping>  
4>:编写测试类

测试类使用junit

[java] view plain copy
  1. @Test  
  2.     public void test_0001() {  
  3.         Session session=new Configuration()  
  4.         .configure("hibernate.cfg.xml")  
  5.         .addClass(People.class)  
  6.         .buildSessionFactory()  
  7.         .openSession();  
  8.           
  9.         session.beginTransaction();  
  10.           
  11.         CompositionKey key=new CompositionKey();  
  12.         key.setpName("jgm");  
  13.         key.setpAddress("chengdu");  
  14.           
  15.         People people=new People();  
  16.         people.setKey(key);  
  17.         people.setpJavaScore(12.34f);  
  18.         people.setpCScore(36.2f);  
  19.         //HibernateUtil.save(people);  
  20.         session.save(people);  
  21.     }  
阅读更多
个人分类: _001_Hibernate
下一篇_001_怎么在cmd中输入mysql就可以进去mysql控制台
博主设置当前文章不允许评论。

没有更多推荐了,返回首页

关闭
关闭