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

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

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

    superwei

    導(dǎo)航

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計(jì)

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    十分鐘在jb(JBuilder)里面運(yùn)行hibernate的簡單例子

    方便門外的學(xué)習(xí)者,給一個簡單的入門例子。

    如果你有用過其他持久架構(gòu) 轉(zhuǎn)到hibernate其實(shí)很簡單。一些原理方面就不講了,

    robbin講的肯定比我好的多,自己去精華版看看。

    我所給的只是我當(dāng)初剛開始接觸hibernate時候很想要的一個簡單例子和設(shè)置方法。

    一直沒有找到,所以現(xiàn)在放到這里給大家看看,(只給想要入門的一個直觀的感應(yīng),呵呵)

    首先當(dāng)然要新建一個項(xiàng)目

    然后在Project Properties->Paths->Required Libraries->add->new 這里定義hibernate的類庫 把hibernate的lib下面的所有jar包進(jìn)去 當(dāng)然還有hibernate2.jar也要

    然后一路ok下去就可以了。

    再來就是hibernate.properties

    從hibernate的src下面找到

    把它拷到你項(xiàng)目的src目錄下

    (什么,你的項(xiàng)目沒有src目錄,新建一個隨便的類就有src目錄了)

    這樣一個JB下面的hibernate的開發(fā)環(huán)境就好了

    然后在hibernate.properties里面設(shè)置你的數(shù)據(jù)庫連接

    默認(rèn)是HypersonicSQL

    嗯 接下來的是你最想要做的事情了 其實(shí)很簡單

    新建一個類Message.java

    代碼如下

    package hello;
    
    import java.io.Serializable;
    
    /**
     * @author getdown
     * @version 1.0
     */
    
    public class Message implements Serializable {
      private Long id;
      private String text;
      //定義一個簡單鏈表 指向另外的一個Message
      private Message nextMessage;
      public Message() {}
    
      public Message(Long id) {
        this.id = id;
      }
    
      public Message(String text) {
        this.text = text;
      }
    
      public Message(Long id, String text) {
        this.id = id;
        this.text = text;
      }
    
      public Long getId() {
        return id;
      }
    
      private void setId(Long id) {
        this.id = id;
      }
    
      public String getText() {
        return text;
      }
    
      public void setText(String text) {
        this.text = text;
      }
    
      public Message getNextMessage() {
        return nextMessage;
      }
    
      public void setNextMessage(Message nextMessage) {
        this.nextMessage = nextMessage;
      }
    
    }
    

    接下來是這個類對應(yīng)的hibernate的配置文件 Message.hbm.xml

    <?xml version="1.0"?>
    
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping>
        <!--定義類和表的對應(yīng)-->
        <class
            name="hello.Message"
            table="Messages"
        >
        <!--定義ID字段和生成ID的策略 這里采用identity-->
        <id    name="id"
            column="MESSAGE_ID"
        >
        <generator class="identity"/>
        </id>
            <!--定義里面的text字段-->
        <property
            name="text"
                    type="string">
                    <!--定義text字段在數(shù)據(jù)庫里面生成的方法-->
            <column
                name="TEXT"
                length="100"
                            not-null="true"
                    />
        </property>
           <!--定義對象關(guān)聯(lián)之間的對應(yīng)關(guān)系和關(guān)聯(lián)的字段-->
        <many-to-one
            name="nextMessage"
            cascade="all"
            column="NEXT_MESSAGE_ID"
        />
        </class>
    </hibernate-mapping>
    

    然后就是測試類

    package hello;
    
    import net.sf.hibernate.cfg.Configuration;
    import net.sf.hibernate.SessionFactory;
    import net.sf.hibernate.tool.hbm2ddl.SchemaExport;
    import net.sf.hibernate.Session;
    import net.sf.hibernate.Query;
    import net.sf.hibernate.Hibernate;
    import net.sf.hibernate.type.LongType;
    import net.sf.hibernate.Transaction;
    
    
    
    /**
     * @author getdown
     * @version 1.0
     */
    
    public class Hello {
      public Hello() {
      }
    
      public static void main(String[] args) throws Exception {
        Configuration cfg = new Configuration().addClass(Message.class);
    
        /** 顧名思義 構(gòu)建表。。。第一次運(yùn)行的時候運(yùn)行下面語句可以在數(shù)據(jù)庫生成表
         * 之后可以把下面這句去掉
         * */
    //    new SchemaExport(cfg).create(true, true);
    
        //先生成sessionFactory
        SessionFactory sessions = cfg.buildSessionFactory();
        //再從sessionFactory得到一個session
        Session session = sessions.openSession();
        //啟動事務(wù)
       Transaction tx = session.beginTransaction();
    
        //開始對數(shù)據(jù)庫的操作
        /*----對數(shù)據(jù)庫的創(chuàng)建操作--------*/
        Message message = new Message("helloWorld");
        //創(chuàng)建一條記錄
    
        session.save(message);
        //存入記錄
       session.flush();
        //提交事務(wù)
        tx.commit();
    
    
        /*---對數(shù)據(jù)庫的查詢操作---------------*/
    //    Message message = new Message();
    //    Query q = session.createQuery("from Message as message where message.id=1");
    //    message = (Message) q.list().get(0);
    //    message.getNextMessage().setText("helloNext");
    //    session.flush();
    //    session.close();
    //    Long id = new Long(1);
    //    Message message = (Message) session.find("from Message as message where 
    message.id=?", id, Hibernate.LONG).get(0); // System.out.println(message.getText()); // /*-------事務(wù)的處理----------------*/ // try { // Message message = new Message("hello"); // session.save(message); // session.flush(); // message = new Message("hello"); // session.save(message); // session.flush(); // tx.commit(); // } // catch (HibernateException ex) { // tx.rollback(); // } /*-------添加1000條記錄時間--------------*/ // long start = System.currentTimeMillis(); // for(int i = 0; i < 1000; i ++) { // Message message = new Message("hello"); // session.save(message); // session.flush(); // } // tx.commit(); // long end = System.currentTimeMillis(); // System.out.println("添加1000條記錄時間---" + (end-start)/1000 + "s"); session.close(); } }

    ok了 運(yùn)行一下Hello看看出來什么吧

    怎么樣 比起CMP的持久 hibernate的持久是不是顯得很輕量級。。

    還可以試試看hibernate的性能 把Hello.java的最后一段注釋去掉運(yùn)行看看

    當(dāng)然hibernate最重要的還是它的原理,還有很多很好的,很有趣的功能和O/RM設(shè)計(jì)思想等著你自己發(fā)掘。

    多看看它自己的文檔,可以學(xué)到很多東西,它的文檔真的非常好。

    posted on 2005-10-31 11:27 小辭猬 閱讀(341) 評論(0)  編輯  收藏 所屬分類: JAVA

    主站蜘蛛池模板: 亚洲午夜免费视频| 亚洲日本在线观看视频| 亚洲视频一区二区在线观看| 久久精品成人免费网站| 国产a v无码专区亚洲av| 一级一级一片免费高清| 精品亚洲一区二区三区在线观看| 中文字幕永久免费视频| 亚洲A∨精品一区二区三区| 无套内谢孕妇毛片免费看看| 亚洲精品第一国产综合境外资源| 一级毛片免费播放视频| 亚洲情XO亚洲色XO无码| 久久久久成人精品免费播放动漫| 亚洲第一视频网站| 无码国产精品一区二区免费式直播| 亚洲国产精品综合一区在线| 成年女人视频网站免费m| 亚洲日韩精品无码专区加勒比| 日日AV拍夜夜添久久免费| 又大又硬又粗又黄的视频免费看| 91麻豆国产免费观看| 亚洲日韩中文字幕天堂不卡| 久久WWW色情成人免费观看| 亚洲av无码兔费综合| 在线日韩日本国产亚洲| 久久久久久国产精品免费免费男同 | 久久一区二区三区免费播放| 亚洲性无码av在线| 情侣视频精品免费的国产| 国产福利免费视频| 亚洲精品**中文毛片| 国产精品深夜福利免费观看| 国产99久久久国产精免费| 久久精品国产亚洲精品2020| 青青草a免费线观a| 一级做a爰片性色毛片免费网站| 亚洲综合一区二区国产精品| 性感美女视频免费网站午夜 | 亚洲欧美自偷自拍另类视| AV在线播放日韩亚洲欧|