国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

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

我的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();




<>

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

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        成人午夜av影视| 久久久久久毛片| 91精品国产日韩91久久久久久| 欧美一级黄色片| 免费看精品久久片| 日韩欧美一区中文| 久久精品国产网站| 欧美一区二区三区精品| 性做久久久久久| 欧美一区午夜精品| 国产成人精品免费看| 日韩欧美在线不卡| 国产嫩草影院久久久久| 国产日产欧美一区二区三区| 欧美亚男人的天堂| 天天影视网天天综合色在线播放| 日韩欧美一二区| 2024国产精品| 国产91精品入口| 国产成人精品亚洲午夜麻豆| 色噜噜狠狠色综合中国| 成人夜色视频网站在线观看| 97久久久精品综合88久久| 国产在线不卡一卡二卡三卡四卡| 国产专区综合网| 在线一区二区视频| 国产精品久久久久影院| 日本一区二区高清| 日本aⅴ亚洲精品中文乱码| 国产乱人伦偷精品视频不卡| 欧美成人精品3d动漫h| 国产精品一卡二卡在线观看| 亚洲伊人色欲综合网| 麻豆91在线观看| 色妹子一区二区| 欧美一区二区三区在线电影 | 青娱乐精品在线视频| 国产精品77777竹菊影视小说| 欧美一级二级在线观看| 伊人开心综合网| 不卡一区二区三区四区| 欧美三级视频在线| 一区二区高清在线| 在线播放亚洲一区| 日本sm残虐另类| 91精品麻豆日日躁夜夜躁| 亚洲成av人在线观看| 欧美视频在线观看一区二区| 亚洲免费在线观看| 欧美性生活一区| 视频一区欧美日韩| 99久久国产综合色|国产精品| 国产精品伦一区| 成人性生交大合| 亚洲色图都市小说| 亚洲国产成人porn| 男人操女人的视频在线观看欧美| 欧美精品一卡二卡| 日韩精品久久久久久| 不卡区在线中文字幕| 亚洲丝袜精品丝袜在线| 欧美性猛交xxxxxxxx| 欧洲av一区二区嗯嗯嗯啊| 99热精品一区二区| 欧美一区二区三区小说| 成人午夜电影久久影院| 国产一区二区三区最好精华液| 精品国产一区二区三区久久久蜜月 | 亚洲午夜免费福利视频| 久久久777精品电影网影网| 欧美老人xxxx18| 欧美最猛性xxxxx直播| 激情综合网av| 日韩成人午夜电影| 亚洲美女屁股眼交3| 欧美成人一级视频| 欧美高清视频一二三区| 在线亚洲免费视频| 99天天综合性| 国产精品91一区二区| 91丝袜美女网| aa级大片欧美| 91在线观看成人| 91福利在线免费观看| 成人精品视频一区二区三区| 国内精品不卡在线| 成人精品免费视频| 精品一区二区三区欧美| 久久精品国产精品青草| 久久99久久精品| 天天亚洲美女在线视频| 91麻豆精品国产无毒不卡在线观看| 日韩欧美成人激情| 亚洲国产精品v| 亚洲免费观看高清完整版在线| 亚洲图片你懂的| 韩国一区二区在线观看| 欧美自拍偷拍一区| 91麻豆精品国产| 中文字幕一区av| 亚洲午夜电影网| 国产精品一区二区久久不卡| av在线播放成人| 国产精品护士白丝一区av| 亚洲精品写真福利| 国产精品中文字幕一区二区三区| 北条麻妃一区二区三区| 中文字幕亚洲一区二区av在线| 日本麻豆一区二区三区视频| 97se亚洲国产综合自在线不卡| 精品国内二区三区| 青青青爽久久午夜综合久久午夜| 欧美专区亚洲专区| 国产精品久久久一本精品| 国产iv一区二区三区| 色菇凉天天综合网| 国产精品亚洲午夜一区二区三区| 欧美老女人第四色| 亚洲成av人在线观看| 91福利在线导航| 美女国产一区二区三区| 欧美成人a视频| 国产在线播放一区| 欧美国产乱子伦 | 国产精品日产欧美久久久久| 日韩视频国产视频| 51午夜精品国产| 亚洲精品一区二区三区蜜桃下载| 欧美日韩国产电影| 91精品国产色综合久久| 免播放器亚洲一区| 久久久久99精品国产片| 成人免费毛片嘿嘿连载视频| 一区二区三区不卡在线观看 | 亚洲女爱视频在线| 亚洲欧美色图小说| 国产精品麻豆网站| 五月天视频一区| 国产在线国偷精品产拍免费yy| 欧美激情中文不卡| 久久久91精品国产一区二区精品 | 国产精品精品国产色婷婷| 91精品视频网| 91黄色在线观看| 亚洲h在线观看| 亚洲h动漫在线| 丝袜亚洲精品中文字幕一区| 免费成人美女在线观看.| 亚洲国产婷婷综合在线精品| 日本亚洲天堂网| 久久国内精品自在自线400部| 久久99久久久久久久久久久| 国产一区二区免费看| 成人动漫av在线| 欧美色图片你懂的| 亚洲国产精品ⅴa在线观看| 亚洲色图清纯唯美| 精品一区二区三区免费毛片爱| 在线一区二区三区四区五区| 国产欧美久久久精品影院| 97久久超碰精品国产| 91视频免费观看| 欧美片在线播放| 欧美美女一区二区| 一区二区成人在线| 国产激情视频一区二区在线观看 | 亚洲日本一区二区| 蜜臀精品久久久久久蜜臀| 欧美日韩免费视频| 亚洲精品自拍动漫在线| www.66久久| 中文字幕日韩一区| 欧美中文一区二区三区| 五月综合激情日本mⅴ| 国产精品白丝jk白祙喷水网站| 日韩欧美一区二区三区在线| 亚洲精品一区在线观看| 午夜精品久久久久久久久久久 | 亚洲午夜久久久久久久久久久| 蜜桃视频一区二区三区| 欧美高清视频一二三区 | 欧美www视频| 久久99精品久久久久婷婷| 日韩欧美一级特黄在线播放| 丝袜亚洲另类欧美综合| 2022国产精品视频| 成人综合激情网| 亚洲人成亚洲人成在线观看图片| 美女一区二区在线观看| 久久综合九色综合欧美亚洲| 久久精品国产精品亚洲综合| 日本一区二区三区四区 | 精品一区二区三区免费视频| 国产亚洲综合在线| 成人美女视频在线看| 亚洲精品乱码久久久久久日本蜜臀| 在线看日本不卡| 国产成a人亚洲精品| 99热精品一区二区| 一二三区精品福利视频|