首页  ·  知识 ·  编程语言
hibernate入门配置
网友  中国IT实验室   Java  编辑:德仔   图片来源:网络
HibernateUtil.java   package com.netease.wireless.groupsms.hbnt.util;   import
HibernateUtil.java

  package com.netease.wireless.groupsms.hbnt.util;

  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 HibernateUtil {

  /**

  * 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";//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;

  /**

  * Returns the ThreadLocal Session instance.  Lazy initialize

  * the <code>SessionFactory</code> if needed.

  *

  *  @return Session

  *  @throws HibernateException

  */

  public static Session currentSession() throws HibernateException {

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

  &nbsp;    if (session == null) {

  if (sessionFactory == null) {

  try {

  cfg.configure(CONFIG_FILE_LOCATION);

  //cfg.configure();

  sessionFactory = cfg.buildSessionFactory();

  }

  catch (Exception e) {

  System.err.println("%%%% Error Creating SessionFactory %%%%");

  System.err.println("|||||||||||||" + e.getMessage());

  e.printStackTrace();

  }

  }

  session = sessionFactory.openSession();

  threadLocal.set(session);

  }

  return session;

  }/**

  *  Close the single hibernate session instance.

  *

  *  @throws HibernateException

  */

  public static void closeSession() throws HibernateException {

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

  threadLocal.set(null);

  if (session != null) {

  session.close();

  }

  }

  /**

  * Default constructor.

  */

  private HibernateUtil() {

  }

  }

  一.建表

  cat表

  代码

  CREATE TABLE cat (

  cat_id varchar(20) NOT NULL,

  NAME varchar(20) NOT NULL,

  sex CHAR(1),

  weight FLOAT,

  PRIMARY KEY (cat_id)

  );

  二、po层(系统以cat.hbm.xml为准,一个xml可以写多个class)

  Xml代码

  <<<<<<<<<<<<<cat.hbm.xml>>>>>>>>>>>>>>>>>>>>>>>

  <?xml version="1.0"?>

  <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

  <hibernate-mapping>

  <class name="com.netease.wireless.groupsms.hbnt.po.Cat" table="cat">

  <id name="id" type="string" unsaved-value="null" >

  <column name="cat_id" sql-type="varchar(20)" not-null="true"/>

  <generator class="uuid.hex"/>

  </id>

  <property name="name">

  <column name="NAME" sql-type="varchar(20)" not-null="true"/>

  </property>

  <property name="sex"/>

  <property name="weight"/>

  </class>

  </hibernate-mapping>

  Java代码

  <<<<<<<<<<<<<Cat.java>>>>>>>>>>>>>>>>>>>>>>>>>

  package com.netease.wireless.groupsms.hbnt.po;

  public class Cat {

  private String id;

  private String name;

  private char sex;

  private float weight;

  public Cat() {

  }

  public String getId() {

  return id;

  }

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

  }

  public String toString() {

  String strCat = new StringBuffer()

  .append(this.getId()).append(", ")

  .append(this.getName()).append(", ")

  .append(this.getSex()).append(", ")

  .append(this.getWeight())

  .toString();

  return strCat;

  }

  }

  三、hibernate.cfg.xml

  (切切不要自己去加属性,基本的就两个connection.datasource和dialect)

  Xml代码

  <property name="connection.username">root</property>

  <property name="connection.password">root</property>

  <property name="connection.provider_class">net.sf.hibernate.connection.DatasourceConnectionProvider</property>

  <property name="jndi.class">org.gjt.mm.mysql.Driver</property>

  <<<<<<<<<<<<<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.datasource">java:comp/env/jdbc/test</property>

  <property name="show_sql">true</property>

  <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

  <!-- mapping files -->

  <mapping resource="com/netease/wireless/groupsms/hbnt/po/cat.hbm.xml"/>

  </session-factory>

  </hibernate-configuration>}四、测试servlet

  //Session生成/关闭

  Java代码

  <<<<<<<<<<<<<测试HbntTestSvlt.java>>>>>>>>>>>>>>>>>>>>>>>

  /*

  *

  * @(#)CorpSMS.corpsms V1.0 2005-1-15

  * Copyright 2003 NetEase, Inc. All rights reserved.

  *

  * coder: sweater

  * email: wtshi@corp.netease.com

  *

  * graphic designer:

  * email:

  *

  * fuction:向电话薄中添加组和电话号码

  *

  */

  package com.netease.wireless.groupsms.vo;

  import java.io.IOException;

  import java.io.PrintWriter;

  import java.util.Iterator;

  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.Query;

  import net.sf.hibernate.Session;

  import net.sf.hibernate.Transaction;

  import com.netease.wireless.groupsms.hbnt.po.Cat;

  import com.netease.wireless.groupsms.hbnt.util.HibernateUtil;

  /**

  *

  * @author sweater

  */

  public class HbntTestSvlt extends HttpServlet {

  /**

  * Constructor of the object.

  */

  public HbntTestSvlt() {

  super();

  }

  /**

  * Destruction of the servlet. <br>

  */

  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 {

  response.setContentType("text/html");

  PrintWriter out = response.getWriter();

  out.println("<html>");

  out.println("<head>");

  out.println("<title>Hello Hibernate</title>");

  out.println("</head>");

  out.println("<body>");

  out.println("Hello Hibernate!<br>");

  try {

  Session session = HibernateUtil.currentSession();

  Transaction tx = session.beginTransaction();

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

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

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

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

  out.println("Cat: " + cat.toString() + "<br>");

  }

  tx.commit();

  HibernateUtil.closeSession();

  } catch (HibernateException e) {

  System.out.println(e.getMessage());

  //System.out.println(e.printStackTrace());

  }

  out.println("</body>");

  out.println("</html>");

  }/**

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

  out.println(", using the POST method");

  out.println("  </BODY>");

  out.println("</HTML>");

  out.flush();

  out.close();

  }

  /**

  * Returns information about the servlet, such as

  * author, version, and copyright.

  *

  * @return String information about this servlet

  */

  public String getServletInfo() {

  return "This is my default servlet created by Eclipse";

  }

  /**

  * Initialization of the servlet. <br>

  *

  * @throws ServletException if an error occure

  */

  public void init() throws ServletException {

  // Put your code here

  }

  }

  Xml代码

  <<<<<<<<<<<<<该servlet使用时的web.xml>>>>>>>>>>>>>>>>>>>>>>>

  <?xml version="1.0" encoding="UTF-8"?>

  <web-app version="2.4"

  xmlns="http://java.sun.com/xml/ns/j2ee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <servlet>

  <description>hbnttest</description>

  <display-name>hbnttest</display-name>

  <servlet-name>HbntTestSvlt</servlet-name>

  <servlet-class>com.netease.wireless.groupsms.vo.HbntTestSvlt</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>HbntTestSvlt</servlet-name>

  <url-pattern>/servlet/HbntTestSvlt</url-pattern>

  </servlet-mapping>

  </web-app>

  </SPAN< p>

 

本文作者:网友 来源:中国IT实验室
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读