在线看毛片视频-国产免费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>
  • 欧美日本视频在线观看| 午夜激情在线观看视频| 色呦色呦色精品| 中文字幕无码不卡免费视频| 1024精品视频| 大肉大捧一进一出好爽视频| 久激情内射婷内射蜜桃| 国产69精品久久久久999小说| 狠狠精品干练久久久无码中文字幕| 亚洲欧洲日本精品| 九九九九九国产| 大桥未久一区二区三区| 中文字幕超清在线免费观看| 国产一二三四区在线观看| 国产一区一区三区| 国产曰肥老太婆无遮挡| 69堂免费视频| 男女视频在线看| 国产91av视频在线观看| 国产一线二线三线女| 无罩大乳的熟妇正在播放| 日韩有码免费视频| gai在线观看免费高清| 国产高潮呻吟久久久| av日韩在线看| 免费看a级黄色片| 一级日本黄色片| 久久av综合网| 蜜臀一区二区三区精品免费视频 | 污污网站免费看| 国产av第一区| 国产在线观看福利| 三年中文在线观看免费大全中国| 亚洲图片 自拍偷拍| 97在线免费视频观看| 日本熟妇人妻中出| 蜜臀av.com| 中文字幕天天干| 国产色一区二区三区| 超碰在线人人爱| 国产精品视频网站在线观看| 欧美日韩怡红院| 岛国大片在线播放 | 最近中文字幕免费mv| 日本wwww视频| 久久视频免费在线| 亚洲天堂2018av| 国产精品丝袜久久久久久消防器材| 最新国产黄色网址| 久久9精品区-无套内射无码| 日本特级黄色大片| 天天综合网日韩| 男人的天堂99| 青青艹视频在线| 99久久久精品视频| 99精品视频网站| 性生生活大片免费看视频| 两根大肉大捧一进一出好爽视频| www.黄色网址.com| 亚洲精品综合在线观看| 国产福利一区视频| 日批视频在线免费看| 男人天堂av片| 妞干网在线观看视频| 青青草影院在线观看| 色呦呦网站入口| 天天久久综合网| 五月天男人天堂| 国产又粗又硬又长| 天堂av在线中文| 8x8x华人在线| 国产一线二线三线女| 欧美视频在线第一页| 人妻无码一区二区三区四区| 潘金莲一级淫片aaaaa免费看| 做爰高潮hd色即是空| 日本福利视频在线观看| 黄色网zhan| 成人免费性视频| 欧美精品一区免费| 国产一级做a爰片久久| 一级黄色香蕉视频| 超碰成人在线播放| 国产高清不卡无码视频| 青草青青在线视频| 欧美a在线视频| 色呦色呦色精品| 日韩小视频网站| 91激情视频在线| 91免费网站视频| 欧美成人一区二区在线观看| 中文久久久久久| 中文字幕第一页亚洲| 久在线观看视频| 亚洲欧美国产中文| 日韩欧美不卡在线| 五月婷婷狠狠操| 国产肉体ⅹxxx137大胆| 青青青国产在线视频| 日本福利视频导航| 国产精品免费观看久久| 伊人国产在线视频| 国产午夜大地久久| 99精品视频国产| 国产青青在线视频| 天天摸天天舔天天操| 国内少妇毛片视频| 亚洲欧美天堂在线| 久久国产亚洲精品无码| 在线免费黄色小视频| 可以在线看的黄色网址| 日韩欧美视频免费在线观看| 国产熟人av一二三区| 欧美一级片免费播放| 在线播放黄色av| www.xxx亚洲| 狠狠97人人婷婷五月| 2022中文字幕| 日韩视频在线观看视频| 色婷婷狠狠18| av动漫免费看| 又粗又黑又大的吊av| 国产经典久久久| 激情文学亚洲色图| 男人靠女人免费视频网站| 欧美日韩激情四射| 欧美 日韩 国产 在线观看| 91精品无人成人www| 亚洲熟妇av一区二区三区| 无码 制服 丝袜 国产 另类| 加勒比海盗1在线观看免费国语版| 91国内在线播放| 69久久久久久| 日韩在线一区视频| 欧美美女一级片| 99999精品| 久久久久久久久久久久久国产| 毛片毛片毛片毛片毛| 亚洲欧美天堂在线| www.国产福利| 男人的天堂视频在线| 9191国产视频| 97超碰人人澡| 18岁视频在线观看| 嫩草视频免费在线观看| 网站在线你懂的| 毛片在线视频观看| 免费看又黄又无码的网站| 男人天堂网视频| 天堂一区在线观看| 最新中文字幕久久| 日本欧美黄色片| 人人干人人视频| 欧美 另类 交| 日韩在线综合网| 日韩精品你懂的| youjizz.com亚洲| 给我免费播放片在线观看| 波多野结衣作品集| gogogo免费高清日本写真| av免费观看网| 女人高潮一级片| 日韩国产一级片| 久久久久久久久久一区| 国产九色porny| 日本超碰在线观看| 免费拍拍拍网站| 天堂在线中文在线| 成熟丰满熟妇高潮xxxxx视频| 一区二区三区免费播放| 国产精品无码电影在线观看 | 91插插插影院| 日韩a在线播放| 中文字幕免费高| 麻豆av免费在线| 每日在线观看av| 青娱乐精品在线| 人人爽人人av| 美女av免费在线观看| 中文字幕超清在线免费观看| 少妇人妻互换不带套| 蜜臀av色欲a片无码精品一区 | 国产一二三区在线播放| 777视频在线| 日韩免费高清在线| 久久精品国产sm调教网站演员| 亚洲高清在线不卡| 成人性视频欧美一区二区三区| 女女百合国产免费网站| 国内av一区二区| 向日葵污视频在线观看| 亚洲 高清 成人 动漫| 99er在线视频| 糖心vlog在线免费观看| 波多野结衣在线免费观看| 人人干人人干人人| 粉色视频免费看| 亚洲视频一二三四| 亚洲色图偷拍视频| 激情文学亚洲色图|