<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永久中文无码精品| 亚洲综合无码一区二区痴汉| 亚洲香蕉久久一区二区| 亚洲 欧洲 自拍 另类 校园| 国产v亚洲v天堂a无| 亚洲男人的天堂网站| 精品久久久久久亚洲中文字幕| 亚洲国产成人AV在线播放| 美女被免费网站在线视频免费 | 亚洲国产精品无码久久久秋霞1| 在线精品亚洲一区二区| 亚洲AV无码AV吞精久久| 添bbb免费观看高清视频| 精品国产福利尤物免费| 永久免费av无码网站yy| 久久精品国产免费观看| 91视频国产免费| 国产一级一片免费播放i| 国产亚洲精品拍拍拍拍拍| 亚洲春色在线视频| 亚洲婷婷在线视频| 亚洲女子高潮不断爆白浆| 猫咪免费观看人成网站在线| 中文字幕av免费专区| 免费人成在线观看网站品爱网| 中文毛片无遮挡高潮免费| 日本免费一区二区三区最新| 亚洲精品天堂成人片?V在线播放| 亚洲精品无码不卡在线播HE | 亚洲av麻豆aⅴ无码电影| 亚洲一区二区三区AV无码| 亚洲视频在线观看网站| 亚洲一本到无码av中文字幕| 免费的黄色的网站| 免费A级毛片av无码| 日本高清免费不卡在线| 亚洲色自偷自拍另类小说| 亚洲国产精品久久网午夜| 猫咪免费观看人成网站在线|