Hibernate初体验Cat之快速上手

779 篇文章 0 订阅
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

  Hibernate的手册里的Cat例子感觉很不明了,很难照着它轻松的运行起第一个例子,费了点周折,总算看到一点结果,如果你是新手,可以参考一下,少走一些弯路。

  1.下载tomCatHibernate

  Cat-5/v5.0.27/bin/jakarta-tomCat-5.0.27.zip " target=_blank />TomCat 5.0.27 | Cat-5/v5.0.28/bin/jakarta-tomCat-5.0.28.zip" target=_blank />TomCat 5.0.28 | Hibernate/?sort_by=date&sort=desc" target=_blank />Hibernate2.1.6

  2. 安装

  以tomCat+mysql+Hibernate为例

  tomCat的安装,及mysql的安装和DBCP的配制参见

  http://blog.csdn.net/ahxu/archive/2004/09/01/91611.aspx,这里就不提了,这里假设tomCat+mysql已经配置并测试可用,这里%WebApp%代表你已配置好的一个web应用的root,着重说一下Hibernate的安装,

  1) 解压下载的压缩包,将解压出来的Hibernate2.jar复制到%WebApp%/WEB-INF/lib

  2) 将解压出来的lib目录下的

  cglib-full-2.0.2.jar

  commons-collections-2.1.1.jar

  commons-logging-1.0.4.jar

  dom4j-1.4.jar

  ehcache-0.9.jar

  jta.jar

  log4j-1.2.8.jar

  odmg-3.0.jar

  文件同样复制到%WebApp%/WEB-INF/lib,具体请参见解压出来的lib目录下的readme.txt。

  3) 将解压出来的etc目录下的

  log4j.properties

  文件复制到%WebApp%/WEB-INF/classes。

  3.编写相关文件

  1) 按照参考文档,配置Hibernate,将以下代码保存为Hibernate.cfg.xml放在%WebApp%/WEB-INF/classes下

 

 

 

  Hibernate-configuration

  PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

  "Hibernate.sourceforge.net/Hibernate-configuration-2.0.dtd" />http://Hibernate.sourceforge.net/Hibernate-configuration-2.0.dtd">

  <Hibernate-configuration>

 

 

 

 

  java:comp/env/jdbc/mysql

  false

  net.sf. Hibernate.dialect.MySQLDialect

 

  Cat.hbm.xml"/>

 

  Hibernate-configuration>

 

  NOTE:这里与Hibernate文档里的不一样,这里指定数据源为mysql数据库jdbc/mysql,方言dialect为net.sf.Hibernate.dialect.MySQLDialect。

  2) 将以下代码保存为Cat.java,并生成相应的Cat.class,放入%WebApp%/WEB-INF/classes,这里无论你用什么方法生成Cat.class,但最终Cat.class应在%WebApp%/WEB-INF/classes/net/sf/Hibernate/examples/quickstart目录下

 

 

  package net.sf.Hibernate.examples.quickstart;

  public class Cat {

  private String id;

  private String name;

  private char sex;

  private float weight;

  public Cat() {

  }

  public String getId() {

  return id;

  }

  private void setId(String id) {

  this.id = id;

  }

  public String getName() {

  return name;

  }

  public void setName(String name) {

  this.name = name;

  }

  public char getSex() {

  return sex;

  }

 

 

 

  public void setSex(char sex) {

  this.sex = sex;

  }

  public float getWeight() {

  return weight;

  }

  public void setWeight(float weight) {

  this.weight = weight;

  }

  }

 

  3) 将以下代码保存为O/R映射文件Cat.hbm.xml,放入%WebApp%/WEB-INF/classes

 

 

  Hibernate-mapping

  PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"

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

  <Hibernate-mapping>

  Hibernate.examples.quickstart. Cat" table=" Cat">

 

 

  Cat_ID" sql-type="char(32)" not-null="true"/>

 

 

 

 

 

 

 

 

 

  Hibernate-mapping

  4) 在数据库内建表,结构如下

  Column | Type | Modifiers

  --------+-----------------------+-----------

  Cat_id | character(32) | not null

  name | character varying(16) | not null

  sex | character(1) |

  weight | real |

  Indexes: Cat_pkey primary key btree (Cat_id)

  5) 将以下代码保存为HibernateUtil.java,并生成相应的HibernateUtil.class,放入%WebApp%/WEB-INF/classes,同样注意package

 

 

  package net.sf.Hibernate.examples.quickstart;

  import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;

  import net.sf.Hibernate.*;

  import net.sf.Hibernate.cfg.*;

  public class HibernateUtil {

  private static Log log = LogFactory.getLog(HibernateUtil.class);

  private static final SessionFactory sessionFactory;

  static {

  try {

  // Create the SessionFactory

  sessionFactory = new Configuration().configure().buildSessionFactory();

  } Catch (Throwable ex) {

  log.error("Initial SessionFactory creation failed.", ex);

  throw new ExceptionInInitializerError(ex);

  }

  }

  public static final ThreadLocal session = new ThreadLocal();

  public static Session currentSession() throws HibernateException {

  Session s = (Session) session.get();

  // Open a new Session, if this Thread has none yet

  if (s == null) {

  s = sessionFactory.openSession();

  session.set(s);

  }

  return s;

  }

  public static void closeSession() throws HibernateException {

  Session s = (Session) session.get();

  session.set(null);

  if (s != null)

  s.close();

  }

  }

 

  NOTE:这里与Hibernate文档也不同,原文档编绎时缺少2个包,这里已加上。

  6) 将以下代码保存为test.jsp,放入%WebApp%/,用http测试

 

 

  <%@ page language="java" pageEncoding="GB2312" %><%@ page import="net.sf.Hibernate.Transaction"%><%@ page import="net.sf.Hibernate.Session"%><%@ page import="net.sf.Hibernate.cfg.*"%><%@ page import="net.sf.Hibernate.Query"%><%@ page import="net.sf.Hibernate.examples.quickstart.HibernateUtil"%><%@ page import="net.sf.Hibernate.examples.quickstart.Cat"%><%@ page import="java.util.*"%>Lomboz JSP

  <%

  //添加一只Cat

  Session ses = HibernateUtil.currentSession();

  Transaction tx= ses.beginTransaction();

  Cat princess = new Cat();

  princess.setName("ahxu");

  princess.setSex('F');

  princess.setWeight(7.4f);

  ses.save(princess);

  tx.commit();

  HibernateUtil.closeSession();

  //读取库里所有Cat

  ses = HibernateUtil.currentSession();

  tx= ses.beginTransaction();

  Query query = ses.createQuery("select c from Cat as c where c.sex = :sex");

  query.setCharacter("sex", 'F');

  for (Iterator it = query.iterate(); it.hasNext();) {

  Cat Cat = (Cat) it.next();

  out.println("Female Cat: " + Cat.getName() );

  }

  tx.commit();

  HibernateUtil.closeSession();

  %>

 

 

 

  小结

  步骤基本与原文档步骤相同,只是做了一些补充,方便上手,这里并没有对其中的一些配置做具体解释,如有疑问请参见发行包中的相关文档。

  以上tomCat5.027 + Hibernate2.1.6测试通过

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值