JavaMuse

Hello,World in 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会自动的把刚才的对象进行更新,而不是保存一个新的对象。
这个例子有点极端,呵呵。能说明问题就可以了。

posted on 2007-02-10 17:42 满山红叶 阅读(484) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: