黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 學(xué)習(xí)Hibernate文檔筆記

學(xué)習(xí)Hibernate文檔筆記

更新時間:2022-02-11 11:19:25 來源:動力節(jié)點(diǎn) 瀏覽994次

1.獲取Hibernate

既然要使用Hibernate來開發(fā)應(yīng)用,那么就必須先獲取Hibernate的發(fā)布包,我們可以從網(wǎng)站http://sourceforge.net/projects/hibernate/files/中下載自己需要的版本,我下載的是hibernate-search-4.4.0.Alpha2。

下載完成,解壓后得到以下內(nèi)容:

2.創(chuàng)建Hibernate項目,添加Jar包

創(chuàng)建一個Java Project,建好項目之后,需要添加上Hibernate運(yùn)行所必須的Jar包,如果不知道哪些可以不添加就直接添加lib\required中的所有Jar包,如果清楚的知道每個包的作用就可以進(jìn)行相應(yīng)的刪減。

3.創(chuàng)建持久化類

package events;
import java.util.Date;
public class Event {
    private Long id;
    private String title;
    private Date date;
    public Event() {
    }
    public Long getId() {
        return id;
    }
    private void setId(Long id) {
        this.id = id;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
}

注意:

(1)無參構(gòu)造函數(shù)的作用是用于Hibernate通過反射機(jī)制來實例化類對象的時候。

(2)在所有的持久化實體類中都需要一個唯一的標(biāo)識符屬性。

(3)通常不會操作對象的標(biāo)識(identity),因此它的setter方法的訪問級別應(yīng)該聲明private。這樣當(dāng)對象被保存的時候,只有Hibernate可以為它分配標(biāo)識符值。

4.映射文件

映射文件的作用就是告訴Hibernate應(yīng)該訪問哪個數(shù)據(jù)庫(database)中的哪張表(table)的哪些字段(column)。

映射文件應(yīng)該保存在持久類的源文件目錄下,映射文件可隨意地命名,但hbm.xml的后綴已成為Hibernate開發(fā)者社區(qū)的約定。

本例用到的映射文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="events">
    <class name="Event" table="EVENTS">
        <!--  id用于標(biāo)示標(biāo)識符屬性,即數(shù)據(jù)表的主鍵,name對應(yīng)實體中的屬性名,column對應(yīng)數(shù)據(jù)表中的字段名-->
        <id name="id" column="EVENT_ID">
            <!-- 配置標(biāo)識符的生成策略 -->
            <generator class="native" />
        </id>
        <!-- property標(biāo)示實體類中的非標(biāo)識符屬性,
                type指定Hibernate 映射類型,它們能使Java數(shù)據(jù)類型與SQL數(shù)據(jù)類型相互轉(zhuǎn)換
         -->
        <property name="date" type="timestamp" column="EVENT_DATE" />
        <!-- 若不指定column屬性,則表示實體對象的屬性名即為數(shù)據(jù)表中字段的名稱 -->
        <property name="title" />
    </class>
</hibernate-mapping>

5.Hibernate配置

通過配置文件將應(yīng)用程序與數(shù)據(jù)庫連接,配置數(shù)據(jù)庫的相關(guān)屬性。此外,還要添加映射文件資源,使得Hibernate能夠找到映射文件,并將映射文件與實體類關(guān)聯(lián)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 設(shè)置連接數(shù)據(jù)庫的驅(qū)動 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!--  設(shè)置數(shù)據(jù)庫服務(wù)器的連接路徑 -->
        <property name="connection.url">jdbc:mysql://localhost:3306/db</property>
        <!--  設(shè)置數(shù)據(jù)庫服務(wù)器的連接用戶 -->
        <property name="connection.username">root</property>
        <!--  設(shè)置數(shù)據(jù)庫服務(wù)器的連接用戶的密碼 -->
        <property name="connection.password">Lynn0714</property>
        <!-- 數(shù)據(jù)庫連接池大小 -->
        <property name="connection.pool_size">1</property>
        <!-- SQL方言,要根據(jù)使用的數(shù)據(jù)庫來配置 -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 設(shè)置Hibernate的自動session管理 -->
        <property name="current_session_context_class">thread</property>
        <!-- 設(shè)置二級cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <!-- 設(shè)置運(yùn)行時是否顯示調(diào)用的SQL語句 -->
        <property name="show_sql">true</property>
        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>
        <!-- 使用的映射文件 -->
        <mapping resource="events/events.hbm.xml" />
    </session-factory>
</hibernate-configuration>

上圖配置并不是包含所有內(nèi)容

上圖配置了Hibernate的SessionFactory,一個關(guān)聯(lián)于特定數(shù)據(jù)庫全局的工廠(factory)。如果你要使用多個數(shù)據(jù)庫,就要用多個的,通常把它們放在多個配置文件中。(Hibernate如何識別是在何時使用哪個配置文件?)

6.用Ant構(gòu)建

此處Ant操作全部仿照操作,不知道具體如何使用。

7.啟動和輔助類

在這個環(huán)節(jié)中,需要創(chuàng)建一個全局的SessionFactory,通過SessionFactory來創(chuàng)建并打開Session,一個Session代表一個單線程的單元操作,SessionFactory則是個線程安全的全局對象,只需要被實例化一次。

package util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
    private static final SessionFactory sessionFactory;
    static{
        try{
            sessionFactory = new Configuration().configure().buildSessionFactory();
        }catch(Throwable ex){
            System.err.println("初始化SessionFactory失敗"+ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
}

8.加載并存儲對象

package events;
import java.util.Date;
import org.hibernate.Session;
import util.HibernateUtil;
public class EventManager {
    public static void main(String[] args) {
        EventManager mgr = new EventManager();
        if (args[0].equals("store")) {
            mgr.createAndStoreEvent("My Event", new Date());
        }
        HibernateUtil.getSessionFactory().close();
    }
    private void createAndStoreEvent(String title, Date theDate) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Event theEvent = new Event();
        theEvent.setTitle(title);
        theEvent.setDate(theDate);
        session.save(theEvent);
        session.getTransaction().commit();
    }
}

按上述步驟操作完成,運(yùn)行后出現(xiàn)下面異常:

出現(xiàn)java.lang.UnsupportedClassVersionError 錯誤的原因,是因為我們使用高版本的JDK編譯的Java class文件試圖在較低版本的JVM上運(yùn)行,所報的錯誤。

出現(xiàn)這個錯誤,是因為缺少JTA的Jar包,添加上即可,由于我也不知道哪些是必須的就添加了lib\provided目錄下的所有Jar包

修正上述兩個錯誤后,運(yùn)行成功

以上就是關(guān)于“學(xué)習(xí)Hibernate文檔筆記”的介紹,如果您想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點(diǎn)的Java視頻,里面的課程內(nèi)容細(xì)致全面,通俗易懂,適合沒有基礎(chǔ)的朋友學(xué)習(xí),希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久va | 久久精品视频8 | 欧美在线观看视频网站 | 亚洲中文毛片播九公社 | 高清午夜毛片 | 中国一级全黄的免费观看 | 黄色毛片在线 | 国产一级视频在线观看 | www色婷婷 | 亚洲aⅴ久久久噜噜噜噜 | 丁香婷婷激情五月 | 国产凹凸一区在线观看视频 | 五月天免费在线视频 | 伊人久久综合视频 | 大伊人网 | 久久精品欧美一区二区 | 黄色大片在线观看 | 涩涩网页 | 国产一二三四区在线观看 | 视频区小说区图片区激情 | 精品综合久久久久久98 | 91导航在线 | 网站黄免费 | 亚洲天堂资源 | 日韩视频一区二区三区 | 亚洲精品视 | 丁香六月综合网 | a一级日本特黄aaa大片 | 91香焦国产线观看看免费 | 午夜久久久久久亚洲国产精品 | 最近中文字幕无免费视频 | 黄色片子免费看 | 亚洲免费成人 | 亚洲精品日本高清中文字幕 | 亚1洲二区三区四区免费 | 国产一区二区在线播放 | 日日综合| 亚洲欧美日韩一区二区在线观看 | 草色在线 | 免费精品一区二区三区在线观看 | 日韩激情小视频 |