一个配置的例子:
1.先在数据库中建立一个表cat
create table cat( cat_id varchar(20) PRIMARY KEY not null, name varchar(20) not null, sex char(1))
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协助完成。
<?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>
/*
* 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
更多内容请看PCdog.com--Hibernate相关文章 Hibernate原理与配置 win98使用技巧专题
