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

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

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

    一路拾遺
    Collect By Finding All The Way ......
    posts - 81,comments - 41,trackbacks - 0

    今天看了hibernate持久層的概述,就用myeclipse試著動(dòng)手開(kāi)發(fā)了一個(gè)簡(jiǎn)單的學(xué)生信息管理小程序。

    在開(kāi)發(fā)之前,先要理解一個(gè)概念ORM。ORMobject-relation mapping)是對(duì)象關(guān)系映射,對(duì)象指的是java中的對(duì)象,關(guān)系是指關(guān)系型數(shù)據(jù)庫(kù),ORM也就是指從Java對(duì)象到數(shù)據(jù)庫(kù)之間的映射,也就是通過(guò)一個(gè)類(lèi)的操作來(lái)代表數(shù)據(jù)庫(kù)中的操作。而Hibernate是一個(gè)ORM的實(shí)現(xiàn),所以,主要功能就是操作數(shù)據(jù)庫(kù)(以對(duì)象的形式操作數(shù)據(jù)庫(kù))。

    ORM模式圖如下:

    本人運(yùn)用的開(kāi)發(fā)環(huán)境為:Eclipse3.2.1+MyEclipse5.1集成開(kāi)發(fā)環(huán)境,數(shù)據(jù)庫(kù)為MySQL4.01版本。

    下面開(kāi)始動(dòng)手吧……
    S1創(chuàng)建數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)腳本如下:

    create database hibernate;
    use hibernate;
    create table Student
    (
          id varchar(
    32) not null primary key,
          sName varchar(
    20) not null,
          sNO varchar(
    20) not null,
          sex varchar(
    2),  
          email varchar(
    30)
    );

    S2:配置MyEclipse環(huán)境,使之能夠生成HBM文件,即Hibernate映射文件,過(guò)程如下:

    配置MySQL驅(qū)動(dòng)程序:

    Eclipse中,點(diǎn)擊Window ->Preferences->MyEclipse -> Database Explorer -> Drivers -> New…

    選擇Driver template 為:MySQL Connector/J;

    URL: jdbc:mysql://localhost:3306/hibernate,其中hibernate為數(shù)據(jù)庫(kù)名稱(chēng);

    添加MySQL驅(qū)動(dòng):mysql"lib"mysqldriver.jar,點(diǎn)擊 OK。

    現(xiàn)在只是配置好數(shù)據(jù)庫(kù)的環(huán)境,但是還沒(méi)有真正的生成它,還要?jiǎng)?chuàng)建Database Profile方法如下:

    打開(kāi)Window -> Open Perspective->MyEclipse Database Explorer

    選擇其中的New 圖標(biāo),上面那個(gè)是我以前做過(guò)的,因此在新建一個(gè)。


    Profile name 由自己來(lái)定,我定為JDBC for MySQL,Driver 就是選由上面剛剛配置過(guò)的

    MySQL Connector/J,點(diǎn)擊Next -> Finish


    右鍵剛剛創(chuàng)建的JDBC for MySQL2,打開(kāi)Open connection…


    出現(xiàn)了我們剛剛創(chuàng)建的數(shù)據(jù)庫(kù)student,好了,可以松一口氣了,暫時(shí)先放一放,后面還會(huì)用到這個(gè)界面的,在打開(kāi)Window -> Open Perspective->Java界面。

    S3新建一個(gè)J2EEWeb Project ,工程名為StuHibernate

    然后給這個(gè)項(xiàng)目添加hibernate必要的文件.在我們項(xiàng)目名上點(diǎn)擊右鍵,選擇MyEclipes --> Add Hibernate Capabilities...彈出對(duì)話(huà)框如下圖:


    其中,JAR Library Installation 選為 Copy checked Library Jars to Project …項(xiàng),其它項(xiàng)均為默認(rèn),點(diǎn)擊Next,進(jìn)入下一個(gè)頁(yè)面后,繼續(xù)點(diǎn)擊Next,進(jìn)入第三個(gè)頁(yè)面


    選擇 DB Profile 文件JDBC for MySQL,就是我們?cè)?/span>S2步驟中配置的數(shù)據(jù)庫(kù)驅(qū)動(dòng),在這里,我們就什么也不用手動(dòng)添寫(xiě)了,直接生成,這就是S2步驟的好處,其中數(shù)據(jù)庫(kù)的言也選為MySQL,點(diǎn)擊Next進(jìn)入下一頁(yè)面

    取消對(duì)Crate SessionFactory class? 選項(xiàng)的選擇,點(diǎn)擊Finish。項(xiàng)目結(jié)構(gòu)如下圖:


    src 目錄下產(chǎn)生了一個(gè)hibernate.cfg.xml 文件:主要是對(duì)Hibernate環(huán)境配置的,包括使用的數(shù)據(jù)庫(kù)或數(shù)據(jù)源。Eclipse為此提供了圖形環(huán)境配置,配置方法為在S2步驟中以配置好了,因此直接生成了如下頁(yè)面:


    其中本人數(shù)據(jù)庫(kù)密碼為空,因此什么都沒(méi)有寫(xiě)。由于MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)以經(jīng)加了WEB-INF/lib文件夾中,上面的圖中以有顯示。如果沒(méi)有加入,則復(fù)制到里面。一切準(zhǔn)備工作都以就緒,下面我們就開(kāi)始真正的編寫(xiě)代碼了!(終于寫(xiě)到一半了,好累啊,呵呵)

    S4編寫(xiě)POJO類(lèi),也就是持久化類(lèi):只包含settergetter方法的類(lèi)。POJOPlain Old Java Objects)是最普通的Java對(duì)象,很像JavaBean。類(lèi)名最好和表名相同,開(kāi)頭最好大寫(xiě),Student.java類(lèi)


    包名:com.cc.hibernate

    類(lèi)名:Student

    代碼如下:

    package com.cc.hibernate;
    //POJO類(lèi)
    public class Student {
       
    //寫(xiě)入若干屬性
        private String id;
        
    private String sname;
        
    private String sno;
        
    private String sex;
        
    private String email;
        
    public String getEmail() {
           
    return email;
        }
        
    public void setEmail(String email) {
           
    this.email = email;
        }
        
    public String getId() {
           
    return id;
        }
        
    public void setId(String id) {
           
    this.id = id;
        }
        
    public String getSex() {
           
    return sex;
        }

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

        
    public String getSname() {
           
    return sname;
        }

        
    public void setSname(String sname) {
           
    this.sname = sname;
        }

        
    public String getSno() {
           
    return sno;
        }

        
    public void setSno(String sno) {
           
    this.sno = sno;
        }
    }

    S5建立映射文件,在次打開(kāi)Window -> Open Perspective->MyEclipse Database Explorer,接到S2步驟


    右鍵點(diǎn)擊student表,打開(kāi)Hibernate Reverse Engineering…

    創(chuàng)建到包含有POJO類(lèi)包的文件夾下:

    點(diǎn)擊 Next,進(jìn)入下一頁(yè)面


    Type Mapping Hibernate types

    主鍵生成方式選為 assigned(指派),由用戶(hù)自行完成,單擊 Next,最后點(diǎn)擊 Finish。

    在次切回 Window -> Open Perspective->Java界面,出現(xiàn) Student.hbm.xml映射文件,雙擊打開(kāi)查看其代碼。

    此文件完成Student類(lèi)到student表的關(guān)系

    S6編寫(xiě)具體類(lèi),具體操作Hibernate 方法,在Com.cc.hibernate包下

    新建類(lèi) StudentOperate.java

    package com.cc.hibernate;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.Transaction;
    public class StudentOperate {
        
    //在Hibernate中,所有的操作都是通過(guò)Session完成
        
    //此Session不同于JSP的Session
        private Session session=null;
        
    //在構(gòu)造方法之中實(shí)例化session對(duì)象
        public StudentOperate(){
           
    // 找到Hibernate配置
           Configuration config=new Configuration().configure();
           
    //從配置中取出SessionFactory
           SessionFactory factory=config.buildSessionFactory();
           
    //從SessionFactory中取出一個(gè)Session
           this.session=factory.openSession();
        }

       

        
    //所有操作都是由session進(jìn)行的
        
    //向數(shù)據(jù)庫(kù)中增加數(shù)據(jù)
        public void insert(Student student){
           
    //開(kāi)始事務(wù)
           Transaction tran=this.session.beginTransaction();

           
    //執(zhí)行語(yǔ)句
           this.session.save(student);

           
    //提交事務(wù)
           tran.commit();
        }
    }


    S7com.cc.hibernate 包下新建一個(gè)測(cè)試類(lèi) StudentTest.java

    代碼如下:

    package com.cc.hibernate;
    public class StudentTest {
        
    public static void main(String[] args) {
           
    // TODO Auto-generated method stub
           
    //生成POJO類(lèi)實(shí)例化對(duì)象
           Student stu=new Student();
           stu.setId(
    "006");
           stu.setSname(
    "chen");
           stu.setSno(
    "03170217");
           stu.setSex(
    "");
           stu.setEmail(
    "chenchuang.sy@163.com");

           
    //實(shí)例化 StudentOperate 對(duì)象
           StudentOperate op=new StudentOperate();
           op.insert(stu);
        }
    }


    運(yùn)行后的頁(yè)面為:

    再次查看數(shù)據(jù)庫(kù),看是否添加成功。

    如果希望看見(jiàn)所執(zhí)行的SQL語(yǔ)句,打開(kāi)hibernate.cfg.xml文件

    點(diǎn)擊 Add按鈕后,出現(xiàn)如下頁(yè)面:


    選擇Propertyshow_sql,設(shè)置Valueture,點(diǎn)擊OK

    運(yùn)行后的界面為:

    呵呵終于完成了!

    posted on 2008-07-23 16:54 胖胖泡泡 閱讀(15658) 評(píng)論(16)  編輯  收藏

    FeedBack:
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例[未登錄](méi)
    2009-05-02 14:15 | liu
    非常感謝
      回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2009-05-12 20:17 | newibie
    比網(wǎng)上其它的介紹好多了,很清楚!!!  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2009-05-15 18:05 | liyuanyuan
    謝謝,太清楚了、。。。。  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2009-11-25 21:49 | voilet

    運(yùn)行時(shí)出現(xiàn)
    Launch configuration ASTFrame references non-existing project HibernateTest.
    的錯(cuò)誤~~ 是怎么回事啊? 我實(shí)在是沒(méi)辦法了~~ 請(qǐng)教一下
      回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例[未登錄](méi)
    2010-06-15 09:47 | li
    挺好的,謝謝!  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2012-04-03 20:16 | Danny Tam
    大哥,可幸苦了你了。真的很詳細(xì)!灰常感激你的分享。  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例[未登錄](méi)
    2012-08-27 10:18 | test
    大哥,2012了,對(duì)我還有幫助啊  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例[未登錄](méi)
    2012-08-27 10:18 | test
    大哥2012快樂(lè)  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2012-11-29 11:44 | 驚人
    大哥好人,太感謝了,對(duì)我?guī)椭艽蟆?nbsp; 回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2013-05-02 14:24 | 啊大聲道
    !!!!太感謝  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2013-07-25 10:06 | wzf
    步驟很詳細(xì),我很快就上手了  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2013-10-07 21:27 | 第三方
    有錯(cuò)誤啊  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2013-10-07 21:37 | 第三方
    類(lèi)名一定要大寫(xiě),hibernate版本要小于4才行!!!!??!  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例[未登錄](méi)
    2013-11-08 21:45 | 1
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例
    2014-09-24 10:13 | ~!
    做得很認(rèn)真,頂一個(gè)  回復(fù)  更多評(píng)論
      
    # re: myeclipse開(kāi)發(fā)hibernate應(yīng)用程序示例[未登錄](méi)
    2015-08-13 15:11 |
    真的好好...  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲精品午夜国产VA久久成人| 好吊色永久免费视频大全| 中文字幕一精品亚洲无线一区| 青青在线久青草免费观看| 丁香花在线观看免费观看图片| 在线观看亚洲视频| 亚洲xxxx18| 亚洲国产精品日韩在线观看| 久久精品国产亚洲网站| 亚洲男人第一无码aⅴ网站| 国产精品国产免费无码专区不卡| 在线看无码的免费网站| 免费成人在线视频观看| 特级做A爰片毛片免费看无码 | 亚洲免费电影网站| 亚洲人成在线影院| 亚洲伊人色欲综合网| 国产日产亚洲系列| 亚洲美女视频一区二区三区| 亚洲资源在线观看| 久久久婷婷五月亚洲97号色| 亚洲性色AV日韩在线观看| 亚洲中文字幕无码一去台湾| 免费无码AV一区二区| 一级午夜a毛片免费视频| 一进一出60分钟免费视频| 久久永久免费人妻精品| 午夜视频在线免费观看| 免费萌白酱国产一区二区三区| 免费无码一区二区三区蜜桃| 久久久久久免费视频| 亚洲毛片网址在线观看中文字幕| 久久精品国产亚洲av影院| 国产综合成人亚洲区| 午夜视频在线免费观看| 亚洲av无码天堂一区二区三区| 亚洲人成电影网站国产精品| 亚洲毛片一级带毛片基地| 99999久久久久久亚洲| 国产免费一区二区三区免费视频 | 亚洲无线码一区二区三区|