Hibernate初學中的對多、多對一關係模型及構造函數和構造代碼比較

舉例訂單與客戶java

  多對一關係模型:mysql

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

  · 其次寫domain類數據庫

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

  配置文件:hibernate.cfg.xmlapp

  [java]dom

  <hibernate-configuration>ide

  <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>

添加方法:

  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();

  }

  }

  }

----------------------------------------------構造函數和構造代碼塊比較

[java]  

class Demo  

{  

public Demo()//構造函數(方法)  

{  int a=90;  

System.out.println("構造函數a="+a);  

}  

{

//構造代碼塊  

int a=80;//未建立對象,不會運行。  

System.out.println("構造代碼a="+a);  

}  

public static void main(String []args)  

{  

System.out.println("運行結果");  

new Demo();  

}  

}

相關文章
相關標籤/搜索