日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
簡(jiǎn)述Hibernate3中的XML持久性

最近發(fā)布的Hibernate 3  XML持久性特性,Java開發(fā)者現(xiàn)在擁有了一個(gè)框架組件,它為易于實(shí)現(xiàn)的對(duì)象關(guān)系(OR)和XML持久性提供了高效的和一致的方法。下面加以說明。

作為一家“創(chuàng)意+整合+營(yíng)銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們?cè)跇I(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)公司提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、創(chuàng)意表現(xiàn)、網(wǎng)頁(yè)制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營(yíng)銷運(yùn)營(yíng)等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營(yíng)模式與有效的網(wǎng)絡(luò)營(yíng)銷方法,創(chuàng)造更大的價(jià)值。

Hibernate的易用性、高性能和對(duì)象關(guān)系持久性等高級(jí)特性給IT界帶來了很大的驚喜。Hibernate的最新版本(版本3,3月29日發(fā)布的)給產(chǎn)品API帶來了一個(gè)重要的新特性:Hibernate 3 XML持久性。有了Hibernate 3 之后,Java應(yīng)用程序開發(fā)者可以輕易地把XML文檔合并到關(guān)系型數(shù)據(jù)庫(kù)中。

這個(gè)新特性應(yīng)該明確地告訴已有的Hibernate開發(fā)者,因?yàn)樗沧裱璓OJO(純的舊Java對(duì)象)相同的一致性方法,需要學(xué)習(xí)的知識(shí)最少。Hibernate 3 XML持久性的優(yōu)點(diǎn)也應(yīng)該介紹給新用戶。本文講解的是Hibernate 3持久性方法。

XML持久性為什么重要

大多數(shù)大型商業(yè)數(shù)據(jù)庫(kù)都支持某種形式的本地XML持久性。由于XML持久性是一個(gè)相對(duì)較新的機(jī)制--即使對(duì)大型廠商也是如此,這個(gè)領(lǐng)域中的標(biāo)準(zhǔn)還在不斷地浮現(xiàn)。其結(jié)果是,為了把無處不在的關(guān)系型持久性機(jī)制與日益增長(zhǎng)的XML解決方案集成在一起,架構(gòu)師必須依賴廠商特定的特性或者實(shí)現(xiàn)定制的XML持久性框架組件。這兩個(gè)選擇都沒有太大的吸引力。廠商特定的特性不是普及的,因?yàn)榭赡墚a(chǎn)生廠商封鎖(lock-in),而定制的框架組件實(shí)現(xiàn)可能耗費(fèi)大量的時(shí)間和財(cái)力,導(dǎo)致代碼難于維護(hù)。

在OR(對(duì)象關(guān)系)持久性方面,Hibernate XML持久性是一個(gè)自然而然的解決方案。它可以跨越Hibernate支持的所有關(guān)系型平臺(tái)(如虛擬的或真實(shí)的關(guān)系型平臺(tái))移動(dòng),允許自由的遷移對(duì)象、基于XML的應(yīng)用程序和集成解決方案而不用擔(dān)心下層的關(guān)系型實(shí)現(xiàn)方法。

體系結(jié)構(gòu)的細(xì)節(jié)信息

Hibernate是一個(gè)良好架構(gòu)的框架組件,它無縫地利用了本地的環(huán)境,不需要用戶進(jìn)行任何特殊的干涉或安裝操作。從一個(gè)數(shù)據(jù)庫(kù)切換到另外一個(gè)數(shù)據(jù)庫(kù)通常只需要改變驅(qū)動(dòng)程序,并配置Hibernate(在線配置設(shè)置信息)來使用另外一種數(shù)據(jù)庫(kù)語(yǔ)言。

Hibernate利用dom4j框架組件進(jìn)行XML的分析和維護(hù)。如果需要完全利用Hibernate的XML特性,你就必須對(duì)dom4j非常熟悉。一般來說,你會(huì)發(fā)現(xiàn)dom4j比Java提供的JAXP或與JAXP兼容的XML分析器要容易使用一些。它要求我們學(xué)習(xí)的相關(guān)知識(shí)較少,并且利用最少的dom4j知識(shí)你就能夠高效率地使用Hibernate XML持久性。

實(shí)際例子:價(jià)格目錄同步

通用的電子商務(wù)案例可以演示XML關(guān)系持久性機(jī)制的作用。我們來考慮一個(gè)示例,在這個(gè)例子中XML集成了在線零售商和供應(yīng)商之間的產(chǎn)品標(biāo)價(jià)目錄。

該電子目錄包含了已標(biāo)價(jià)的產(chǎn)品列表。在線商店銷售產(chǎn)品,通過自己的存貨清單來管理(類似于Amazon與Toys-R-Us和運(yùn)動(dòng)產(chǎn)品商店之間的關(guān)系)。為了精確地和有效地反映價(jià)格的變化,在線零售商必須頻繁地接收產(chǎn)品價(jià)格信息。它把這些信息存放為XML文檔,如下所示:

 
 
 
  1. <products>  
  2. <product prod_id="3" sku="100101">   
  3. <description>Athlete mode body fat scale</description>  
  4. <list_price>100.00</list_price>  
  5. <drop_price>60.00</drop_price>  
  6. </product>   
  7. <product prod_id="4" sku="100102">  
  8. <description>Thermometer</description>  
  9. <list_price>20.00</list_price>  
  10. <drop_price>11.00</drop_price>  
  11. </product>  
  12. </products>  
  13.  

全面的主要的產(chǎn)品價(jià)格列表存儲(chǔ)在數(shù)據(jù)庫(kù)中,如下所示:

 
 
 
  1. CREATE TABLE PRODUCT  
  2. (  
  3. id INT UNIQUE NOT NULL,  
  4. description VARCHAR(45) NOT NULL,  
  5. sku VARCHAR(45) UNIQUE NOT NULL,  
  6. list_price FLOAT,  
  7. base_price FLOAT,  
  8. order_price FLOAT,  
  9. CONSTRAINT PK_PRODUCT PRIMARY KEY (id )  

在線零售商通過已有的OR映射提供定價(jià)目錄的Web表現(xiàn)形式,定價(jià)產(chǎn)品都表現(xiàn)為demo.Product Java對(duì)象:

 
 
 
  1. /** Product對(duì)象表現(xiàn)了定價(jià)目錄項(xiàng)*/  
  2. public class Product {  
  3. int id;  
  4. String sku;  
  5. String description;  
  6. Double listPrice;  
  7. Double basePrice;  
  8. Double orderPrice; 

這些對(duì)象按照下面的方式映射(為了清楚,我們列出了列名,盡管在屬性和列名相匹配的時(shí)候Hibernate可以自動(dòng)地把屬性映射為列名):

 
 
 
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4. "替換hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="demo">  
  6. <class name="Product"   
  7. table="product" 
  8. node="product">  
  9. <id name="id"   
  10. type="int" 
  11. node="@prod_id" 
  12. column="id">  
  13. </id>  
  14. <property name="sku" node="@sku" column="sku" not-null="true"/>  
  15. <property name="description" node="description" column="description" not-null="true"/>   
  16. <property name="listPrice" node="list_price" column="list_price" />  
  17. <property name="basePrice" node="drop_price" column="base_price"/>  
  18. <property name="orderPrice" column="order_price"/>  
  19. </class>  
  20. </hibernate-mapping> 

在這種情況下,Hibernate的XML關(guān)系持久性就非常方便了。由于該電子商務(wù)應(yīng)用程序接收了包含產(chǎn)品價(jià)格更新的XML,它就利用 Hibernate的XML持久性機(jī)制把這些XML寫入到產(chǎn)品數(shù)據(jù)庫(kù)中。Hibernate提供了幾種XML持久性選擇,包括Hibernate的 saveOrUpdate方法:

 
 
 
  1. document = saxReader.read(inputXML);  
  2. List users = document.selectNodes("http://product");  
  3. try {  
  4.   Session session = ibernateUtil.sessionFactory.openSession();  
  5.   Transaction transaction = session.beginTransaction();  
  6.   Session dom4jSession = session.openSession(EntityMode.DOM4J);  
  7.   Iterator iter = users.iterator();  
  8.   while (iter.hasNext()) {  
  9.    Object next = iter.next();  
  10.    dom4jSession.saveOrUpdate("demo.Product", next );  
  11.   }// end while  
  12. transaction.commit();  
  13. session.close();  

XML映射語(yǔ)法

上面的例子中使用的映射文件不用于Hibernate 2的映射文件。Hibernate 3引入了幾種專門用于XML持久性的新映射類型。

主要的新映射屬性是節(jié)點(diǎn)(node),它與被映射的XML文檔中的一個(gè)元素或文檔中的屬性相關(guān)聯(lián)。一個(gè)"節(jié)點(diǎn)"可能表現(xiàn)為下面的某種映射:· "element-name(元素名)":在例子中,<product></product>元素會(huì)被表示為node="product"。· "@attribute-name(屬性名)":在例子中,node="@sku"會(huì)被映射為XML屬性<product sku="1001001">?!?".(句點(diǎn))":映射為元素的父元素(例如<products>就<product>是的父元素)?!?"element-name/@attribute-name(元素名/屬性名)":映射為命名元素的屬性(product/@sku)。

XML持久性并非Hibernate的主要任務(wù)

Hibernate 3框架組件高效率地實(shí)現(xiàn)了目前最通用的一些方法(除了LDAP之外)。Java社團(tuán)現(xiàn)在擁有了一套框架組件,它為易于實(shí)現(xiàn)的OR和XML持久性提供了高效率的和一致性的方法。

在我們知道上面一些內(nèi)容之后,了解Hibernate項(xiàng)目的任務(wù)是很重要的。盡管Hibernate 3 XML特性非常有用、有吸引力,但是它們并不是用來代替最流行的XML編組(marshalling)和轉(zhuǎn)換(transformation)框架組件的。不管它的OR映射解決方案多么完善,我們都不應(yīng)該期待Hibernate成為主流的XML維護(hù)框架組件(根據(jù)Hibernate的作者Gavin King在TheServerSide Java Symposium 2005上的發(fā)言)。

由于這個(gè)原因,你應(yīng)該把XML持久性特性看作是已有的強(qiáng)大的Hibernate框架組件的有用的擴(kuò)展,它允許你輕易地把現(xiàn)在流行的其它的數(shù)據(jù)表現(xiàn)機(jī)制合并到自己的應(yīng)用程序中。但是,如果你必須處理復(fù)雜的集成和轉(zhuǎn)換情況,最好去尋找其它的XML專用的框架組件。

【編輯推薦】

  1. Hibernate入門學(xué)習(xí)寶典
  2. Hibernate屬性簡(jiǎn)單分析
  3. Struts-Spring-Hibernate案例
  4. 簡(jiǎn)述Hibernate配置連接池
  5. 對(duì)Hibernate中g(shù)et()與load()不同點(diǎn)分析

新聞標(biāo)題:簡(jiǎn)述Hibernate3中的XML持久性
本文地址:http://www.dlmjj.cn/article/cdjgdhd.html