posts - 30, comments - 5, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Hello,World in Hibernate 入門

          Posted on 2010-05-04 11:30 無所謂 閱讀(373) 評論(1)  編輯  收藏 所屬分類: Hibernate

          本文介紹如何用hibernate寫一個hello world 程序,以及說明Hibernate下的對象的識別。
          1、配置文件hibernate.cfg.xml:

          <? xml version = ' 1.0 '  encoding = ' utf-8 ' ?>
          <! DOCTYPE hibernate - configuration PUBLIC
                  
          " -//Hibernate/Hibernate Configuration DTD 3.0//EN "
                  
          " http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd " >

          < hibernate - configuration >

              
          < session - factory >

                  
          <!--  Database connection settings  -->
                  
          < property name = " connection.driver_class " > com.mysql.jdbc.Driver </ property >
                  
          < property name = " connection.url " > jdbc:mysql: // localhost:3306/eg</property>
                   < property name = " connection.username " > root </ property >
                  
          < property name = " connection.password " > 4864452 </ property >

                  
          <!--  JDBC connection pool (use the built - in)  -->
                  
          < property name = " connection.pool_size " > 1 </ property >

                  
          <!--  SQL dialect  -->
                  
          < property name = " dialect " > org.hibernate.dialect.MySQLInnoDBDialect </ property >

                  
          <!--  Enable Hibernate ' s automatic session context management -->
                   < property name = " current_session_context_class " > thread </ property >

                  
          <!--  Disable the second - level cache   -->
                  
          < property name = " cache.provider_class " > org.hibernate.cache.NoCacheProvider </ property >

                  
          <!--  Echo all executed SQL to stdout  -->
                  
          < property name = " show_sql " > true </ property >

                  
          <!--  Drop and re - create the database schema on startup 
                  
          < property name = " hbm2ddl.auto " > create </ property >
                   
          -->
              
                  
          < mapping resource = " eg/Message.hbm.xml " />
                  
                  
              
          </ session - factory >

          </ hibernate - configuration >

          2、源文件:

          package  eg;

          public   class  Message  {
              
          private  Long id;
              
          private  String text;
                       
              
          private  Message nextMessage;

              
          public  Message()  {}
              
          public  Message(String text) {
                  
          this .text = text;
              }

              
              
          public   void  setId(Long id)  {
                  
          this .id  =  id; 
              }


              
          public   void  setText(String text)  {
                  
          this .text  =  text; 
              }


              
          public   void  setNextMessage(Message nextMessage)  {
                  
          this .nextMessage  =  nextMessage; 
              }

                 
          public  Long getId()  {
                  
          return  ( this .id); 
              }

                 
          public  String getText()  {
                  
          return  ( this .text); 
              }

                 
          public  Message getNextMessage()  {
                  
          return  ( this .nextMessage); 
              }
           
          }

          3、配置文件:Messsage.hbm.xml

          <? xml version = " 1.0 "  encoding = " utf-8 " ?>

          <! DOCTYPE hibernate - mapping PUBLIC
              
          " -//Hibernate/Hibernate Mapping DTD 3.0//EN "  
              
          " http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd " >

          < hibernate - mapping >
              
          < class
                  name
          =" eg.Message "
                  table
          = " MESSAGE "
              
          >

                  
          < id
                      name
          = " id "
                      column
          = " MESSAGE_ID "
                      type
          = " java.lang.Long "
                  
          >
                      
          < generator  class = " native " />
                                   
                  
          </ id >
                  
          < property
                      name
          = " text "
                      type
          = " java.lang.String "
                      update
          = " true "
                      insert
          = " true "
                      column
          = " MESSAGE_TEXT "
                  
          />

                  
          < many - to - one
                      name
          = " nextMessage "
                      
          class = " jmuse.eg.Message "
                      cascade
          = " all "
                      outer
          - join = " auto "
                      update
          = " true "
                      insert
          = " true "
                      column
          = " NEXT_MESSAGE_ID "
                  
          />

                
          </ class >

          </ hibernate - mapping >

          4、最后的包結構:

          + lib 
               antlr.jar 
               cglib.jar 
               asm.jar 
               asm
          - attrs.jars 
               commons
          - collections.jar 
               commons
          - logging.jar 
               hibernate3.jar 
               jta.jar 
               dom4j.jar 
               log4j.jar 
          +src 
              
          + eg
                 Message.java
                 Message.hbm.xml
                 TestMessage.java
               hibernate.cfg.ml
               log4j.properties

          5、測試:

           session.beginTransaction();
                  Message m
          = new  Message( " hello,world " );
                  session.save(m);
                  session.getTransaction().commit();
                  session.close();

           你會發現在數據庫中有一條信息了,id=1
          Hibernate的對象識別是通過對象的Id 來識別的:
          如:

          我們剛才在數據庫中保存了一個Id為1的Message對象。
          如果:
          session.beginTraction();
          Message m
          = new  Message();
          m.setId(
          new  Long( 1 ));
          m.setText(
          " This is another greeting " );
          session.saveOrUpdate(m);
          sesion.getTraction.commit();
          你會發現Hibernate會自動的把剛才的對象進行更新,而不是保存一個新的對象。
          這個例子有點極端,呵呵。能說明問題就可以了。

          評論

          # re: Hello,World in Hibernate 入門   回復  更多評論   

          2012-05-17 09:44 by hqan
          看不懂,也運行不起來,沒說清楚原理。
          主站蜘蛛池模板: 页游| 哈巴河县| 临泉县| 南木林县| 灵寿县| 罗源县| 泽库县| 天津市| 嘉鱼县| 柳州市| 呼图壁县| 柳林县| 苏尼特右旗| 长武县| 手机| 岳普湖县| 山西省| 乌鲁木齐市| 苏尼特右旗| 巴东县| 扎鲁特旗| 峨山| 汝城县| 棋牌| 吉水县| 绥德县| 桐庐县| 甘洛县| 乌兰察布市| 南川市| 扎赉特旗| 洪湖市| 普格县| 定边县| 凤阳县| 南乐县| 仪陇县| 揭阳市| 永靖县| 萨嘎县| 剑阁县|