国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Hibernate 3新增XML關(guān)系持久性介紹

2019-11-18 15:40:40
字體:
供稿:網(wǎng)友

非常感謝最近發(fā)布的Hibernate 3中的xml持久性特性,java開發(fā)者現(xiàn)在擁有了一個框架組件,它為易于實現(xiàn)的對象關(guān)系(OR)和XML持久性提供了高效的和一致的方法。

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

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

XML持久性為什么重要

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

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

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

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

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

  實際例子:價格目錄同步

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

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

PRodUCts>
<product prod_id="3" sku="100101">
<description>Athlete mode body fat scale</description>
<list_price>100.00</list_price>
<drop_price>60.00</drop_price>
</product>
<product prod_id="4" sku="100102">
<description>Thermometer</description>
<list_price>20.00</list_price>
<drop_price>11.00</drop_price>
</product>
</products>

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

CREATE TABLE PRODUCT
(
id INT UNIQUE NOT NULL,
description VARCHAR(45) NOT NULL,
sku VARCHAR(45) UNIQUE NOT NULL,
list_price FLOAT,
base_price FLOAT,
order_price FLOAT,
CONSTRAINT PK_PRODUCT PRIMARY KEY (id )
)

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

/** Product對象表現(xiàn)了定價目錄項*/
public class Product {
int id;
String sku;
String description;
Double listPrice;
Double basePrice;
Double orderPrice;

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

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="demo">
<class name="Product"
table="product"
node="product">
<id name="id"
type="int"
node="@prod_id"
column="id">
</id>
<property name="sku" node="@sku" column="sku" not-null="true"/>
<property name="description" node="description" column="description" not-null="true"/>
<property name="listPrice" node="list_price" column="list_price" />
<property name="basePrice" node="drop_price" column="base_price"/>
<property name="orderPrice" column="order_price"/>
</class>
</hibernate-mapping>

   在這種情況下,Hibernate的XML關(guān)系持久性就非常方便了。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 同仁县| 临泉县| 高尔夫| 纳雍县| 登封市| 绩溪县| 会昌县| 东乡族自治县| 义马市| 嫩江县| 黄平县| 耿马| 大洼县| 滕州市| 广东省| 澄迈县| 勐海县| 凭祥市| 天全县| 金湖县| 株洲市| 漯河市| 高淳县| 富源县| 秭归县| 大英县| 临城县| 天台县| 金阳县| 高平市| 星子县| 平南县| 肇东市| 东辽县| 海林市| 东丽区| 丘北县| 翼城县| 金乡县| 治多县| 宁国市|