在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

我的O/R Mapping實際開發經驗之談(二)

我的O/R Mapping實際開發經驗之談(二)

更新時間:2019-05-30 文章作者:未知 信息來源:網絡 閱讀次數:

三、現有的O/R Mapping產品介紹

O/R Mapping已經出現很久了, 產品很多:Java方面的有Hibernate、jdo等。.Net的有ObjectSpaces、Grove.Net、OJB.Net、AtomsFramework、Objectz.Net、OPF.Net等。



1、Hibernate

Hibernate是一個java開放源代碼的O/R Mapping,它對JDBC進行了輕量級的對象封裝,可以非常靈活的用對象編程思維來操縱數據庫。現在以一個簡單的demo看下Hibernate是怎樣使用的:



首先Hibernate需要一個hibernate.cfg.xml配置文件

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>

<session-factory>

<!-數據庫的配置 -->

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/quickstart </property>

<property name="hibernate.connection.username">dbusername</property>

<property name="hibernate.connection.password">dbpassword</property>

<property name="hibernate.connection.pool.size">30</property>

<property name="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<!-持久化類映射的XML文件名 -->

<Mapping resource=" ormappingdemo.hibernate.Customer.xml"/>

</session-factory>

</hibernate-configuration>





一個需要持久化類的表:Customer

CREATE TABLE dbo.Customer (

customerID int,

CustomerName varchar(100) NULL,

)





在Hibernate需要定義一個Customer.xml映射文件

<?xml version="1.0"?>

<!DOCTYPE hibernate-Mapping

PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"

"http://hibernate.sourceforge.net/hibernate-Mapping-2.0.dtd">



<hibernate-Mapping>



<!-定義持久化類的類名和所映射的表名 -->

<class name="ormappingdemo.hibernate.Customer" table="Customer">



<!-定義主鍵 -->

<id name="customerID" type="int" unsaved-value="null" >

<column name="customerID " sql-type="int" not-null="true"/>



<!-主鍵的生成規則,"increment"表示該主鍵是自遞增,hibernate有10多種的主鍵生成方法-->

<generator class="increment">

</generator>

</id>

<!-定義類的屬性 -->

<property name="Name">

<!-所映射的字段,這里可以看出表的字段名可以跟類屬性名完全不同 -->

<column name="CustomerName" sql-type="varchar(100)" not-null="true"/>

</property>

</class>

</hibernate-Mapping>





Customer.xml里面定義了很多類的屬性和表的字段的詳細信息,如果有變動的,只需要更改這個xml文件就行。Hibernate定義mapping比較靈活, property也可以不定義property里面的內容,用缺省的形式。

除了這個xml文件,還要有一個持久化類:Customer

package ormappingdemo.hibernate;



public class Customer {



private int customerID;

private String name;



public Customer() {

}

//全部的屬性都要通過get、set方法來訪問

public int getCustomerID() {

return customerID;

}



public void setCustomerID(int customerID) {

this.customerID = customerID;

}



public String getName() {

return name;

}



public void setName(String name) {

this.name = name;

}

}





Customer是個“瘦”類,持久化類不需要實現什么特別的接口,也不需要從一個特別的持久化父類繼承下來。到現在為止,一個Customer的映射的持久化類工作完成,而這部分工作,可以通過Hibernate的一個Schema 生成器的工具自動完成。現在,我們可以使用這個類了:

  //建立一個Session工廠

  SessionFactory sessionFactory =

new Configuration().configure().buildSessionFactory();



  //打開一個Session

  Session session = sessionFactory.openSession();



  //開始事務

  Transaction tx = session.beginTransaction();



  //初始化一個持久化類

  Customer theCustomer = new Customer();



  //賦值

  theCustomer.setName("Karl");



  //保存新建的持久化類

  session.save(theCustomer);



  //提交事務

  tx.commit();



  //關閉Session

  session .close();





這段代碼,你看不出任何傳統跟數據庫打交道的代碼,需要的只是用持久化類和幾個工廠化的類,就可以實現全部的功能。Hibernate還有一種極其強大的查詢語言HQL,看上去很像SQL。但HQL是完全面向對象的。

Transaction tx = session.beginTransaction();



//通過HQL語言進行查詢。注意,這里的HQL是對象與屬性,不是表和字段。如Name是持久化類的屬性,真正所映射的表字段名是CustomerName

Query query = session.createQuery("select Name from Customer as customer where customer.customerID>=:ID");



query.setInteger("ID", 1);



//用迭代遍歷Customer

for (Iterator it = query.iterate(); it.hasNext();) {

Customer theCustomer = (Customer) it.next();

out.println("Customer : " + theCustomer.getName() );

}



tx.commit();





Hibernate的功能極其強大,結構合理,并且完全開發源代碼,不需要license。無論是否用java,仔細研究Hibernate,對學習和開發O/R Mapping都有莫大的益處。



2、Castor JDO

Castor JDO(Java 數據對象 (Java Data Objects))也是一種開放源碼的、百分之百 Java 數據綁定框架。

Castor JDO 最早發布于 1999 年 12 月,它是第一批可用的開放源碼數據綁定框架之一。自那時以來,這項技術已獲得了長足的發展。現在,往往將 Castor JDO 同許多其它技術(既有開放源碼的,也有商業的)結合使用,以將 Java 對象模型綁定到關系數據庫、XML 文檔以及 LDAP 目錄上。

同樣這一節也是以一個demo來講一下Castor JDO,

Castor JDO 叫做 Java 數據對象 同樣用了類似于 類似 javabean 的類來存儲字據并表示數據之間的關系。

應用程序主要負責設置數據庫連接和管理事務處理。數據庫的設置是通過一個與映射文件相連接的獨立的XML文件來實現的。

看看下面如同Hibernate的sessionFactory一樣,Castor JDO 也封裝了一個處理數據庫資源的類,是org.exolab.castor.jdo.JDO,在里面定義了數據庫的名字和屬性,并被用來打開一個數據庫連接。

我們可以通過使用setConfiguration命令來指定配置文件URL,我們可以裝載數據庫的配置。使用同一個配置來創建多個JDO對象只會裝載配置文件一次。



下面的代碼片展示了在如何打開一個數據庫,并進行一個事務處理,然后關閉數據庫的過程。

// 定義JDO對象

jdo = new JDO();

jdo.setDatabaseName( "CustomerDemo" );

jdo.setConfiguration( "database.xml" );

jdo.setClassLoader( getClass().getClassLoader());

// 獲取一個新的數據庫

db = jdo.getDatabase();

// 開始事務處理

db.begin();



// 事務過程

. . .

// 提交事務,關閉數據庫

db.commit();

db.close();




<>

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 国内外免费激情视频| 99热成人精品热久久66| 欧美wwwwwww| 四虎永久在线精品无码视频| 青青草精品视频在线| 9色视频在线观看| 国产欧美123| 无码人妻精品一区二区蜜桃百度| 国产一级黄色录像片| 日本高清免费观看| 中文字幕精品在线播放| 久久亚洲a v| 日韩少妇内射免费播放| 国产精品动漫网站| 中文字幕av不卡在线| 日韩一区二区三区久久| 中文字幕剧情在线观看| 国产精品视频一二三四区| 五月天激情图片| 黄色免费福利视频| 天天视频天天爽| 女同性恋一区二区| 亚洲人成无码网站久久99热国产 | 日本成人黄色网| 欧美精品性生活| 国产精品一区在线免费观看| 人人妻人人澡人人爽欧美一区双 | 成人免费播放器| 香蕉视频网站入口| 精品久久免费观看| 欧美午夜性视频| 亚洲xxx在线观看| 人妻互换免费中文字幕| 精品久久久噜噜噜噜久久图片 | 岳毛多又紧做起爽| 黄色www在线观看| 噜噜噜久久亚洲精品国产品麻豆| 视频在线观看免费高清| 男人天堂a在线| 999久久久精品视频| 免费不卡av在线| 久国产精品视频| 欧美日韩激情视频在线观看| 日韩不卡的av| 免费男同深夜夜行网站| 久艹在线免费观看| 福利视频999| 波多野结衣作品集| 久久精品国产sm调教网站演员| 亚洲va在线va天堂va偷拍| 国产91xxx| 欧美一级爱爱视频| 超碰中文字幕在线观看| 亚洲第一中文av| 国产成人精品视频免费看| 五月天激情图片| 特级毛片在线免费观看| 色婷婷狠狠18| 亚洲少妇久久久| 亚洲人成色77777| 国产91美女视频| 国产一区二区在线视频播放| 国产精品国三级国产av| 日韩精品第1页| 特色特色大片在线| 只有这里有精品| 特级黄色录像片| 男女视频在线观看网站| 激情图片中文字幕| www.久久久久久久久久久| 校园春色 亚洲色图| 欧美日韩在线成人| 日日摸天天爽天天爽视频| 无码人妻丰满熟妇区五十路百度| 少妇高潮喷水在线观看| av黄色在线网站| 日韩精品无码一区二区三区免费 | 天堂在线一区二区三区| 亚洲日本黄色片| 超碰免费在线公开| 免费观看亚洲视频| 久久黄色片视频| 久久久精品麻豆| √天堂资源在线| 黄色成人在线免费观看| 18禁免费观看网站| 9久久婷婷国产综合精品性色| 永久免费的av网站| 今天免费高清在线观看国语| 800av在线免费观看| 国产精品va无码一区二区| 国产福利一区视频| 国产福利精品一区二区三区| 999久久欧美人妻一区二区| 婷婷无套内射影院| 在线观看国产一级片| 久久香蕉视频网站| 精品少妇无遮挡毛片| 日韩第一页在线观看| 国产成人无码a区在线观看视频| 成人在线观看a| 日韩中文在线字幕| 青青青国产在线视频| 日产精品久久久久久久蜜臀| 九热视频在线观看| 大伊香蕉精品视频在线| 日韩高清第一页| 浮妇高潮喷白浆视频| 亚洲热在线视频| 欧美自拍小视频| 日韩xxxx视频| 婷婷视频在线播放| 99热手机在线| aa在线观看视频| 精品国产乱码久久久久久1区二区| 免费在线观看视频a| 九九九九九九九九| 欧美精品无码一区二区三区| 国产女主播自拍| 国产又粗又大又爽的视频| 777视频在线| 亚洲一二三区av| 91猫先生在线| 久在线观看视频| 欧美日韩亚洲国产成人| 天堂av2020| 国内自拍视频网| 熟女人妇 成熟妇女系列视频| 久久手机在线视频| www.夜夜爱| 91网站在线观看免费| 欧美xxxx吸乳| 日本大胆人体视频| 影音先锋成人资源网站| 日韩最新中文字幕| 在线观看18视频网站| 在线观看18视频网站| 久久久久久久香蕉| 黄色成人在线免费观看| 丁香婷婷综合激情| 国产精品久久中文字幕| 国产一区二区网| 国产福利视频在线播放| www.亚洲天堂网| 99免费视频观看| www.超碰97.com| 天天色天天干天天色| 国产亚洲精品久久久久久久| 国产肉体ⅹxxx137大胆| 国产人妻777人伦精品hd| 六月婷婷在线视频| 熟女人妇 成熟妇女系列视频| 免费观看精品视频| 午夜视频在线网站| 日本a级片在线观看| 国内精品视频一区二区三区| 久草热视频在线观看| 九九九在线观看视频| 99精品视频免费版的特色功能| 嫩草影院中文字幕| 欧美日韩第二页| 在线a免费观看| 一区二区传媒有限公司| 一区二区三区视频在线观看免费| 精品国产鲁一鲁一区二区三区| 日本免费成人网| 日韩大片一区二区| 老汉色影院首页| 成年人视频网站免费观看| 日韩不卡的av| 男人的天堂99| 日韩中文字幕亚洲精品欧美| 成年人视频观看| 在线观看18视频网站| 日日碰狠狠躁久久躁婷婷| 欧美aaa在线观看| jizz欧美激情18| 欧美这里只有精品| 想看黄色一级片| 97国产精东麻豆人妻电影| 久久精品亚洲天堂| 久久精品网站视频| 亚洲理论电影在线观看| 涩多多在线观看| 国产aaaaa毛片| 国产在线观看福利| av动漫在线免费观看| 激情图片中文字幕| 亚洲激情在线观看视频| 欧美成人xxxxx| 国产www免费| 亚洲国产一二三精品无码 | 五月天六月丁香| 精品久久久99| 久久人人爽av| 尤蜜粉嫩av国产一区二区三区| 青青青青草视频| 男女猛烈激情xx00免费视频| 男人j进女人j| 黄色一级大片免费|