一个配置的例子: 1.先在数据库中建立一个表cat create table cat( cat_id varchar(20) PRIMARY KEY not null, name varchar(20) not null, sex char(1)) 2.建立hibernate.cfg.xml并生成hibernaetFactory.class管理他 hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<!-- DO NOT EDIT: This is a generated file that is synchronized --> <!-- by MyEclipse Hibernate tool integration. --> <hibernate-configuration>
<session-factory> <!-- properties --> <property name="connection.username">root</property> <property name="connection.url">jdbc:mysql://localhost:3306/test</property> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property> <property name="connection.password"></property> <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>
<!-- mapping files --> <mapping resource="com/mdcl/vo/Cat.hbm.xml"/>
</session-factory>
</hibernate-configuration> HibernaetFactory.java package com.mdcl.hibernate;
import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import net.sf.hibernate.cfg.Configuration;
/** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html}. */ public class HibernateFactory {
/** * Location of hibernate.cfg.xml file. * NOTICE: Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. That * is place the config file in a Java package - the default location * is the default Java package.<br><br> * Examples: <br> * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml". * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code> */ private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
/** Holds a single instance of Session */ private static final ThreadLocal threadLocal = new ThreadLocal();
/** The single instance of hibernate configuration */ private static final Configuration cfg = new Configuration();
/** The single instance of hibernate SessionFactory */ private static net.sf.hibernate.SessionFactory sessionFactory;
public static Session currentSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session != null && !session.isOpen()) session = null; if (session == null) { if (sessionFactory == null) { try { cfg.configure(CONFIG_FILE_LOCATION); sessionFactory = cfg.buildSessionFactory(); } catch (Exception e) { System.err .println("%%%% Error Creating HibernateSessionFactory %%%%"); e.printStackTrace(); } } session = sessionFactory.openSession(); threadLocal.set(session); } return session; } public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null);
if (session != null) { session.close(); } } private HibernateFactory() { }
} 3.建立cat表的po(持久对象),生成cat.cfg.xml,cat.java,AbstractCat.java的过程和上面生成hibernate.cfg.xml和hibernateFactory.java的过程可以由myeclipse协助完成。 cat.cfg.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" >
<!-- DO NOT EDIT: This is a generated file that is synchronized --> <!-- by MyEclipse Hibernate tool integration. --> <!-- Created Sat Feb 19 12:00:50 CST 2005 --> <hibernate-mapping package="com.mdcl.vo">
<class name="Cat" table="cat"> <id name="catId" column="cat_id" type="java.lang.String"> <generator class="uuid.hex"/> </id> <property name="name" column="name" type="java.lang.String" not-null="true" /> <property name="sex" column="sex" type="java.lang.String" /> </class> </hibernate-mapping> cat.java
/* * Created Thu Feb 17 16:11:44 CST 2005 by MyEclipse Hibernate Tool. */ package com.mdcl.vo;
import java.io.Serializable;
/** * A class that represents a row in the 'cat' table. * This class may be customized as it is never re-generated * after being created. */ public class Cat extends AbstractCat implements Serializable { /** * Simple constructor of Cat instances. */ public Cat() { }
/* (non-Javadoc) * @see com.mdcl.vo.AbstractCat#getCatId() */ public String getCatId() { // TODO Auto-generated method stub return super.getCatId(); } /* (non-Javadoc) * @see com.mdcl.vo.AbstractCat#getName() */ public String getName() { // TODO Auto-generated method stub return super.getName(); } /* (non-Javadoc) * @see com.mdcl.vo.AbstractCat#getSex() */ public String getSex() { // TODO Auto-generated method stub return super.getSex(); } /* (non-Javadoc) * @see com.mdcl.vo.AbstractCat#getWeight() */
/* (non-Javadoc) * @see com.mdcl.vo.AbstractCat#setCatId(java.lang.String) */ public void setCatId(String catId) { // TODO Auto-generated method stub super.setCatId(catId); } /* (non-Javadoc) * @see com.mdcl.vo.AbstractCat#setName(java.lang.String) */ public void setName(String name) { // TODO Auto-generated method stub super.setName(name); } /* (non-Javadoc) * @see com.mdcl.vo.AbstractCat#setSex(java.lang.String) */ public void setSex(String sex) { // TODO Auto-generated method stub super.setSex(sex); } /* (non-Javadoc) * @see com.mdcl.vo.AbstractCat#setWeight(java.lang.Integer) */
/* (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { // TODO Auto-generated method stub return super.hashCode(); } /* (non-Javadoc) * @see java.lang.Object#finalize() */ protected void finalize() throws Throwable { // TODO Auto-generated method stub super.finalize(); } /* (non-Javadoc) * @see java.lang.Object#clone() */ protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub return super.clone(); } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { // TODO Auto-generated method stub return super.equals(obj); } /* (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { // TODO Auto-generated method stub return super.toString(); } /** * Constructor of Cat instances given a simple primary key. * @param catId */ public Cat(java.lang.String catId) { super(); }
/* Add customized code below */
} AbstractCat.java /* * WARNING: DO NOT EDIT THIS FILE. This is a generated file that is synchronized * by MyEclipse Hibernate tool integration. * * Created Sat Feb 19 12:00:50 CST 2005 by MyEclipse Hibernate Tool. */ package com.mdcl.vo;
import java.io.Serializable;
/** * A class that represents a row in the cat table. * You can customize the behavior of this class by editing the class, {@link Cat()}. * WARNING: DO NOT EDIT THIS FILE. This is a generated file that is synchronized * by MyEclipse Hibernate tool integration. */ public abstract class AbstractCat implements Serializable { /** The cached hash code value for this instance. Settting to 0 triggers re-calculation. */ private int hashValue = 0;
/** The composite primary key value. */ private java.lang.String catId;
/** The value of the simple name property. */ private java.lang.String name;
/** The value of the simple sex property. */ private java.lang.String sex;
/** * Simple constructor of AbstractCat instances. */ public AbstractCat() { }
/** * Constructor of AbstractCat instances given a simple primary key. * @param catId */ public AbstractCat(java.lang.String catId) { this.setCatId(catId); }
/** * Return the simple primary key value that identifies this object. * @return java.lang.String */ public java.lang.String getCatId() { return catId; }
/** * Set the simple primary key value that identifies this object. * @param catId */ public void setCatId(java.lang.String catId) { this.hashValue = 0; this.catId = catId; }
/** * Return the value of the name column. * @return java.lang.String */ public java.lang.String getName() { return this.name; }
/** * Set the value of the name column. * @param name */ public void setName(java.lang.String name) { this.name = name; }
/** * Return the value of the sex column. * @return java.lang.String */ public java.lang.String getSex() { return this.sex; }
/** * Set the value of the sex column. * @param sex */ public void setSex(java.lang.String sex) { this.sex = sex; }
/** * Implementation of the equals comparison on the basis of equality of the primary key values. * @param rhs * @return boolean */ public boolean equals(Object rhs) { if (rhs == null) return false; if (! (rhs instanceof Cat)) return false; Cat that = (Cat) rhs; if (this.getCatId() != null && that.getCatId() != null) { if (! this.getCatId().equals(that.getCatId())) { return false; } } return true; }
/** * Implementation of the hashCode method conforming to the Bloch pattern with * the exception of array properties (these are very unlikely primary key types). * @return int */ public int hashCode() { if (this.hashValue == 0) { int result = 17; int catIdValue = this.getCatId() == null ? 0 : this.getCatId().hashCode(); result = result * 37 + catIdValue; this.hashValue = result; } return this.hashValue; } } 4.编写一个例子测试一下 servletTest.java /* * Created on 2005-2-19 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package com.mdcl.test;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import net.sf.hibernate.Transaction;
import org.apache.log4j.Logger;
import com.mdcl.hibernate.HibernateFactory; import com.mdcl.vo.Cat;
/** * @author a * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class servletTest extends HttpServlet {
/** * Destruction of the servlet. <br> */ private static Logger log=Logger.getLogger(servletTest.class); public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here }
/** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response);
}
/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html"); PrintWriter out = response.getWriter(); out .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); try { log.info("........servletTest.doPost()....start"); Session session =HibernateFactory.currentSession(); Transaction tx = session.beginTransaction(); Cat cat = new Cat(); cat.setCatId("4"); cat.setName("Karl"); cat.setSex("F"); session.save(cat); tx.commit(); } catch (HibernateException e) { e.printStackTrace(); log.error("........servletTest.doPost()....error"); } log.debug("start"); out.println(", using the POST method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); log.info("........servletTest.doPost()....end"); }
/** * Initialization of the servlet. <br> * * @throws ServletException if an error occure */ public void init() throws ServletException { // Put your code here }
} 好了,完成了一次hibernate旅行。不求甚解? 参考由曹晓刚等人翻译的hibernate中文文档 hibernate中文站点www.hibernate.org.cn 
|