当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级考试JAVA知识点整理(76)
发布时间:2010/12/17 16:12:30 来源:城市学习网 编辑:ziteng

  3.4 hibernate的hello word

  终于有点对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; [NextPage]  

  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

  代码:

  "-//Hibernate/Hibernate Mapping DTD 2.0//EN"

  "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

  name="hello.Message"

  table="Messages"

  >

[NextPage] 

  column="MESSAGE_ID"

  >

  name="text"

  type="string">

  name="TEXT"

  length="100"

  not-null="true"

  />

  name="nextMessage"

  cascade="all"

  column="NEXT_MESSAGE_ID"

  />

  然后就是测试类

  代码:

  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);

 [NextPage]

  //存入记录

  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设计思想等着你自己发掘。 多看看它自己的文档,可以学到很多东西,它的文档真的非常好。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved