成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡述Hibernate 3中的XML持久性

開發 后端
在OR持久性方面,Hibernate 3 XML持久性是一個自然而然的解決方案。它可以跨越Hibernate支持的所有關系型平臺移動,允許自由的遷移對象、基于XML的應用程序和集成解決方案而不用擔心下層的關系型實現方法。

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

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

這個新特性應該明確地告訴已有的Hibernate開發者,因為它也遵循POJO(純的舊Java對象)相同的一致性方法,需要學習的知識最少。Hibernate 3 XML持久性的優點也應該介紹給新用戶。本文講解的是Hibernate 3持久性方法。

XML持久性為什么重要

大多數大型商業數據庫都支持某種形式的本地XML持久性。由于XML持久性是一個相對較新的機制--即使對大型廠商也是如此,這個領域中的標準還在不斷地浮現。其結果是,為了把無處不在的關系型持久性機制與日益增長的XML解決方案集成在一起,架構師必須依賴廠商特定的特性或者實現定制的XML持久性框架組件。這兩個選擇都沒有太大的吸引力。廠商特定的特性不是普及的,因為可能產生廠商封鎖(lock-in),而定制的框架組件實現可能耗費大量的時間和財力,導致代碼難于維護。

在OR(對象關系)持久性方面,Hibernate XML持久性是一個自然而然的解決方案。它可以跨越Hibernate支持的所有關系型平臺(如虛擬的或真實的關系型平臺)移動,允許自由的遷移對象、基于XML的應用程序和集成解決方案而不用擔心下層的關系型實現方法。

體系結構的細節信息

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

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

實際例子:價格目錄同步

通用的電子商務案例可以演示XML關系持久性機制的作用。我們來考慮一個示例,在這個例子中XML集成了在線零售商和供應商之間的產品標價目錄。

該電子目錄包含了已標價的產品列表。在線商店銷售產品,通過自己的存貨清單來管理(類似于Amazon與Toys-R-Us和運動產品商店之間的關系)。為了精確地和有效地反映價格的變化,在線零售商必須頻繁地接收產品價格信息。它把這些信息存放為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.  

全面的主要的產品價格列表存儲在數據庫中,如下所示:

  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映射提供定價目錄的Web表現形式,定價產品都表現為demo.Product Java對象:

  1. /** Product對象表現了定價目錄項*/  
  2. public class Product {  
  3. int id;  
  4. String sku;  
  5. String description;  
  6. Double listPrice;  
  7. Double basePrice;  
  8. Double orderPrice; 

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

  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關系持久性就非常方便了。由于該電子商務應用程序接收了包含產品價格更新的XML,它就利用 Hibernate的XML持久性機制把這些XML寫入到產品數據庫中。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映射語法

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

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

XML持久性并非Hibernate的主要任務

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

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

由于這個原因,你應該把XML持久性特性看作是已有的強大的Hibernate框架組件的有用的擴展,它允許你輕易地把現在流行的其它的數據表現機制合并到自己的應用程序中。但是,如果你必須處理復雜的集成和轉換情況,最好去尋找其它的XML專用的框架組件。

【編輯推薦】

  1. Hibernate入門學習寶典
  2. Hibernate屬性簡單分析
  3. Struts-Spring-Hibernate案例
  4. 簡述Hibernate配置連接池
  5. 對Hibernate中get()與load()不同點分析
責任編輯:仲衡 來源: csdn
相關推薦

2009-09-27 09:55:38

Hibernate持久

2013-07-09 10:18:58

VDI虛擬化

2021-05-25 10:20:31

Python持久性編程語言

2009-09-29 10:37:29

Hibernate持久

2009-09-29 15:58:22

Hibernate映射

2022-10-27 08:00:32

DockerAWS云容器

2019-09-06 09:50:52

云存儲硬盤云服務

2021-06-02 08:00:00

MOSH開源工具

2014-06-05 14:41:05

亞馬遜AWS

2009-09-15 16:37:06

Google App 持久性

2009-09-24 16:39:20

Hibernate傳播

2021-01-22 10:40:08

Linux文件內存

2017-05-08 08:32:51

2021-12-29 14:04:14

惡意軟件黑客網絡攻擊

2023-12-08 08:26:05

數據存儲持久性

2009-09-29 16:41:58

Hibernate S

2009-09-23 09:16:25

Hibernate復合

2009-09-25 16:57:49

Hibernate查詢

2009-09-25 12:31:13

Hibernate映射

2009-09-29 17:22:30

Hibernate S
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产一区二区三区 | 毛片a | 黄a在线观看 | 国产日韩精品久久 | 久久久久国产一区二区三区 | 日本视频在线播放 | 婷婷综合激情 | 国产成人一区二 | 国产免费一区 | 中文字幕 视频一区 | 日韩中文一区二区三区 | 成人乱人乱一区二区三区软件 | 国产成人精品999在线观看 | 亚洲精品在线免费播放 | av看片网站| 国产成人免费视频网站高清观看视频 | 自拍中文字幕 | 亚洲在线一区二区 | 国产一区三区视频 | 久久久久国产一级毛片 | 日韩三区在线 | 五月婷婷丁香 | 亚洲精品中文在线观看 | 日本在线综合 | 91精品国产一区二区在线观看 | 日本一区二区三区四区 | 黄色一级免费观看 | 国产成人精品一区二区三区视频 | 一区二区精品 | 久久精品成人一区 | av官网在线| 看片国产 | 成年人在线观看视频 | 免费看国产a | 在线成人免费视频 | 欧美一区二 | 久久69精品久久久久久久电影好 | 91精品国产综合久久久久久首页 | 久久精品综合 | 牛牛热在线视频 | 国产精品一区一区 |