Hibernate初學之一對多、多對一關係模型

 舉例訂單與客戶

多對一關係模型:

· 首先是導包;這個省略不寫了,

· 其次寫domain

分爲Client Order兩個類,因爲是多對一的關係,所以外鍵應該放在Order這個類裏;

配置文件:hibernate.cfg.xml


<hibernate-configuration>

 <session-factory name="foo">

 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

 <property name="connection.url">jdbc:mysql:///test</property>

 <property name="connection.username">root</property>

 <property name="connection.password">root</property>

 <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

  

     <property name="show_sql">true</property>

 <property name="hbm2ddl.auto">update</property> 



 <mapping resource="com/hbsi/domain/Client.hbm.xml"/>

 <mapping resource="com/hbsi/domain/Order.hbm.xml"/>





 </session-factory>

</hibernate-configuration>



定義一個Client的變量;

·然後寫配置文件,Client.hbm.xml

  <hibernate-mapping package=”com.hbsi.domain”>

     <class name=”Client” table=”client”>//類名和表名

     <id name=”id” column=”id”>//變量和字段

       <generator class= ”native” />//根據數據庫裏的設置自定義

      </id>

      <property name=”name” />

  </class>

</hibernate -mapping>


 Order.hbm.xml

<hibernate-mapping>

    <class name=”Order” table=”ordershop”>

          <id name=”id”>

             <generator class=”native” />
              </id>

          <property name=”shopname” column=”shopname” />

          <property name=”number” column=”number”/>

          <property name = “price” column=”price” />

          <many-to-one name=”client” column=”client_id” />

    <class>


</hibernate-mapping>


配置文件這樣就寫完了,接下來就是添加查找;


      Session session=null;

     @Test

  public void add(Client client,Order order){

  try{

   session = HibernateUtil.getSession();//獲取工具類

  session.beginTransaction();//開啓事務

  

   /*Client client = new Client();

   client.setName("劉總");

   Order order1 = new Order();

          order1.setShopname("航空母艦");

          order1.setNumber(2);

   order1.setPrice(22);

   order1.setCt(client);

   

   Order order2 = new Order();

          order2.setShopname("航空母艦");

          order2.setNumber(2);

   order2.setPrice(22);

   order2.setCt(client);*/

   

   session.save(client);

   session.save(order);

   session.beginTransaction().commit();

  }finally{

  if(session!=null){

  session.close();

  }

  }

   

  }

     

     public void find(int id){

      try{

       session = HibernateUtil.getSession();

       session.beginTransaction();

       Order order = (Order) session.get(Order.class, id);

       System.out.println(order.getCt().getName());

       

       session.beginTransaction().commit();

     }finally{

     if(session!=null){

     session.close();

     } 

     }

     }

測試:

public static void main(String[] args ){

 Client client = new Client();

   client.setName("xiao總");

   Order order1 = new Order();

        order1.setShopname("美國");

        order1.setNumber(2);

   order1.setPrice(22);

   order1.setCt(client);

   

   Order order2 = new Order();

        order2.setShopname("日本");

        order2.setNumber(2);

   order2.setPrice(22);

   order2.setCt(client);

   

 Many2one mo = new Many2one();

 mo.add(client, order1);

 mo.find(2);

 }


關係模型一對多:

Client.hbm.xml

   <hibernate-mapping package="com.hbsi.domain2">


 <class name="Client" table="client">

 <id name="id" column="id">

                <generator class = "native" />

 </id>



     <property name="name" />

     <set name="order" table="ordershop" cascade="save-update">

      <key column="user_id" />

      <one-to-many class="Order"  />

     

     </set>


 </class>


</hibernate-mapping>


 Order.hbm.xml


<hibernate-mapping package="com.hbsi.domain2">


 <class name="Order" table="ordershop">

 <id name="id">

                <generator class = "native" />

 </id>



     <property name="shopname" column="shopname" />

     <property name="number" column="number" />

     <property name="price" column="price" />

     


 </class>

</hibernate-mapping>

添加方法:

public void add(Client client,Order order){



  try{

   session = HibernateUtil.getSession();

   session.beginTransaction();





   session.save(client);

 //  session.save(order);

   session.beginTransaction().commit();

  }finally{

  if(session!=null){

  session.close();

  }

  

  }

 }

 public void find(int id){

  try{

      session = HibernateUtil.getSession();

      session.beginTransaction();

      Client client = (Client) session.get(Order.class, id);

      Set<Order> orders  =client.getOrder();

      orders.size();

      session.beginTransaction().commit();

    }finally{

    if(session!=null){

    session.close();

    } 

    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章