日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Hibernate一對多實例

本文向大家介紹Hibernate實例一對多的情況,可能好多人還不了解Hibernate實例一對多,沒有關(guān)系,下面通過一個實例來幫助您理解Hibernate實例一對多,希望本文能教會你更多東西。

創(chuàng)新互聯(lián)建站專注于來安企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,成都做商城網(wǎng)站。來安網(wǎng)站建設(shè)公司,為來安等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

先看由滿江紅翻譯團(tuán)隊(RedSaga Translate Team)翻譯的一對多配置說明,然后在看例子
一對多關(guān)聯(lián)(One-to-many Associations)

一對多關(guān)聯(lián) 通過外鍵 連接兩個類對應(yīng)的表,而沒有中間集合表。 這個關(guān)系模型失去了一些Java集合的語義:

一個被包含的實體的實例只能被包含在一個集合的實例中

一個被包含的實體的實例只能對應(yīng)于集合索引的一個值中

一個從Product到Part的關(guān)聯(lián)需要關(guān)鍵字字段,可能還有一個索引字段指向Part所對應(yīng)的表。 標(biāo)記指明了一個一對多的關(guān)聯(lián)。

 
 
 
  1.  
  2.         class="ClassName"                                  (1)
  3.         not-found="ignore|exception"                       (2)
  4.         entity-name="EntityName"                           (3)
  5.         node="element-name"
  6.         embed-xml="true|false"
  7.     />

(1) class(必須):被關(guān)聯(lián)類的名稱。 
(2) not-found (可選 - 默認(rèn)為exception): 指明若緩存的標(biāo)示值關(guān)聯(lián)的行缺失,該如何處理: ignore 會把缺失的行作為一個空關(guān)聯(lián)處理。 
(3) entity-name (可選): 被關(guān)聯(lián)的類的實體名,作為class的替代。 
例子

 
 
 
  1.  name="bars">
  2.      column="foo_id"/>
  3.      class="org.hibernate.Bar"/>
  4. set>

注意: 元素不需要定義任何字段。 也不需要指定表名。

重要提示

如果Hibernate實例一對多關(guān)聯(lián)中的外鍵字段定義成NOT NULL,你必須把 映射聲明為not-null="true",或者使用雙向關(guān)聯(lián),并且標(biāo)明inverse="true"。

1 先建表

 
 
 
  1.  create   table  student
  2. (sid  varchar ( 32 )  not   null   primary   key ,
  3.  sname  varchar ( 16 ),
  4.  sage  varchar ( 16 ),
  5. )
  6.  create   table  book
  7. (bid  varchar ( 32 )  not   null   primary   key ,
  8. bname  varchar ( 16 ),
  9. bprice  varchar ( 16 ),
  10. sid  varchar ( 32 )
  11. )
  12.  

2.寫vo Student.java

 
 
 
  1. package com.test;
  2. import java.util.Set;
  3. public class Student
  4. {
  5.     private String sid;
  6.     private String sname;
  7.     private String sage;
  8.     private Set book;
  9.     public Student()
  10.     {
  11.     }
  12.   // 寫上get set

Book.JAVA

 
 
 
  1. package com.test;
  2. public class Book
  3. {
  4.     private String bid;
  5.     private String bname;
  6.     private String bprice;
  7.     public Book()
  8.     {
  9.     }
  10.    //寫上get set

3.寫對應(yīng)的映射文件Student.hbm.xml

 
 
 
  1. xml version="1.0"?>
  2.     PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
  3.     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
  4.      name="com.test.Student" table="student" >
  5.          name="sid" type="string" unsaved-value="null" >
  6.              name="sid" sql-type="char(32)" not-null="true"/>
  7.              class="uuid.hex"/>
  8.          id>
  9.          name="sname">
  10.              name="sname" sql-type="varchar(16)" not-null="true"/>
  11.          property>
  12.          name="sage">
  13.              name="sage" sql-type="varchar(16)" not-null="true"/>
  14.          property>
  15.          name="book" cascade="all" outer-join="true">
  16.              column="sid"/>
  17.              class="com.test.Book" />
  18.          set>
  19.      class>
  20. hibernate-mapping>

Book.hbm.xml

 
 
 
  1. xml version="1.0"?>
  2.     PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
  3.     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
  4.      name="com.test.Book" table="book" >
  5.          name="bid" type="string" unsaved-value="null" >
  6.              name="bid" sql-type="char(32)" not-null="true"/>
  7.              class="uuid.hex"/>
  8.          id>
  9.          name="bname">
  10.              name="bname" sql-type="varchar(16)" not-null="true"/>
  11.          property>
  12.          name="bprice">
  13.              name="bprice" sql-type="varchar(16)" not-null="true"/>
  14.          property>
  15.      class>
  16. hibernate-mapping>

接著把下面的hibernate.properties文件拷到classes目錄下。。這里用的是mysql

 
 
 
  1. hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'
  2. ## MySQL
  3. hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
  4. hibernate.connection.driver_class org.gjt.mm.mysql.Driver
  5. hibernate.connection.url jdbc:mysql://localhost:3306/wjcms
  6. hibernate.connection.username root
  7. hibernate.connection.password wujun
  8. hibernate.connection.pool_size 1
  9. hibernate.proxool.pool_alias pool1
  10. hibernate.show_sql true
  11. hibernate.jdbc.batch_size 0
  12. hibernate.max_fetch_depth 1
  13. hibernate.cache.use_query_cache true 

4.寫測試類了..

 
 
 
  1. package com.test;
  2. import net.sf.hibernate.Session;
  3. import net.sf.hibernate.SessionFactory;
  4. import net.sf.hibernate.cfg.Configuration;
  5. import net.sf.hibernate.*;
  6. import java.util.Set;
  7. import java.util.HashSet;
  8. import java.sql.*;
  9. import java.util.List;
  10. import java.util.Iterator;
  11. public class TestOneToMany
  12. {
  13.     SessionFactory sf;
  14.     Session session;
  15.     public TestOneToMany()
  16.     {
  17.         try
  18.         {
  19.             Configuration cfg = new Configuration();
  20.             sf = cfg.addClass(Student.class).addClass(Book.class).buildSessionFactory();
  21.         }
  22.         catch(HibernateException ex)
  23.         {
  24.             ex.printStackTrace();
  25.         }
  26.     }
  27.     //插入
  28.     public void doCreate()
  29.     {
  30.         try
  31.         {
  32.             session = sf.openSession();
  33.             Student student = new Student();
  34.             student.setSname("小王");
  35.             student.setSage("22");
  36.             Set bookSet = new HashSet();
  37.             Book book = null;
  38.             for(int i=0;i<2;i++)
  39.             {
  40.                 book = new Book();
  41.                 book.setBname("java "+i);
  42.                 book.setBprice("50");
  43.                 bookSet.add(book);
  44.             }
  45.             student.setBook(bookSet);
  46.             session.save(student);
  47.             session.flush();
  48.             session.connection().commit();
  49.         }
  50.         catch(HibernateException ex)
  51.         {
  52.             ex.printStackTrace();
  53.         }
  54.         catch(SQLException ex1)
  55.         {
  56.             ex1.printStackTrace();
  57.         }
  58.         finally
  59.         {
  60.                 try{
  61.                     session.close();
  62.                 }
  63.                 catch(HibernateException ex2){
  64.                 }
  65.         }
  66.     }
  67.     //查詢
  68.     public void doQuery()
  69.     {
  70.         try{
  71.             session = sf.openSession();
  72.             Query q = session.createQuery("select s from Student as s");
  73.             List l = q.list();
  74.             Student s = null;
  75.             Book book = null;
  76.             for(int i=0;i();i++)
  77.             {
  78.                 s = (Student)l.get(i);
  79.                 System.out.println("姓名: "+s.getSname());
  80.                 System.out.println("年齡: "+s.getSage());
  81.                 System.out.println("所有的書:");
  82.                 Iterator it = s.getBook().iterator();
  83.                 while(it.hasNext())
  84.                 {
  85.                     book = (Book)it.next();
  86.                     System.out.println("書名: "+book.getBname());
  87.                     System.out.println("價格: "+book.getBprice());
  88.                 }
  89.             }
  90.         }
  91.         catch(HibernateException ex){
  92.             ex.printStackTrace();
  93.         }
  94.         finally{
  95.             try{
  96.                 session.close();
  97.             }
  98.             catch(HibernateException ex2){
  99.             }
  100.         }
  101.     }
  102.     public static void main(String[] args)
  103.     {
  104.         TestOneToMany t = new TestOneToMany();
  105.         //t.doCreate();
  106.         t.doQuery();
  107.     }
  108. }

好了。。在這里把這些例子幾下來。。方便查閱。。也是很適合象我們這樣的出學(xué)者。。。


分享題目:Hibernate一對多實例
標(biāo)題來源:http://m.5511xx.com/article/cospise.html