亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hibernate2 參考文檔之一.txt

?? Hibernate使用說明書
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>

    <session-factory>

        <property name="connection.datasource">java:comp/env/jdbc/quickstart</property>
        <property name="show_sql">false</property>
        <property name="dialect">net.sf.hibernate.dialect.PostgreSQLDialect</property>

        <!-- Mapping files -->
        <mapping resource="Cat.hbm.xml"/>

    </session-factory>

</hibernate-configuration>
我們關(guān)閉了SQL命令的log,告訴Hibernate使用哪種SQL數(shù)據(jù)庫方言(dialet),還有如何得到JDBC連接(通過聲明數(shù)據(jù)源池綁定的JNDI地址)。方言是必需的,因?yàn)椴煌臄?shù)據(jù)庫都和SQL "標(biāo)準(zhǔn)"有一些出入。Hibernate會替你照管這些差異之處,發(fā)行包包含了所有主流的商業(yè)和開放源代碼數(shù)據(jù)庫的方言。 

SessionFactory是Hibernate的概念,對應(yīng)一個數(shù)據(jù)存儲源,如果有多個數(shù)據(jù)庫,可以創(chuàng)建多個XML配置文件,也在你的程序中創(chuàng)建多個Configuration和SessionFactory對象。 

在hibernate.cfg.xml中的最后一個元素聲明了Cat.hbm.xml是一個Hibernate XML映射文件,對應(yīng)持久化類Cat。這個文件包含了把POJO類映射到數(shù)據(jù)庫表(或多個數(shù)據(jù)庫表)的元數(shù)據(jù)。我們稍后就回來看這個文件。讓我們先編寫這個POJO類,再在聲明它的映射元數(shù)據(jù)。 

1.2. 第一個可持久化類
s Hibernate讓普通的Java對象(Plain Old Java Objects ,就是POJOs,有時候也稱作Plain Ordinary Java Objects)變成持久化類。一個POJO很像JavaBean,屬性通過getter和setter方法訪問,對外隱藏了內(nèi)部實(shí)現(xiàn)的細(xì)節(jié)。 

package net.sf.hibernate.examples.quickstart;

public class Cat {

    private String id;
    private String name;
    private char sex;
    private float weight;

    public Cat() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public float getWeight() {
        return weight;
    }

    public void setWeight(float weight) {
        this.weight = weight;
    }

}
Hibernate對屬性使用的類型不加限制。所有的Java JDK類型和原始類型(比如String,char和float)都可以被映射,也包括Java 集合框架(Java collections framework)中的類。你可以把它們映射成為值,值集合,或者與其他實(shí)體相關(guān)聯(lián)。id是一個特殊的屬性,代表了這個類的數(shù)據(jù)庫標(biāo)識符(主鍵),它對于類似于Cat這樣的實(shí)體是必需的。 

持久化類不需要實(shí)現(xiàn)什么特別的接口,也不需要從一個特別的持久化根類繼承下來。Hibernate也不需要使用任何編譯期處理,比如字節(jié)碼增強(qiáng)操作,它獨(dú)立的使用Java反射機(jī)制和運(yùn)行時類增強(qiáng)(通過CGLIB)。所以,在Hibernate中,POJO的類不需要任何前提條件,我們就可以把它映射成為數(shù)據(jù)庫表。 

1.3. 映射cat
Cat.hbm.xml映射文件包含了對象/關(guān)系映射所需的元數(shù)據(jù)。 

元數(shù)據(jù)包含了持久化類的聲明和把它與其屬性映射到數(shù)據(jù)庫表的信息(屬性作為值或者是指向其他實(shí)體的關(guān)聯(lián))。 

<?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="net.sf.hibernate.examples.quickstart.Cat" table="CAT">

        <!-- A 32 hex character is our surrogate key. It's automatically
            generated by Hibernate with the UUID pattern. -->
        <id name="id" type="string" unsaved-value="null" >
            <column name="CAT_ID" sql-type="char(32)" not-null="true"/>
            <generator class="uuid.hex"/>
        </id>

        <!-- A cat has to have a name, but it shouldn' be too long. -->
        <property name="name">
            <column name="NAME" sql-type="varchar(16)" not-null="true"/>
        </property>

        <property name="sex"/>

        <property name="weight"/>

    </class>

</hibernate-mapping>
每個持久化類都需要一個標(biāo)識屬性(實(shí)際上,只是哪些代表一手對象的類,而不是代表值對象的類,后者會被映射稱為一手對象中的一個組件)。這個屬性用來區(qū)分持久化對象:如果catA.getId().equals(catB.getId())結(jié)果是true的話,兩只貓就是相同的。這個概念稱為數(shù)據(jù)庫標(biāo)識。Hiernate附帶了幾種不同的標(biāo)識符生成器,用于不同的場合(包括數(shù)據(jù)庫本地的順序(sequence)生成器和hi/lo高低位標(biāo)識模式)。我們在這里使用UUID生成器,并指定CAT表的CAT_ID字段(作為表的主鍵)存放生成的標(biāo)識值。 

Cat的其他屬性都映射到同一個表。對name屬性來說,我們把它顯式地聲明映射到一個數(shù)據(jù)庫字段。如果數(shù)據(jù)庫schema是由映射聲明使用Hibernate的SchemaExport工具自動生成的(作為SQL DDL指令),這特別有用。所有其它的屬性都用Hibernate的默認(rèn)值映射,大多數(shù)情況你都會這樣做。數(shù)據(jù)庫中的CAT表看起來是這樣的: 

 Column |         Type          | Modifiers
--------+-----------------------+-----------
 cat_id | character(32)         | not null
 name   | character varying(16) | not null
 sex    | character(1)          |
 weight | real                  |
Indexes: cat_pkey primary key btree (cat_id)
你現(xiàn)在可以在你的數(shù)據(jù)庫中首先創(chuàng)建這個表了,如果你需要使用SchemaExport工具把這個步驟自動化,請參閱Chapter 19, 工具箱指南。這個工具能夠創(chuàng)建完整的SQL DDL,包括表定義,自定義的字段類型約束,惟一約束和索引。 

1.4. 與貓同樂
我們現(xiàn)在可以開始Hibernate的Session了。我們用它來從數(shù)據(jù)庫中存取Cat。首先,我們要從SessionFactory中獲取一個Session(Hibernate的工作單元)。 

SessionFactory sessionFactory =
            new Configuration().configure().buildSessionFactory();
SessionFactory負(fù)責(zé)一個數(shù)據(jù)庫,也只對應(yīng)一個XML配置文件(hibernate.cfg.xml)。 

這篇教程的關(guān)注點(diǎn)在于配置Tomcat的JDBC連接,綁定到JNDI上,以及Hibernate的基礎(chǔ)配置。你可以用喜歡的任何方式編寫一個Servlet,包含下面的代碼,只要確保SessionFactory只創(chuàng)建一次。也就是說你不能把它作為你的Serlvet 的實(shí)例變量。一個好辦法是用在輔助類中用一個靜態(tài)的SessionFactory,例如這樣: 

import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (HibernateException ex) {
            throw new RuntimeException("Exception building SessionFactory: " + ex.getMessage(), ex);
        }
    }

    public static final ThreadLocal session = new ThreadLocal();

    public static Session currentSession() throws HibernateException {
        Session s = (Session) session.get();
        // Open a new Session, if this Thread has none yet
        if (s == null) {
            s = sessionFactory.openSession();
            session.set(s);
        }
        return s;
    }

    public static void closeSession() throws HibernateException {
        Session s = (Session) session.get();
        session.set(null);
        if (s != null)
            s.close();
    }
}
這個類不但在它的靜態(tài)屬性中使用了SessionFactory,還使用了ThreadLocal來為當(dāng)前工作線程保存Session。 

Session不是線程安全的,代表與數(shù)據(jù)庫之間的一次操作。Session通過SessionFactory打開,在所有的工作完成后,需要關(guān)閉: 

Session session = HibernateUtil.currentSession();

Transaction tx= session.beginTransaction();

Cat princess = new Cat();
princess.setName("Princess");
princess.setSex('F');
princess.setWeight(7.4f);

session.save(princess);
tx.commit();

HibernateUtil.closeSession();
在Session中,每個數(shù)據(jù)庫操作都是在一個事務(wù)(transaction)中進(jìn)行的,這樣就可以隔離開不同的操作(甚至包括只讀操作)。我們使用Hibernate的Transaction API來從底層的事務(wù)策略中(本例中是JDBC事務(wù))脫身。這樣,如果需要把我們的程序部署到一個由容器管理事務(wù)的環(huán)境中去(使用JTA),我們就不需要更改源代碼。請注意,我們上面的例子沒有處理任何異常。 

也請注意,你可以隨心所欲的多次調(diào)用HibernateUtil.currentSession();,你每次都會得到同一個當(dāng)前線程的Session。你必須確保Session在你的數(shù)據(jù)庫事務(wù)完成后關(guān)閉,不管是在你的Servlet代碼中,或者在ServletFilter中,HTTP結(jié)果返回之前。 

Hibernate有不同的方法來從數(shù)據(jù)庫中取回對象。最靈活的方式是使用Hibernate查詢語言(HQL),這是一種容易學(xué)習(xí)的語言,是對SQL的面向?qū)ο蟮膹?qiáng)大擴(kuò)展。 

Transaction tx= session.beginTransaction();

Query query = session.createQuery("select cat from Cat as cat where cat.sex = :sex");
query.setCharacter("sex", 'F');
for (Iterator it = query.iterate(); it.hasNext();) {
    Cat cat = (Cat) it.next();
    out.println("Female Cat: " + cat.getName() );
}

tx.commit();
Hibernate也提供一種面向?qū)ο蟮陌礂l件查詢API,可以執(zhí)行公式化的類型安全的查詢。當(dāng)然,Hibernate在所有與數(shù)據(jù)庫的交互中都使用PrepatedStatement和參數(shù)綁定。 

1.5. 結(jié)語
在這個短小的教程中,我們只描繪了Hibernate的基本面目。請注意我們沒有在例子中包含Servlet相關(guān)代碼。你必須自行編寫Servlet,然后把你認(rèn)為合適的Hibernate代碼插入。 

請記住Hibernate作為數(shù)據(jù)庫訪問層,是與你的程序緊密相關(guān)的。一般,所有其他層次都依賴持久機(jī)制。請確信你理解了這種設(shè)計的含義。 


--------------------------------------------------------------------------------
Prev  Up  Next 
前言  Home  Chapter 2. 體系結(jié)構(gòu) 


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本人妖一区二区| 91麻豆免费看| 91成人国产精品| 日韩小视频在线观看专区| 国产精品对白交换视频| 日本欧美在线观看| 欧美在线观看18| 日本一区二区三级电影在线观看 | 免费在线观看一区二区三区| 成人污视频在线观看| 日韩一本二本av| 一区二区三区四区在线免费观看 | 欧美性一二三区| 国产精品视频一二三区| 久久se精品一区精品二区| 欧美猛男男办公室激情| 亚洲乱码中文字幕综合| jlzzjlzz亚洲日本少妇| 久久久美女艺术照精彩视频福利播放| 性欧美大战久久久久久久久| 91免费在线视频观看| 国产精品第四页| 成人不卡免费av| 国产精品欧美综合在线| 国产东北露脸精品视频| 国产亚洲精品中文字幕| 国产精品小仙女| 久久久久久电影| 丁香婷婷综合网| 国产欧美日韩另类视频免费观看 | 免费成人在线视频观看| 欧美顶级少妇做爰| 亚洲第一成人在线| 欧美精品久久久久久久多人混战 | 在线一区二区三区| 一区二区三区蜜桃| 欧美日韩精品一二三区| 日韩成人av影视| 精品久久一区二区| 国产精品99久久久久久久女警| 久久色.com| 99免费精品在线| 一区二区三区丝袜| 91精品在线观看入口| 蜜臀av性久久久久蜜臀av麻豆| 日韩免费高清视频| 国产精品99久久久久久似苏梦涵| 国产欧美日韩在线| 97se亚洲国产综合自在线观| 亚洲欧洲制服丝袜| 69p69国产精品| 国产精品一区二区久久不卡 | 日韩三级视频在线观看| 国产美女视频一区| 国产精品婷婷午夜在线观看| 色综合色狠狠综合色| 日韩**一区毛片| 久久精品这里都是精品| 一本久久a久久精品亚洲| 午夜欧美在线一二页| 精品精品欲导航| caoporm超碰国产精品| 午夜激情综合网| 久久综合狠狠综合| 在线国产电影不卡| 久久精品理论片| 国产精品久久免费看| 欧美丰满高潮xxxx喷水动漫| 国产99久久精品| 亚洲成人精品一区二区| 国产视频一区二区在线| 欧美性三三影院| 国产精品77777| 午夜影院在线观看欧美| 久久精品男人天堂av| 精品视频色一区| 成人在线视频首页| 蜜臀91精品一区二区三区| 中文字幕在线不卡一区二区三区| 91精品国产综合久久福利| 国产a区久久久| 久久精品国产一区二区| 亚洲视频在线观看一区| 久久综合成人精品亚洲另类欧美| 欧洲一区二区三区免费视频| 国产成人午夜电影网| 日韩和欧美一区二区三区| 亚洲视频综合在线| 久久久久一区二区三区四区| 欧美高清一级片在线| 一本一本久久a久久精品综合麻豆| 黄色日韩网站视频| 首页国产欧美日韩丝袜| 亚洲国产毛片aaaaa无费看| 国产欧美一区二区三区在线看蜜臀| 91精品国产综合久久福利| 91成人网在线| 在线亚洲精品福利网址导航| 成人免费毛片高清视频| 国产精品自拍av| 久久99久国产精品黄毛片色诱| 亚洲观看高清完整版在线观看| 亚洲女厕所小便bbb| 国产精品三级视频| 久久久久久久综合色一本| 欧美mv日韩mv| 精品日韩av一区二区| 91精品国产乱| 日韩一区二区三区精品视频 | 免费在线观看一区| 日韩成人免费电影| 日日夜夜免费精品| 肉丝袜脚交视频一区二区| 日韩一区精品视频| 日韩不卡手机在线v区| 免费观看在线综合色| 久久国产麻豆精品| 久久国产乱子精品免费女| 国产一区二区不卡在线| 国产酒店精品激情| 懂色av一区二区三区免费观看| 国产一区福利在线| 国产精品夜夜爽| 成人永久免费视频| 在线视频国内自拍亚洲视频| 欧美午夜片在线观看| 欧美电影在哪看比较好| 日韩欧美亚洲另类制服综合在线| 欧美r级在线观看| 中文天堂在线一区| 亚洲精品久久久蜜桃| 午夜视频一区在线观看| 裸体健美xxxx欧美裸体表演| 国产乱码精品一品二品| 99精品一区二区| 欧美日韩日日摸| 精品国产精品网麻豆系列| 中文字幕乱码一区二区免费| 一区二区视频免费在线观看| 日韩精品1区2区3区| 国产精品自产自拍| 欧美最猛黑人xxxxx猛交| 欧美一区二区三区人| 国产欧美日韩不卡免费| 亚洲一区二区三区四区的| 久久精品国产久精国产爱| 国产91综合一区在线观看| 欧美色窝79yyyycom| 精品久久久久久亚洲综合网 | 日本一区二区视频在线| 性做久久久久久| 粉嫩一区二区三区在线看| 欧美写真视频网站| 久久久久久久国产精品影院| 亚洲精品成人在线| 九九在线精品视频| 日本电影亚洲天堂一区| 欧美zozozo| 亚洲国产精品久久久男人的天堂| 美国十次了思思久久精品导航| 99在线精品观看| 日韩欧美成人一区| 夜夜嗨av一区二区三区网页| 国产中文一区二区三区| 在线观看成人免费视频| 国产嫩草影院久久久久| 日本成人超碰在线观看| 91天堂素人约啪| 国产亚洲成aⅴ人片在线观看 | 欧美日韩视频在线一区二区| 国产精品天天摸av网| 美日韩黄色大片| 欧美在线免费视屏| 亚洲色图欧洲色图婷婷| 国产高清不卡二三区| 91精品国产色综合久久不卡电影| 中文字幕在线观看不卡| 国产.欧美.日韩| 精品欧美乱码久久久久久| 视频一区二区三区中文字幕| 91蝌蚪porny| 欧美高清一级片在线观看| 极品瑜伽女神91| 日韩视频中午一区| 天堂一区二区在线| 欧美视频完全免费看| 一区二区三区国产精华| 91免费国产在线| 日本一区二区高清| 国产成人精品免费| 国产亚洲综合在线| 国产真实乱对白精彩久久| 日韩女优制服丝袜电影| 蜜臀久久99精品久久久久久9 | 欧美午夜精品久久久久久孕妇| 中文字幕亚洲视频| 不卡一区二区中文字幕| 亚洲人123区| 91国在线观看| 亚瑟在线精品视频|