hibernate的hello word

转载 2007年09月23日 13:03:00
终于有点对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();
//开始对数据库的操作



/*----对数据库的创建操作--------*/
Message message = new Message("helloWorld");
//创建一条记录
session.save(message);
//存入记录
session.flush();


/*---对数据库的查询操作---------------*/
// 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());


// /*-------事务的处理----------------*/
// Transaction tx = session.beginTransaction();
// 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条记录时间--------------*/
// Message message;
// long start = System.currentTimeMillis();
// for(int i = 0; i < 1000; i ++) {
// message = new Message("hello");
// session.save(message);
// session.flush();
// }
// long end = System.currentTimeMillis();
// System.out.println("添加1000条记录时间---" + (end-start)/1000 + "s");



session.close();


}

}

ok了 运行一下Hello看看出来什么吧
怎么样 比起CMP的持久 hibernate的持久是不是显得很轻量级。。
还可以试试看hibernate的性能 把Hello.java的最后一段注释去掉运行看看

当然hibernate最重要的还是它的原理,还有很多很好的,很有趣的功能和O/RM设计思想等着你自己发掘。
多看看它自己的文档,可以学到很多东西,它的文档真的非常好。
 

Hello World之Hibernate版

HelloWorld之Hibernate版 作者:雨水 2014-1-18 摘要:Hello World之Hibernate版。Hibernate是一个数据库ORM(Object/RelationMa...
  • gobitan
  • gobitan
  • 2014-01-20 19:11:07
  • 3022

创建一个Hibernate 的HelloWorld

开始之前先介绍一下Hibernate开发的步骤: ①. 创建hIbernate的配置文件 ②. 创建持久化类 ③. 创建对象-关系映射文件 ④. 通过Hibernate API 编写访问数据库的...
  • chuck_kui
  • chuck_kui
  • 2016-05-28 23:49:38
  • 644

Hibernate教程01_Hibernate的HelloWorld及基本配置

本教程开发环境为: Myeclipse 8.5 、Hibernate3.3.2、JDK 1.6、mysql5.5 本教程每节课都附带源码,强烈大家建议配合源码学习。 本节源码:http://...
  • e421083458
  • e421083458
  • 2013-04-12 16:34:23
  • 6694

Unity从HelloWord开始

Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity...
  • EricFantastic
  • EricFantastic
  • 2016-03-26 17:58:28
  • 2114

linux c/c++ hello word

 $ vim Hello.c #include int main(void) {  printf("Hello world!/n");  return 0; } :wq 存盘为Hello.c...
  • ZengMuAnSha
  • ZengMuAnSha
  • 2010-08-20 16:18:00
  • 3133

前端笔试题面试题记录

Q:什么情况下会碰到跨域问题?有哪些解决方法?跨域问题是这是浏览器为了安全实施的同源策略导致的,同源策略限制了来自不同源的document、脚本,同源的意思就是两个URL的域名、协议、端口要完全相同。...
  • qq_34926773
  • qq_34926773
  • 2018-03-27 15:36:36
  • 65

java hello word

 public class Hello{     public static void main(String args[])     {          System.out.println("h...
  • Sally3322
  • Sally3322
  • 2009-05-13 22:17:00
  • 193

BizTalk开发系列(一) "Hello World"

学习开发语言的时候很喜欢输出“Hello World”作为第一个程序。今天我们也在BizTalk 上创建一个简单的 "Hello World" 程序。        BizTalk的时候有很多文...
  • xksyhjb
  • xksyhjb
  • 2016-12-14 16:29:01
  • 111

Windows程序设计(Hello,word!)

我用"Hello,word!"代替了原标题的“你的第一个程序”,相信学过C的童鞋大多数都是用K&R写的教材,开头第一章的第一个程序就是编程输出"Hello,word!",所以我们学习Windows程序...
  • ccrookie
  • ccrookie
  • 2015-05-15 18:47:53
  • 505

Node js 写 hello word

1.安装: 到Node.js官网下载就可以了,才5M多点,双击后按步骤安装就可以了。 2."Hello World" 首先,创建个hello.js的文件,在文件中copy如下代码: var http ...
  • qq_19872525
  • qq_19872525
  • 2017-12-04 16:52:27
  • 33
收藏助手
不良信息举报
您举报文章: hibernate的hello word
举报原因:
原因补充:

(最多只允许输入30个字)