熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

簡單的Hibernate入門介紹

2022-06-13   來源: Java開源技術 
    其實Hibernate本身是個獨立的框架它不需要任何web server或application server的支持然而大多數的Hibernate入門介紹都加入了很多非Hibernate的東西比如 Tomcat Eclipse LogJStruts XDoclet 甚至JBoss這容易讓人產生Hibernate復雜難懂的誤解特別是打擊了初學者的積極性
   
    在這篇文章將不涉及Eclipse logj Struts Tomcat XDoclet和JBoss本文的目的是演示一下Hibernate的安裝過程以及最基本的功能從而給初學者一個低得不能再低的入門門檻
   
    下載文件
   
    你需要Java SDK Hibernate包Ant包和JDBC Driver
   
    配置Hibernate環境
   
    你需要添加一個新的環境變量 ANT_HOME讓它指向c:\dev\< 你的ANT包所在目錄>並在PATH環境變量裡添加%ANT_HOME%\bin
   
    你需要添加一個新的環境變量 JAVA_HOME讓它指向你的jsdk根目錄並在PATH環境變量裡添加%JAVA_HOME%\bin
   
    創建一個項目目錄比如c:\workspace\MystHibernate
   
    在項目目錄下另外創建三個目錄 src classes lib
   
    在lib目錄下創建兩個目錄 hibernate和db
   
    這樣你有了如下的文件結構
   
    c:\workspace\MystHibernate\
   
    c:\workspace\MystHibernate\src
   
    c:\workspace\MystHibernate\classes
   
    c:\workspace\MystHibernate\lib
   
    c:\workspace\MystHibernate\lib\hibernate
   
    c:\workspace\MystHibernate\lib\db
   
    將c:\dev\< 你的Hibernate包所在目錄>\hibernatejar文件copy到c:\workspace\MystHibernate\lib\hibernate下
   
    將c:\dev\< 你的Hibernate包所在目錄>\lib\下的所有文件同樣copy到c:\workspace\MystHibernate\lib\hibernate下
   
    將你的JDBC Driver文件(一般是一個jar文件)copy到c:\workspace\MystHibernate\lib\db下
   
    創建數據庫
   
    用你最喜愛的database軟件創建一個hibernate_test的數據庫
   
    在此數據庫下新建一個table名為CUSTOMER
   
    CREATE TABLE CUSTOMER
   
    (
   
    CID INTEGER NOT NULL PRIMARY KEY
   
    USERNAME VARCHAR() NOT NULL
   
    PASSWORD VARCHAR(
   
    )
   
    編寫Java文件
   
    public class Customer {
   
    private int id;
   
    private String username;
   
    private String password;
   
    public int getId() {
   
    return id;
   
    }
   
    public String getPassword() {
   
    return password;
   
    }
   
    public String getUsername() {
   
    return username;
   
    }
   
    public void setId(int id) {
   
    thisid = id;
   
    }
   
    public void setPassword(String password) {
   
    thispassword = password;
   
    }
   
    public void setUsername(String username) {
   
    thisusername = username;
   
    }
   
    }
   
    將此類存為c:\workspace\MystHibernate\src\Customerjava文件
   
    編寫Test類
   
    import netsfhibernate*;
   
    import netsfhibernatecfg*;
   
    public class Test {
   
    public static void main(String[] args) {
   
    try {
   
    SessionFactory sf =
   
    new Configuration()configure()buildSessionFactory()
   
    Session session = sfopenSession()
   
    Transaction tx = sessionbeginTransaction()
   
    for (int i = ; i <  ; i++) {
   
    Customer customer = new Customer()
   
    customersetUsername(customer + i)
   
    customersetPassword(customer
   
    sessionsave(customer)
   
    }
   
    mit()
   
    sessionclose()
   
    } catch (HibernateException e) {
   
    eprintStackTrace()
   
    }
   
    }
   
    }
   


    將此類存為c:\workspace\MystHibernate\src\Testjava文件
   
    創建Hibernate映射文件
   
    因為這裡只有一個Class Customer 和一個Table CUSTOMER你只需要建立一個映射文件 Customerhbmxml來對應Customer類和CUSTOMER表之間的關系
   
    < ?xml version=?> < !DOCTYPE hibernatemapping PUBLIC
   
    //Hibernate/Hibernate Mapping DTD//EN
   
    hiber/hibernatemappingdtd>  < hibernatemapping>
   
    < class name=Customer table=CUSTOMER>
   
    < id name=id column=CID>
   
    < generator class=increment />
   
    < /id>
   
    < property name=username column=USERNAME />
   
    < property name=password column=PASSWORD />
   
    < /class> < /hibernatemapping> 把此文件存為c:\workspace\MystHibernate\src\Customerhbmxml和Customerjava放在同一目錄下
   
    編寫Ant buildxml文件
   
    你不一定要知道這個buildxml的細節其實Ant也不是Hibernate所必須的這裡用Ant是為了簡化一些任務比如 編譯copy運行
   
    < ?xml version= ?> < project name=MystHibernate default=build basedir=>
   
    < property name=basedir value= />
   
    < property name=srcdir value=src />
   
    < property name=libdir value=lib />
   
    < property name=builddir value=classes />
   
    < path id=myclasspath>
   
    < fileset dir=${libdir}>
   
    < include name=**/*jar />
   
    < /fileset>
   
    < pathelement location=${builddir} />
   
    < /path>
   
    < target name=init>
   
    < mkdir dir=${builddir} />
   
    < /target>
   
    < target name=build depends=init description=compile the source files>
   
    < javac classpat srcdir=${srcdir} destdir=${builddir} />
   
    < copy todir=${builddir} >
   
    < fileset dir=${srcdir} >
   
    < exclude name=**/*java/>
   
    < /fileset>
   
    < /copy>
   
    < /target>
   
    < target name=run depends=build>
   
    < java classpat classname=Test fork=true />
   
    < /target>
   
    < target name=clean>
   
    < delete includeEmptyDirs=true>
   
    < fileset dir=${builddir} />
   
    < /delete>
   
    < /target> < /project>
   
    配置Hibernate描述文件
   
    Hibernate描述文件可以是一個properties或xml 文件其中最重要的是定義數據庫的連接我這裡列出的是一個XML格式的hibernatecfgxml描述文件
   
    < ?xml version= encoding=utf ?> < !DOCTYPE hibernateconfiguration
   
    PUBLIC //Hibernate/Hibernate Configuration DTD//EN
   
    //hiber/hibernateconfigurationdtd> < hibernateconfiguration>
   
    < sessionfactory name=java:/hibernate/HibernateFactory>
   
    < property name=show_sql>true< /property>
   
    < property name=connectiondriver_class>
   
    oraclejdbcdriverOracleDriver < ! 這裡是Oracle i的JDBC driver class名 >
   
    < /property>
   
    < property name=connectionurl>
   
    jdbc:oracle:oci:@hibernate_test < ! 這裡是Oracle的hibernate_test數據庫URL >
   
    < /property>
   
    < property name=connectionusername>
   
    你的數據庫用戶名
   
    < /property>
   
    < property name=connectionpassword>
   
    你的數據庫密碼
   
    < /property>
   
    < property name=dialect>
   
    netsfhibernatedialectOracleDialect < ! 這裡是Oracle i的Dialect >
   
    < /property>
   
    < mapping resource=Customerhbmxml /> < ! 指定Customer的映射文件 >
   
    < /sessionfactory> < /hibernateconfiguration>如果你用的不是Oracle i可到C:\dev\< 你的Hibernate包所在目錄>\src\hibernateproperties文件裡找到你的數據庫然後替換以上相對應的值
   
    開始運行
   
    到c:\workspace\MystHibernate下運行ant run如果你嚴格依照以上步驟應該看到
   
    run:
   
    [java] logj:WARN No appenders could be found for logger (netsfhibernatecfgEnvironment)
   
    [java] logj:WARN Please initialize the logj system properly
   
    [java] Hibernate: insert into CUSTOMER (USERNAME PASSWORD CID) values (? ? ?)
   
    BUILD SUCCESSFUL 到你的hibernate_test數據庫看一下在CUSTMOR表裡新添了條記錄但你沒有寫任何JDBC code
   
    以後如果你要更換數據庫只需要改變hibernatecfgxml描述文件裡相應的值即可
   
    Hibernate入門介紹結論
   
    此文是一篇門檻極低的入門介紹我給一個完全不懂Hibernate的朋友看他用了不到分鐘就運行了他的第一個Hibernate程序從此引起了 他對Hibernate的興趣但讀者必須認識到這只是一個開始此文實乃窺Hibernate冰山一角上的一顆小冰晶千裡之行始於足下你可以把此文 當作邁向Hibernate大道的一個起點


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28911.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.