Hello,World in Hibernate 入门

url:
http://www.blogjava.net/zhuguangxiang/archive/2007/02/10/99147.html

本文介绍如何用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会自动的把刚才的对象进行更新,而不是保存一个新的对象。
这个例子有点极端,呵呵。能说明问题就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值