今天下午做了重新复习了hibernate的一些小实验,晚上就在这总结一下今天下午所学的东东吧。

1、Card.java

 

 
  
  1. package model;  
  2.  
  3. public class Card {  
  4.     private int id;  
  5.     private String number;  
  6.     private Person person;  //与Person类关联
  7.       
  8.     public int getId() {  
  9.         return id;  
  10.     }  
  11.     public void setId(int id) {  
  12.         this.id = id;  
  13.     }  
  14.     public String getNumber() {  
  15.         return number;  
  16.     }  
  17.     public void setNumber(String number) {  
  18.         this.number = number;  
  19.     }  
  20.     public Person getPerson() {  
  21.         return person;  
  22.     }  
  23.     public void setPerson(Person person) {  
  24.         this.person = person;  
  25.     }  
  26. }  

2、Person.java

 
  
  1. package model;  
  2.  
  3. public class Person {  
  4.     private int id;  
  5.     private String name;  
  6.     public int getId() {  
  7.         return id;  
  8.     }  
  9.     public void setId(int id) {  
  10.         this.id = id;  
  11.     }  
  12.     public String getName() {  
  13.         return name;  
  14.     }  
  15.     public void setName(String name) {  
  16.         this.name = name;  
  17.     }  
  18.       
  19. }  

 

3、Person.hbm.xml

 
  
  1. <?xml version="1.0"?> 
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  5.  
  6. <hibernate-mapping>     
  7.     <class name="model.Person" table="person">     
  8.         <id name="id" type="integer">     
  9.             <generator class="native" />     
  10.         </id>     
  11.         <property name="name" />     
  12.     </class>     
  13.      
  14. </hibernate-mapping>    
  15.  

4、Card.hbm.xml

 

 
  
  1. <?xml version="1.0"?> 
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  5.  
  6. <hibernate-mapping>     
  7.     <class name="model.Card" table="card">     
  8.         <id name="id" type="integer">     
  9.            <!-- 主键生成方式为foreign -->     
  10.            <generator class="foreign">     
  11.                <param name="property">person</param>     
  12.            </generator>     
  13.         </id>     
  14.         <property name="number"></property>     
  15.         <!-- constrained=true表示生成外键约束 -->     
  16.         <one-to-one name="person" constrained="true"></one-to-one>     
  17.     </class>     
  18. </hibernate-mapping>    
  19.  
  20.  

测试test

 

 
  
  1. package test;  
  2.  
  3. import model.Card;  
  4. import model.Person;  
  5.  
  6. import org.hibernate.Session;  
  7. import org.hibernate.SessionFactory;  
  8. import org.hibernate.cfg.Configuration;  
  9. import org.hibernate.tool.hbm2ddl.SchemaExport;  
  10. import org.junit.Test;  
  11.  
  12. public class HibernateORMappingTest {  
  13.      @Test 
  14.     public void testCreateDB(){     
  15.         //生成表结构      
  16.         Configuration config = new Configuration().configure();     
  17.         SchemaExport export = new SchemaExport(config);     
  18.         export.create(truetrue);     
  19.     }     
  20.        
  21.      @Test 
  22.      public void testSave(){  
  23.          //测试 添加数据  
  24.          Configuration cfg = new Configuration().configure();  
  25.          SessionFactory sessionfactory = cfg.buildSessionFactory();  
  26.          Session session = sessionfactory.openSession();  
  27.          session.beginTransaction();  
  28.            
  29.          Person person = new Person();  
  30.          person.setName("liuchendi");  
  31.            
  32.          Card card = new Card();  
  33.          card.setNumber("441426199105250099");  
  34.          card.setPerson(person);  
  35.            
  36.          session.save(card);      
  37.          session.getTransaction().commit();  
  38.          session.close();  
  39.          sessionfactory.close();  
  40.      }  
  41.        
  42.      @Test 
  43.      public void testGetPerson(){  
  44.            
  45.          Configuration config = new Configuration().configure();  
  46.          SessionFactory sessionfactory = config.buildSessionFactory();  
  47.          Session session  = sessionfactory.openSession();  
  48.          session.beginTransaction();  
  49.            
  50.          Card card = (Card)session.get(Card.class,1);  //获取第1条数据
  51.          System.out.println("CardNumber is :" + card.getNumber());  
  52.            
  53.          Person person = card.getPerson();//通过card.getPerson()方法 返回person     
  54.  
  55.  
  56.          System.out.println("PersonName is :" + person.getName());  
  57.            
  58.          session.getTransaction().commit();  
  59.          session.close();  
  60.          sessionfactory.close();  
  61.            
  62.      }  
  63.  
  64.  
  65. }  

其实做这个的目的是可以通过card来获取person的属性,实现关联。