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

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

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

    superwei

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

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

    方便門外的學習者,給一個簡單的入門例子。

    如果你有用過其他持久架構 轉到hibernate其實很簡單。一些原理方面就不講了,

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

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

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

    首先當然要新建一個項目

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

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

    再來就是hibernate.properties

    從hibernate的src下面找到

    把它拷到你項目的src目錄下

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

    這樣一個JB下面的hibernate的開發環境就好了

    然后在hibernate.properties里面設置你的數據庫連接

    默認是HypersonicSQL

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

    新建一個類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;
      }
    
    }
    

    接下來是這個類對應的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>
        <!--定義類和表的對應-->
        <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字段在數據庫里面生成的方法-->
            <column
                name="TEXT"
                length="100"
                            not-null="true"
                    />
        </property>
           <!--定義對象關聯之間的對應關系和關聯的字段-->
        <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);
    
        /** 顧名思義 構建表。。。第一次運行的時候運行下面語句可以在數據庫生成表
         * 之后可以把下面這句去掉
         * */
    //    new SchemaExport(cfg).create(true, true);
    
        //先生成sessionFactory
        SessionFactory sessions = cfg.buildSessionFactory();
        //再從sessionFactory得到一個session
        Session session = sessions.openSession();
        //啟動事務
       Transaction tx = session.beginTransaction();
    
        //開始對數據庫的操作
        /*----對數據庫的創建操作--------*/
        Message message = new Message("helloWorld");
        //創建一條記錄
    
        session.save(message);
        //存入記錄
       session.flush();
        //提交事務
        tx.commit();
    
    
        /*---對數據庫的查詢操作---------------*/
    //    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()); // /*-------事務的處理----------------*/ // 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了 運行一下Hello看看出來什么吧

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

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

    當然hibernate最重要的還是它的原理,還有很多很好的,很有趣的功能和O/RM設計思想等著你自己發掘。

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

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

    主站蜘蛛池模板: 在线观看免费视频资源| 一级毛片人与动免费观看| 久久久久国色av免费看| 国产成人精品亚洲精品| 九九视频高清视频免费观看| 四虎1515hm免费国产| 日本永久免费a∨在线视频| 亚洲第一黄色网址| 国产高潮久久免费观看| 亚洲人成色777777在线观看| 久久国产免费观看精品| 亚洲一区二区三区电影| 免费国产作爱视频网站| 亚洲AV无码专区亚洲AV桃| 国产成人3p视频免费观看| 免费激情网站国产高清第一页| 相泽亚洲一区中文字幕| 久久免费视频99| 99热亚洲色精品国产88| 国产成人3p视频免费观看| 色吊丝性永久免费看码| 亚洲成在人线av| 国产麻豆视频免费观看| 国产精品亚洲一区二区三区久久| www亚洲精品少妇裸乳一区二区| 精品久久久久久国产免费了 | 精品亚洲一区二区三区在线观看 | 18禁超污无遮挡无码免费网站| 久久精品视频亚洲| 免费精品国偷自产在线在线| 美女羞羞喷液视频免费| 国产V亚洲V天堂无码| 国产成人免费爽爽爽视频| 成人免费网站视频www| 亚洲天天做日日做天天看| 丁香花在线观看免费观看| 国产免费黄色无码视频| 亚洲人成在久久综合网站| 亚洲国产一区二区视频网站| 免费无码又爽又刺激高潮视频| 亚洲sm另类一区二区三区|