JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Object Relational Mapping » Hibernate  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
話題被移動
該話題已被移動 - browser , 2003-07-16 02:07
如果您尚不清楚該話題被移動的原因,請參考論壇規則以及本版公告或者聯系本版版主。
本主題所含的標籤
無標籤
作者 Re:hibernate 快速入門 [Re:ray_linn]
ray_linn

什么都不懂的小白

版主

發文: 540
積分: 10
於 2003-07-15 16:30 user profilesend a private message to usersend email to ray_linnreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
2. 複雜關係例子

我們換一個稍微複雜的例子來看看:

表person
id(primary key)  company_id  name  address
000000001  000000002  陳鵬  西安
          
表Company
id(primary key)  name
000000002  東軟
...   

兩個表之間通過id相關聯。

2.1 Person(已有),Company類:Persistent Object
h.Company

package h;
public class Company {
String id;
public void setId(String value) {
this.id=value;
}
public String getId() {
return id;
}
String name;
public void setName(String value) {
this.name=value;
}
public String getName() {
return name;
}
java.util.List employees=new java.util.Vector();
public void setEmployees(java.util.List value) {
this.employees=value;
}
public java.util.List getEmployees() {
return employees;
}
public void addEmployee(h.Person value) {
employees.add(value);
}
public void removeEmployee(h.Person value) {
employees.remove(value);
}
public void clearEmployees() {
employees.clear();
}
} 

2.2 填寫物件-關係映射xml文件,Person.hbm.xml照舊
Company.hbm.xml 也放到h.Company類相同目錄下
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
  <class name="h.Company">
   <!--hibernate爲我們生成主鍵id-->
    <id name = "id" unsaved-value = "null">
      <generator class="uuid.hex"/>
    </id>
     <property name="name"/>
   <!--1:n關係的映射-->
   <list name="employees" cascade="all">
<key column="company_id"/>
<index column="posn"/>
<one-to-many class="h.Person"/>
</list>
</class>
</hibernate-mapping>
 
2.3 TestCompany 我們用hibernate api來進行持久化Person,Company

package h;
import net.sf.hibernate.Session;import net.sf.hibernate.Transaction;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.tool.hbm2ddl.SchemaExport;
class TestCompany{
  private static SessionFactory sessions;
public static void main(String[] args) throws Exception{
     //配置環境,分析xml映射文件
  Configuration conf= new Configuration()
      .addClass(Person.class)      .addClass(Company.class);
//生成並輸出sql到文件(當前目錄)和資料庫
SchemaExport dbExport=new SchemaExport(conf);
dbExport.setOutputFile("build\\sql.txt");
dbExport.create(true, true);
    sessions = conf.buildSessionFactory();
//以上都是些固定格式的環境配置
//start......
Session s = sessions.openSession();
    Transaction t = s.beginTransaction();
      //1.用普通方式建立物件,填充資料
   Company c=new Company();
   c.setName("東軟");
      Person p1=new Person();
   p1.setName("陳鵬");
   p1.setAddress("西安東郊黃陵");  
Person p2=new Person();
   p2.setName("孫昱鵬");
   p2.setAddress("南郊電子城");
      c.addEmployee(p1);
   c.addEmployee(p2);  
   //2.持久化
   s.save(c);
    //此時c,p1,p2已經可以在資料庫中找到
   t.commit();
   s.close();
}} 
2.4 不用再配置資料庫了。
2.5 運行TestCompany類,在mysql中觀察create好的表person和Company其中的資料.
總結:
這個只展現了極爲簡單的2個持久化例子,更多的1:1,1:n,m:n等的物件模型的實現請看hibernate附帶的文檔,越是複雜的模型越能體現其威力。


browser edited on 2003-08-06 21:19
reply to postreply to post
飞翔的候鸟
話題樹型展開
人氣 標題 作者 字數 發文時間
28530 [精華] hibernate 快速入門 ray_linn 3636 2003-07-15 16:21
24586 Re:hibernate 快速入門 ray_linn 3871 2003-07-15 16:30
18525 Re:hibernate 快速入門 tomyoung 384 2004-11-19 21:45
23942 Re:hibernate 快速入門 imdragon 181 2003-07-16 09:48
24741 Re:hibernate 快速入門 ray_linn 2599 2003-07-16 12:14
23155 Re:hibernate 快速入門 :O) victorpen 1769 2004-03-23 19:56
22391 Re:hibernate 快速入門 :O) victorpen 613 2004-03-24 17:12
21283 Re:hibernate 快速入門 belliwu 69 2004-06-03 11:11
18158 Re:hibernate 快速入門 tomyoung 2229 2004-11-18 02:21
15827 Re:hibernate 快速入門 todayhill 81 2004-11-18 21:28
15970 Re:hibernate 快速入門 tomyoung 1041 2004-11-18 22:54
16118 Re:hibernate 快速入門 struggle 2143 2004-11-19 16:21
» JWorld@TW »  Object Relational Mapping » Hibernate

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8