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
如果您尚不清楚該話題被移動的原因,請參考論壇規則以及本版公告或者聯系本版版主。
本主題所含的標籤
無標籤
作者 hibernate 快速入門 [精華]
ray_linn

什么都不懂的小白

版主

發文: 540
積分: 10
於 2003-07-15 16:21 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
本文旨在用例子給出大概輪廓(很省時間),具體請參考其自帶的優秀文檔。

參考:一群牛人關於jdo和ejb的討論:Java object models debated 其中也提到了此開源專案。


1. 一個簡單的例子 --- 我們開發一個Person類:
Person
{
name:String
address:String
id:String
}

要通過hibernate實現它要經過以下步驟:

主要是先根據物件模型編寫簡單的業務實體類(簡單的bean規範類,即有get,set方法的類,可以用jac等工具生成),再用xml映射文件描述其映射資料庫的方式(很easy),最後就可以通過很少的hibernate api寫測試類對其進行持久化操作。

1.1
寫Person類(Persistent Object),它和普通的類沒甚末不同,但注意它應該複合bean的規範,爲每個屬性提供get,set方法:
package h;
public class Person
{
String name
public void setName(String value)
{ this.name=value; }
public String getName()
{ return name; }
String address;
public void setAddress(String value)
{ this.address=value; }
public String getAddress()
{ return address; }
String id;
public void setId(String value)
{ this.id=value; }
public String getId()
{ return id; }
}

1.2 填寫物件-關係映射xml文件,不用擔心它的複雜程度,我們可以抄嘛:
和所有o-r 映射工具一樣都要寫這種映射文件。

Person.hbm.xml
建議命名爲:"類名"+"hbm.xml" 並且放置在Person類相同包目錄下
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>  
<class name="h.Person">
   <!--hibernate爲我們生成主鍵id-->
    <id name = "id" unsaved-value = "null">
      <generator class="uuid.hex"/>
    </id>
       <!--默認把類的變數映射爲相同名字的表列,當然我們可以修改其映射方式-->
    <property name="name"/>
    <property name="address"/>
  </class>
</hibernate-mapping> 

1.3 TestPerson 我們用hibernate api來進行持久化Person

h.TestPerson
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 TestPerson{   
private static SessionFactory sessions;
public static void main(String[] args) throws Exception{
     //配置環境,分析xml映射文件
  Configuration conf= new Configuration()
    .addClass(Person.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.用普通使用方式建立物件,填充資料
   Person p1=new Person();
   p1.setName("陳鵬");
   p1.setAddress("西安東郊黃陵");
   //2.持久化
   s.save(p1);
    //此時p1已經可以在資料庫中找到
   t.commit();
   s.close();
}} 

1.4 爲了運行當然要配置資料庫:我以mysql資料庫爲例子:(只用勞動1次即可)

hibernate.properties 在hibernate根源程式的根目錄可以找到此文件模板,copy到我們的類的根目錄。即:“..\h”

## MySQL## 前兩行人家都給你填好了,只用填資料庫連接和username,password
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class org.gjt.mm.mysql.Driver
hibernate.connection.url jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK
hibernate.connection.username roothibernate.connection.password

1.5 運行TestPerson類,在mysql中觀察create好的表person和其中的資料
ok!整個過程主要的是前3步:寫bean類(Persistent Object),寫o-r映射文件,寫存取測試類。


reply to postreply to post
飞翔的候鸟
話題樹型展開
人氣 標題 作者 字數 發文時間
28506 [精華] hibernate 快速入門 ray_linn 3636 2003-07-15 16:21
24565 Re:hibernate 快速入門 ray_linn 3871 2003-07-15 16:30
18501 Re:hibernate 快速入門 tomyoung 384 2004-11-19 21:45
23922 Re:hibernate 快速入門 imdragon 181 2003-07-16 09:48
24719 Re:hibernate 快速入門 ray_linn 2599 2003-07-16 12:14
23133 Re:hibernate 快速入門 :O) victorpen 1769 2004-03-23 19:56
22371 Re:hibernate 快速入門 :O) victorpen 613 2004-03-24 17:12
21261 Re:hibernate 快速入門 belliwu 69 2004-06-03 11:11
18137 Re:hibernate 快速入門 tomyoung 2229 2004-11-18 02:21
15806 Re:hibernate 快速入門 todayhill 81 2004-11-18 21:28
15949 Re:hibernate 快速入門 tomyoung 1041 2004-11-18 22:54
16096 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