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

八步詳解Hibernate的搭建及使用

2013-11-23 20:09:31  來源: Java開源技術 
    上篇博客已經把Hibernate概念和其中的核心接口介紹下面舉個實例添加用戶來介紹Hibernate如何使用
   
    創建普通的java項目
   
    因為Hibernate是一個輕量級的框架不像servlet還必須需要tomcat的支持Hibernate只要jdk支持即可
   
    引入jar包
   
    可以在項目中直接引入jar包項目>屬性>然後如下圖
   
    另一種辦法就是引入庫相當於一個文件夾把所有的jar包放到自己新建的文件夾中窗體>選項>然後如下圖
   
    提供Hibernate的配置文件hibernatecfgxml文件完成相應的配置
   
    <hibernateconfiguration>
   
    <sessionfactory>
   
    <property name=nnectiondriver_class>commysqljdbcDriver</property>
   
    <property name=nnectionurl>jdbc:mysql://localhost:/hibernate_first</property>
   
    <property name=nnectionusername>root</property>
   
    <property name=nnectionpassword>bjpowernode</property>
   
    <property name=hibernatedialect>orghibernatedialectMySQLDialect</property>
   
    </sessionfactory>
   
    </hibernateconfiguration>
   
    在這裡連接mysql數據庫解釋一下上面的標簽按照順序來依次解釋第一個是連接mySql的驅動第二個是連接的url;url後面的hibernate_first是數據庫名字第三個是和第四個分別是用戶名和密碼第五個是方言因為 hibernate對數據庫封裝對不同的數據庫翻譯成不同的形式比如drp中的分頁若是使用oracle數據庫則翻譯成sql語句三層嵌套若是使用mySql數據庫則翻譯成limit語句
   
    建立實體User類
   
    package combjpowernodehibernate;
   
    import javautilDate;
   
    public class User {
   
    private String id;
   
    private String name;
   
    private String password;
   
    private Date createTime;
   
    private Date expireTime;
   
    public String getId() {
   
    return id;
   
    }
   
    public void setId(String id)
   
    {
   
    thisid = id;
   
    }
   
    public String getName()
   
    {
   
    return name;
   
    }
   
    public void setName(String name)
   
    {
   
    thisname = name;
   
    }
   
    public String getPassword()
   
    {
   
    return password;
   
    }
   
    public void setPassword(String password)
   
    {
   
    thispassword = password;
   
    }
   
    public Date getCreateTime()
   
    {
   
    return createTime;
   
    }
   
    public void setCreateTime(Date createTime)
   
    {
   
    thiscreateTime = createTime;
   
    }
   
    public Date getExpireTime()
   
    {
   
    return expireTime;
   
    }
   
    public void setExpireTime(Date expireTime)
   
    {
   
    thisexpireTime = expireTime;
   
    }
   
    }
   
    建立Userhbmxml此文件用來完成對象與數據庫表的字段的映射也就是實體類的那些字段需要映射到數據庫表中呢
   
    <?xml version=?>
   
    <!DOCTYPE hibernatemapping PUBLIC
   
    //Hibernate/Hibernate Mapping DTD //EN
   
    hiber/hibernatemappingdtd>  <hibernatemapping>
   
    <class name=combjpowernodehibernateUser>
   
    <id name=id>
   
    <generator class=uuid/>
   
    </id>
   
    <property name=name/>
   
    <property name=password/>
   
    <property name=createTime/>
   
    <property name=expireTime/>
   
    </class>  </hibernatemapping>


   
    我們也映射完畢了但是hibernate怎麼知道我們映射完了呢以及如何映射的呢?這就需要我們把我們自己的映射文件告訴hibernate在hibernatecfgxml配置我們的映射文件
   
    <mapping resource=com/bjpowernode/hibernate/Userhbmxml/>
   
    生成數據庫表大家也看到了我們上述還沒有新建數據表呢在第三步我們只是新建了數據庫而已按照我們普通的做法我們應該新建數據表啊否則實體存放何處啊這個別急數據庫表這個肯定是需要有的這個毋庸置疑但是這個可不像我們原來需要自己親自動手建立哦現在hibernate需要幫我們實現哦如何實現嗯hibernate會根據配置文件hibernatecfgxml和我們的映射文件Userhbmxml會自動給我們生成相應的表並且這個表的名字也給我們取好默認是User那如何生成表呢?
   
    //默認讀取hibernatecfgxml文件
   
    Configuration cfg = new Configuration()configure()
   
    SchemaExport export = new SchemaExport(cfg)
   
    exportcreate(true true)
   
    那我們就開始進行操作啦我們添加一個用戶對象看看hibernate是如何添加的呢?跟我們以前的做法有什麼不同呢?
   
    public class Client {
   
    public static void main(String[] args)
   
    {
   
    //讀取hibernatecfgxml文件
   
    Configuration cfg = new Configuration()configure()
   
    //建立SessionFactory
   
    SessionFactory factory = cfgbuildSessionFactory()
   
    //取得session
   
    Session session = null;
   
    try {
   
    session = factoryopenSession()
   
    //開啟事務
   
    sessionbeginTransaction()
   
    User user = new User()
   
    usersetName(張三
   
    usersetPassword(
   
    usersetCreateTime(new Date())
   
    usersetExpireTime(new Date())
   
    //保存User對象
   
    sessionsave(user)
   
    //提交事務
   
    sessiongetTransaction()commit()
   
    }catch(Exception e) {
   
    eprintStackTrace()
   
    //回滾事務
   
    sessiongetTransaction()rollback()
   
    }finally {
   
    if (session != null)
   
    {
   
    if (sessionisOpen())
   
    {
   
    //關閉session
   
    sessionclose()
   
    }
   
    }
   
    }
   
    }
   
    }
   
    第八步我們可以看到沒有我們熟悉的insert into表的sql語句了那怎麼添加進去的呢到底添加了沒?讓我真實滴告訴你確實添加進去了不信的可以自己嘗試哦這也是hibernate的優點對jdbc封裝的徹底減少了我們對數據的操作時間哈
   
    這就是真切滴介紹了hibernate的基本用法其中好多優點等待我們自己去發現哦比如hibernate中的緩存機制映射方案哦


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