十分钟在jb里面运行hibernate的简单例子
2005-06-16 10:24
489 查看
终于有点对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
代码如下
怎么样 比起CMP的持久 hibernate的持久是不是显得很轻量级。。
还可以试试看hibernate的性能 把Hello.java的最后一段注释去掉运行看看
当然hibernate最重要的还是它的原理,还有很多很好的,很有趣的功能和O/RM设计思想等着你自己发掘。
多看看它自己的文档,可以学到很多东西,它的文档真的非常好。
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设计思想等着你自己发掘。
多看看它自己的文档,可以学到很多东西,它的文档真的非常好。
相关文章推荐
- 十分钟在JB里运行的简单的例子
- Tuscany SCA以独立应用方式运行的简单例子
- 用gnuplot画图,扔latex里面。一个简单的例子。
- 用myeclipse实现hibernate注解简单例子
- 一个简单的hibernate连接oracle数据库例子!
- 菜鸟学习Hibernate——简单的一个例子
- erlang 简单例子的编译运行
- 终于在JBuilder9中按照自己的想法运行成功最简单的Hibernate了
- hibernate级联操 同时向2张表插入数据(一对多的关联,一个简单的例子说明)
- hibernate级联操 同时向2张表插入数据(一对多的关联,一个简单的例子说明)
- Hibernate的简单例子
- Mule学习(1)——安装,配置,以及简单例子的运行
- 简单ejb例子《没有运行过。。。。》
- Hibernate Component映射的一个简单例子
- 简单的hibernate数据库插入例子
- eclipse里Hibernate配置+最简单小例子
- Netty笔记一(可以运行看到结果的简单例子)
- 菜鸟学习Hibernate——简单的一个例子
- 1.2 hibernate一个简单例子
- Spring+struts2+hibernate框架的Java Web项目利用POI导出Excel简单例子