<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    太陽雨

    痛并快樂著

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      67 Posts :: 3 Stories :: 33 Comments :: 0 Trackbacks

    #

    本文摘自孫衛(wèi)琴的《精通Hibernate:Java對象持久化技術詳情》
          Hibernate有如下5個核心接口:
    • Configuration接口:該對象用于配置并且根啟動Hibernate。Hibernate應用通過Configuration實例來指定對象-關系映射文件的位置或動態(tài)配置Hibernate的屬性,然后創(chuàng)建SessionFactory實例。
    • SessionFactory接口:一個SessionFactory實例對應一個數(shù)據(jù)存儲源,應用從SessionFactory中獲得Session實例。它具有如下特點:

                  1)它是線程安全的,這意味著它的同一個實例可以被應用的各個線程共享。

                  2)它是重量級的,這意味著不能隨意創(chuàng)建或銷毀它的實例。如果應用只訪問一個數(shù)據(jù)庫,只需創(chuàng)建一個SessionFactory實例,在應用初始化的時候創(chuàng)建該實例。如果應用同時訪問多個數(shù)據(jù)庫,則需要為每個數(shù)據(jù)庫創(chuàng)建一個單獨的SessionFactory實例。

                  之所以說SessionFactory是重量級的,是因為它需要一個很大的緩存,用來存放預定義的SQL語句以及映射元數(shù)據(jù)等。用戶還可以為SessionFactory配置一個緩存插件,這個緩存插件被稱為Hibernate的第二級緩存,該緩存用來存放被工作單元讀過的數(shù)據(jù),將來其它工作單元可能會重用這些數(shù)據(jù),因此這個緩存中的數(shù)據(jù)能夠被所有工作單元共享,一個工作單元通常對應一個數(shù)據(jù)庫事務。

    • Session接口:該接口是Hibernate應用使用最廣泛的接口。Session也被稱為持久化管理器,提供了和持久化相關的操作,如添加、更新、刪除、加載和查詢對象。Session具有一下特點:

                 1)不是線程安全的,因此在設計軟件架構時,應該避免多個線程共享同一個Session實例;

                 2)Session實例是輕量級的,所謂輕量級,是指它的創(chuàng)建和銷毀不需要消耗太多的資源。這意味著在程序中可以經(jīng)常創(chuàng)建和銷毀Session對象,例如為每個客戶請求分配單獨的Session實例,或者為每個工作單元分配單獨的Session實例。

                 Session有一個緩存,被稱為Hibernate的第一級緩存,它存放被當前工作單元加載的對象。每個Session實例都有自己的緩存,這個Session實例的緩存,這個Session實例的緩存只能被當前工作單元訪問。

    •  Transaction:該接口是Hibernate的數(shù)據(jù)庫事務接口,它對底層的事務接口做了封裝,底層事務接口包括:JDBC API、JTA(Java Transaction API)、CORBA(Common Object Requet Broker Architecture) API.

                 Hibernate應用可通過一致的Transaction接口來聲明事務邊界,這有助于應用在不同環(huán)境或容器中移植。

    •  Query和Criteria接口:它們是Hibernate的查詢接口,用于向數(shù)據(jù)庫查詢對象,以及控制執(zhí)行查詢的過程。Query實例封裝了一個HQL(Hibernate Query Language)查詢語句,HQL是面向對象的,它引用類名及類的屬性名,而不是表名及表的字段名。Criteria接口完全封裝了基于字符串形式的查詢語句,比Query接口更加面向對象,Criteria接口更擅長于執(zhí)行動態(tài)查詢。
    posted @ 2008-10-21 14:24 小蟲旺福 閱讀(240) | 評論 (0)編輯 收藏

    Hibernate的對象有3種狀態(tài),分別為:瞬時態(tài)(Transient)、 持久態(tài)(Persistent)、脫管態(tài)(Detached)。處于持久態(tài)的對象也稱為PO(Persistence Object),瞬時對象和脫管對象也稱為VO(Value Object)。
    •         瞬時態(tài)

            由new命令開辟內(nèi)存空間的java對象,

           eg. Person person = new Person("amigo", "女");

            如果沒有變量對該對象進行引用,它將被java虛擬機回收。

            瞬時對象在內(nèi)存孤立存在,它是攜帶信息的載體,不和數(shù)據(jù)庫的數(shù)據(jù)有任何關聯(lián)關系,在Hibernate中,可通過session的save()或saveOrUpdate()方法將瞬時對象與數(shù)據(jù)庫相關聯(lián),并將數(shù)據(jù)對應的插入數(shù)據(jù)庫中,此時該瞬時對象轉變成持久化對象。

    •        持久態(tài)

            處于該狀態(tài)的對象在數(shù)據(jù)庫中具有對應的記錄,并擁有一個持久化標識。如果是用hibernate的delete()方法,對應的持久對象就變成瞬時對象,因數(shù)據(jù)庫中的對應數(shù)據(jù)已被刪除,該對象不再與數(shù)據(jù)庫的記錄關聯(lián)。

           當一個session執(zhí)行close()或clear()、evict()之后,持久對象變成脫管對象,此時持久對象會變成脫管對象,此時該對象雖然具有數(shù)據(jù)庫識別值,但它已不在HIbernate持久層的管理之下。

           持久對象具有如下特點:

           1. 和session實例關聯(lián);

           2. 在數(shù)據(jù)庫中有與之關聯(lián)的記錄。

    •  脫管態(tài)

            當與某持久對象關聯(lián)的session被關閉后,該持久對象轉變?yōu)槊摴軐ο?。當脫管對象被重新關聯(lián)到session上時,并再次轉變成持久對象。

           脫管對象擁有數(shù)據(jù)庫的識別值,可通過update()、saveOrUpdate()等方法,轉變成持久對象。

           脫管對象具有如下特點:

           1.  本質上與瞬時對象相同,在沒有任何變量引用它時,JVM會在適當?shù)臅r候將它回收;

           2.  比瞬時對象多了一個數(shù)據(jù)庫記錄標識值。

    posted @ 2008-10-21 14:23 小蟲旺福 閱讀(280) | 評論 (0)編輯 收藏

    用eclipse,在導入相應的包后(有人說不導包也有提示,因為默認的eclipse導入了jdk的包),eclipse會有代碼提示功能。
    那么XML文件能不能也這樣呢?其實也是可以的,只不過導包的地方不一樣。下面以spring為例(雖然Myeclipse6.5中已經(jīng)集成了,這里只是示范說明)。

    進入:window -> Preference... -> MyEclipse -> Editors -> XML ->XML Catalog

    選擇:選中“User Specified Entries”,點擊“Add...”按鈕

    填入:

    URI: 請選擇本地文件系統(tǒng)上SPRING_HOME\dist\resources\spring-beans-2.0.xsd 文件
    Key Type: 選擇Schema Location
    Key: http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

    點擊確定

    將spring配置文件關閉再重新打開即可。可以使用MyEclipse XML Editor打開這些xml文件。

    posted @ 2008-06-23 22:29 小蟲旺福 閱讀(10539) | 評論 (1)編輯 收藏

    很早就聽說過eclipse可以集成jad,一直沒有試過,一直用的小穎和一個叫java decompiler (具體名字記不住了),不過還是沒有集成到eclipse中,每次查看源碼的時候,還需要找到相應的class文件才可以反編譯,比較麻煩,畢竟很多class都是在jar包中,而且路徑很深。昨天閑來無聊,隨便找了找eclipse集成jad的反編譯工具,很簡單,過程如下:
    需要兩個東東
    Jadclips插件,網(wǎng)址:http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download
    Jad反編譯工具,網(wǎng)址:http://www.kpdus.com/jad.html#download
    注意下載的時候認準版本。我下載的是net.sf.jadclipse_3.3.0.jarJad 1.5.8g for Windows 9x/NT/2000 on Intel platform

    開始具體的配置

    Jad下載后解壓,然后將解壓后的jad.exe文件復制到%JAVA_HOME%\BIN目錄下面(可以將jad.exe隨便放到哪,記住路徑,下面在eclipse配置中要用到)。

    直接將net.sf.jadclipse_3.3.0.jar 復制到eclipse的plugins目錄下。
    個人認為這樣比較簡單,如果大家喜歡把自己的plugins拿出來放到一個單獨的文件夾,可以自己google,這里不做過多介紹。

    然后啟動eclipse,打開:Window->Preferences->Java->JadClipse

    1、Path to decompiler,這里設置反編譯工具jad的全路徑名,比如:%JAVA_HOME%\bin\jad.exe。 就是剛才jad解壓的路徑,例如在我的電腦中的路徑就是C:\Program Files\Java\jdk1.5.0_13\bin\jad.exe。

    2、Directory for temporary files,這里設置臨時文件路徑,無所謂了。

    至于Window->Preferences->Java->JadClipse目錄下的Debug,Directives,F(xiàn)ormatting,Misc目錄中的參數(shù)設置,自己看一下就能明白什么意思,可以不用管,這里就不羅嗦了。

    3、eclipse會自動將JadClipse Class File Viewer設置成class文件的缺省打開方式。如果沒有默認,可以在Eclipse的Windows——> Perference——>General->Editors->File Associations中修改“*.class”默認關聯(lián)的編輯器為“JadClipse Class File Viewer”。設置完成后,雙擊*.class文件,eclipse將自動反編譯。我的是默認了,大家有問題的可以試試。

    :對于存在源代碼的類,它不會強行反編譯,也就是說它還是會用eclipse自帶的Class File Viewer查看class文件。這點很重要哦。畢竟反編譯的不如人家的源碼好。
    :把鼠標焦點放到這個如要查看源碼的方法上,然后按F3(eclipse查看源碼快捷鍵),呵呵~源代碼出現(xiàn)了。

    不過還是要說明一下,如果可以的話,還是盡量找官方的源碼(在eclipse指定源碼位置,就可以按F3查看,怎么指定?自己google),而且一般都帶說明文檔的,這樣的話,不必每次使用的時候都查看源碼,只要把她的API文檔導入就可以了(跟指定源碼一樣),開發(fā)的時候會方便一些,如果自己學習的話可以沒事看看源碼。

    posted @ 2008-06-20 11:13 小蟲旺福 閱讀(11067) | 評論 (7)編輯 收藏

         摘要: 把以前總結的一個java常用排序整理了一下。 插入排序: package org.rut.util.algorithm.support;       import org.rut.util.algorithm.SortUtil;    /** *//** &nb...  閱讀全文
    posted @ 2008-06-19 12:00 小蟲旺福 閱讀(587) | 評論 (0)編輯 收藏

    今天碰見一個很郁悶的事情,當使用mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app來創(chuàng)建一個新項目時,有時候會出現(xiàn)以下錯誤:解決過程如下:

    [INFO] Scanning for projects...
    [INFO] Searching repository for plugin with prefix: 'archetype'.
    [INFO]
    ----------------------------------------------------------------------------
    [INFO] Building Maven Default Project
    [INFO]    task-segment: [archetype:create] (aggregator-style)
    [INFO]
    ----------------------------------------------------------------------------
    。。。。。。。
    [INFO] Velocimacro : initialization complete.
    [INFO] Velocity successfully started.
    [INFO] [archetype:create]
    [INFO] Defaulting package to group ID: com.mycompany.app
    [INFO]
    ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO]
    ------------------------------------------------------------------------
    [INFO] Failed to resolve artifact.

    GroupId: org.apache.maven.archetypes
    ArtifactId: maven-archetype-quickstart
    Version: RELEASE

    Reason: Unable to determine the release version

    Try downloading the file manually from the project website.

    Then, install it using the command:
        mvn install:install-file -DgroupId=org.apache.maven.archetypes
    -DartifactId=maven-arch
    etype-quickstart \
            -Dversion=RELEASE -Dpackaging=jar -Dfile=/path/to/file

      org.apache.maven.archetypes:maven-archetype-quickstart:jar:RELEASE

     [INFO]
    ------------------------------------------------------------------------
    [INFO] For more information, run Maven with the -e switch
    [INFO]
    ------------------------------------------------------------------------
    [INFO] Total time: 1 second
    [INFO] Finished at: Tue Apr 17 07:08:50 MDT 2007
    [INFO] Final Memory: 4M/8M
    [INFO]
    ------------------------------------------------------------------------

            請注意紅色部分為錯誤產(chǎn)生的根本原因,  由于maven還處于開發(fā)過程中,開發(fā)方極有可能已經(jīng)更新某個plug-in的版本,但本地plug-in metadata沒有版本的信息或者沒有最新版本的信息,致使maven無法下載正確的版本。同時請注意藍色部分,這是提示的解決辦法。具體步驟如下:
        1.打開網(wǎng)址:http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/
        2.選擇最新版本并且下載最新的“maven-archetype-quickstart-1.0-alpha-4.jar ”文件
        3.安裝這個archetype到maven本地倉庫。使用命令如下:mvn install:install-file -DgroupId=org.apache.maven.archtypes -Dar
    tifactId=maven-archetype-quickstart -Dversion=1.0-alpha-4 -Dpackaging=jar -Dfile=c:\7000\maven\maven-archetype-quickstart-1.0-alpha-4.jar。注意-Dfile是剛下載的文件的路徑。
        現(xiàn)在在cmd中執(zhí)行mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app就可以創(chuàng)建新項目了。
    posted @ 2008-06-19 11:52 小蟲旺福 閱讀(292) | 評論 (0)編輯 收藏

         摘要: 這里不討論有關apache的commons-io中的FileUtils,只是一些基本的對文件的操作的代碼,有時間會整理一個FileUtils的用法的文章。 java中提供了io類庫,可以輕松的用java實現(xiàn)對文件的各種操作。下面就來說一下如何用java來實現(xiàn)這些操作。   新建目錄 <%@ page contentType="text/html;ch...  閱讀全文
    posted @ 2008-06-19 11:40 小蟲旺福 閱讀(524) | 評論 (0)編輯 收藏

    僅列出標題
    共4頁: 上一頁 1 2 3 4 
    主站蜘蛛池模板: 亚洲天堂免费在线| 亚洲综合久久1区2区3区| 在线91精品亚洲网站精品成人| 免费观看的毛片大全 | 亚洲午夜激情视频| 精品国产污污免费网站入口| 亚洲综合另类小说色区色噜噜| 免费国产va在线观看| 亚洲成A人片在线观看中文| 人妻无码中文字幕免费视频蜜桃| 亚洲国产一级在线观看| 女人隐私秘视频黄www免费| 亚洲VA中文字幕无码毛片| 最近免费中文在线视频| 亚洲kkk4444在线观看| 免费人成网站在线高清| AAA日本高清在线播放免费观看| 亚洲a在线视频视频| 成人免费AA片在线观看| 欧美亚洲精品一区二区| 久久亚洲国产成人精品无码区| 久久免费公开视频| 亚洲av无码专区在线| 亚洲黄片毛片在线观看| 99视频有精品视频免费观看| 亚洲色欲色欲www| 亚洲区不卡顿区在线观看| 免费成人在线视频观看| 亚洲成人激情小说| 最新亚洲成av人免费看| 国产一卡二卡四卡免费| 国产亚洲福利精品一区二区| 亚洲成AV人片在线观看| 成人av免费电影| 免费无码作爱视频| 亚洲夂夂婷婷色拍WW47| 亚洲色大成网站WWW久久九九| 成人免费视频77777| 大地影院MV在线观看视频免费| 亚洲香蕉久久一区二区 | 69pao强力打造免费高清|