Hibernate框架简述 内部资料 请勿转载 谢谢合作

时间:2022-06-13 11:40:19

Hibernate的核心组件
在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作。
除配置文件,映射文件和持久化类外,Hibernate的核心组件包括以下几部分:
a)Configuration类:用来读取Hibernate配置文件,并生成SessionFactory对象。
b)SessionFactory接口:产生Session实例工厂。
c)Session接口:用来操作PO。它有get(),load(),save(),update()和delete()等方法用来对PO进行加载,保存,更新及删除等操作。它是Hibernate的核心接口。
d)Query接口:用来对PO进行查询操。它可以从Session的createQuery()方法生成。
e)Transaction接口:用来管理Hibernate事务,它主要方法有commit()和rollback(),可以从Session的beginTrancation()方法生成。

Persistent Object
持久化对象可以是普通的Javabeans,惟一特殊的是它们与(仅一个)Session相关联。JavaBeans在Hibernate中存在三种状态:
1.临时状态(transient):当一个JavaBean对象在内存中孤立存在,不与数据库中的数据有任何关联关系时,那么这个JavaBeans对象就称为临时对象(Transient Object)。
2.持久化状态(persistent):当一个JavaBean对象与一个Session相关联时,就变成持久化对象(Persistent Object)
3.脱管状态(detached):在这个Session被关闭的同时,这个对象也会脱离持久化状态,就变成脱管状态(Detached Object),可以被应用程序的任何层*使用,例如可以做与表示层打交道的数据舆对象(Data Transfer Object)。

Hibernate的运行过程
Hibernate的运行过程如下:
A:应用程序先调用Configration类,该类读取Hibernate的配置文件及映射文件中的信息,并用这些信息生成一个SessionFactpry对象。
B:然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载,保存,更新,删除等操作;在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将 提交这些操作结果到数据库中。

Hibernate的运行过程如下图:
Hibernate框架简述    内部资料 请勿转载  谢谢合作

Hibernate简单示例:
数据:

Hibernate框架简述    内部资料 请勿转载  谢谢合作create table T_register
Hibernate框架简述    内部资料 请勿转载  谢谢合作(
Hibernate框架简述    内部资料 请勿转载  谢谢合作    id    int primary key,
Hibernate框架简述    内部资料 请勿转载  谢谢合作    userName varchar(30),
Hibernate框架简述    内部资料 请勿转载  谢谢合作    userPwd varchar(30),
Hibernate框架简述    内部资料 请勿转载  谢谢合作    sex varchar(10),
Hibernate框架简述    内部资料 请勿转载  谢谢合作    age int
Hibernate框架简述    内部资料 请勿转载  谢谢合作)

视图层:注册页面register.jsp

Hibernate框架简述    内部资料 请勿转载  谢谢合作<%@ page language="java" contentType="text/html; charset=GBK"
Hibernate框架简述    内部资料 请勿转载  谢谢合作    pageEncoding="GBK"%>
Hibernate框架简述    内部资料 请勿转载  谢谢合作<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Hibernate框架简述    内部资料 请勿转载  谢谢合作<html>
Hibernate框架简述    内部资料 请勿转载  谢谢合作<head>
Hibernate框架简述    内部资料 请勿转载  谢谢合作<meta http-equiv="Content-Type" content="text/html; charset=GBK">
Hibernate框架简述    内部资料 请勿转载  谢谢合作<title>Insert title here</title>
Hibernate框架简述    内部资料 请勿转载  谢谢合作</head>
Hibernate框架简述    内部资料 请勿转载  谢谢合作<body>
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作<form action="servlet/RegisterServlet" method="POST">
Hibernate框架简述    内部资料 请勿转载  谢谢合作    用户名:<input type="text" name="userName" /><BR>
Hibernate框架简述    内部资料 请勿转载  谢谢合作    密  码:<input type="text" name="userPwd" /><BR>
Hibernate框架简述    内部资料 请勿转载  谢谢合作    性  别:<input type="text" name="sex" /><BR>
Hibernate框架简述    内部资料 请勿转载  谢谢合作    年  龄:<input type="text" name="age" /><BR>
Hibernate框架简述    内部资料 请勿转载  谢谢合作    <input type="submit" value="save" />
Hibernate框架简述    内部资料 请勿转载  谢谢合作</form>
Hibernate框架简述    内部资料 请勿转载  谢谢合作</body>
Hibernate框架简述    内部资料 请勿转载  谢谢合作</html>

设计持久化类TRegister.java

Hibernate框架简述    内部资料 请勿转载  谢谢合作持久化类

设计Hibernate配置文件hibernate.cfg.xml

Hibernate框架简述    内部资料 请勿转载  谢谢合作hibernate.cfg.xml

设计映射文件TRegister.hbm.xml

Hibernate框架简述    内部资料 请勿转载  谢谢合作TRegister.hbm.xml

设计hibernate基础类HibernateUtil.java

Hibernate框架简述    内部资料 请勿转载  谢谢合作package hibernate;
Hibernate框架简述    内部资料 请勿转载  谢谢合作/**
Hibernate框架简述    内部资料 请勿转载  谢谢合作 * hibernate 基础类
Hibernate框架简述    内部资料 请勿转载  谢谢合作 * @author fengyan
Hibernate框架简述    内部资料 请勿转载  谢谢合作 * date 2007-01-09 02:32
Hibernate框架简述    内部资料 请勿转载  谢谢合作 */
Hibernate框架简述    内部资料 请勿转载  谢谢合作import org.hibernate.HibernateException;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import org.hibernate.Session;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import org.hibernate.SessionFactory;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import org.hibernate.cfg.Configuration;
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作public class HibernateUtil {
Hibernate框架简述    内部资料 请勿转载  谢谢合作    
Hibernate框架简述    内部资料 请勿转载  谢谢合作    private static final SessionFactory sessionFactory;
Hibernate框架简述    内部资料 请勿转载  谢谢合作    
Hibernate框架简述    内部资料 请勿转载  谢谢合作    static
Hibernate框架简述    内部资料 请勿转载  谢谢合作    {
Hibernate框架简述    内部资料 请勿转载  谢谢合作        try
Hibernate框架简述    内部资料 请勿转载  谢谢合作        {
Hibernate框架简述    内部资料 请勿转载  谢谢合作            Configuration config = new Configuration().configure("/hibernate/hibernate.cfg.xml");
Hibernate框架简述    内部资料 请勿转载  谢谢合作            sessionFactory = config.buildSessionFactory();
Hibernate框架简述    内部资料 请勿转载  谢谢合作        }
Hibernate框架简述    内部资料 请勿转载  谢谢合作        catch(Throwable e)
Hibernate框架简述    内部资料 请勿转载  谢谢合作        {
Hibernate框架简述    内部资料 请勿转载  谢谢合作            throw new ExceptionInInitializerError(e);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        }
Hibernate框架简述    内部资料 请勿转载  谢谢合作    }
Hibernate框架简述    内部资料 请勿转载  谢谢合作    
Hibernate框架简述    内部资料 请勿转载  谢谢合作    public static final ThreadLocal session = new ThreadLocal();
Hibernate框架简述    内部资料 请勿转载  谢谢合作    
Hibernate框架简述    内部资料 请勿转载  谢谢合作    public static Session currentSession() throws HibernateException
Hibernate框架简述    内部资料 请勿转载  谢谢合作    {
Hibernate框架简述    内部资料 请勿转载  谢谢合作        Session s = (Session)session.get();
Hibernate框架简述    内部资料 请勿转载  谢谢合作        //Open a new Session,if this Thread has none yet
Hibernate框架简述    内部资料 请勿转载  谢谢合作        if(s == null || !s.isOpen())
Hibernate框架简述    内部资料 请勿转载  谢谢合作        {
Hibernate框架简述    内部资料 请勿转载  谢谢合作            s = sessionFactory.openSession();
Hibernate框架简述    内部资料 请勿转载  谢谢合作            session.set(s);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        }
Hibernate框架简述    内部资料 请勿转载  谢谢合作        return s;
Hibernate框架简述    内部资料 请勿转载  谢谢合作    }
Hibernate框架简述    内部资料 请勿转载  谢谢合作    
Hibernate框架简述    内部资料 请勿转载  谢谢合作    public static void closeSession() throws HibernateException
Hibernate框架简述    内部资料 请勿转载  谢谢合作    {
Hibernate框架简述    内部资料 请勿转载  谢谢合作        Session s = (Session)session.get();
Hibernate框架简述    内部资料 请勿转载  谢谢合作        session.set(null);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        if(s != null)
Hibernate框架简述    内部资料 请勿转载  谢谢合作            s.close();
Hibernate框架简述    内部资料 请勿转载  谢谢合作    }
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作}
Hibernate框架简述    内部资料 请勿转载  谢谢合作

设计控制类

Hibernate框架简述    内部资料 请勿转载  谢谢合作package hibernate.servlet;
Hibernate框架简述    内部资料 请勿转载  谢谢合作/**
Hibernate框架简述    内部资料 请勿转载  谢谢合作 * @author fengyan
Hibernate框架简述    内部资料 请勿转载  谢谢合作 * date  2007-01-09 02:44
Hibernate框架简述    内部资料 请勿转载  谢谢合作 * 设计Hibernate控制类
Hibernate框架简述    内部资料 请勿转载  谢谢合作 */
Hibernate框架简述    内部资料 请勿转载  谢谢合作import hibernate.HibernateUtil;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import hibernate.PO.TRegister;
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作import java.io.IOException;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import java.io.PrintWriter;
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作import javax.servlet.ServletException;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import javax.servlet.http.HttpServlet;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import javax.servlet.http.HttpServletRequest;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import javax.servlet.http.HttpServletResponse;
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作import org.hibernate.HibernateException;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import org.hibernate.Session;
Hibernate框架简述    内部资料 请勿转载  谢谢合作import org.hibernate.Transaction;
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作public class RegisterServlet extends HttpServlet {
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作    private static final String CONTENT_TYPE = "text/html;charset=GBK";
Hibernate框架简述    内部资料 请勿转载  谢谢合作    public void init() throws ServletException {
Hibernate框架简述    内部资料 请勿转载  谢谢合作        // Put your code here
Hibernate框架简述    内部资料 请勿转载  谢谢合作    }
Hibernate框架简述    内部资料 请勿转载  谢谢合作    public void destroy() {
Hibernate框架简述    内部资料 请勿转载  谢谢合作        super.destroy(); // Just puts "destroy" string in log
Hibernate框架简述    内部资料 请勿转载  谢谢合作        // Put your code here
Hibernate框架简述    内部资料 请勿转载  谢谢合作    }
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作    
Hibernate框架简述    内部资料 请勿转载  谢谢合作    public void doGet(HttpServletRequest request, HttpServletResponse response)
Hibernate框架简述    内部资料 请勿转载  谢谢合作            throws ServletException, IOException {
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作        response.setContentType(CONTENT_TYPE);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        request.setCharacterEncoding("GBK");
Hibernate框架简述    内部资料 请勿转载  谢谢合作        
Hibernate框架简述    内部资料 请勿转载  谢谢合作        PrintWriter out = response.getWriter();
Hibernate框架简述    内部资料 请勿转载  谢谢合作        
Hibernate框架简述    内部资料 请勿转载  谢谢合作        String userName = request.getParameter("userName");
Hibernate框架简述    内部资料 请勿转载  谢谢合作        String userPwd = request.getParameter("userPwd");
Hibernate框架简述    内部资料 请勿转载  谢谢合作        String sex = request.getParameter("sex");
Hibernate框架简述    内部资料 请勿转载  谢谢合作        int age = Integer.parseInt(request.getParameter("age"));
Hibernate框架简述    内部资料 请勿转载  谢谢合作        
Hibernate框架简述    内部资料 请勿转载  谢谢合作        TRegister rg = new TRegister();
Hibernate框架简述    内部资料 请勿转载  谢谢合作        rg.setAge(age);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        rg.setSex(sex);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        rg.setUserName(userName);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        rg.setUserPwd(userPwd);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        
Hibernate框架简述    内部资料 请勿转载  谢谢合作        Session session = HibernateUtil.currentSession();//生成Session实例
Hibernate框架简述    内部资料 请勿转载  谢谢合作        Transaction tx = session.beginTransaction();
Hibernate框架简述    内部资料 请勿转载  谢谢合作        
Hibernate框架简述    内部资料 请勿转载  谢谢合作        try
Hibernate框架简述    内部资料 请勿转载  谢谢合作        {
Hibernate框架简述    内部资料 请勿转载  谢谢合作            session.save(rg);    //保存持久类对象
Hibernate框架简述    内部资料 请勿转载  谢谢合作            tx.commit();        //提交到数据库
Hibernate框架简述    内部资料 请勿转载  谢谢合作            session.close();
Hibernate框架简述    内部资料 请勿转载  谢谢合作            response.sendRedirect("registerOK.jsp");
Hibernate框架简述    内部资料 请勿转载  谢谢合作        }
Hibernate框架简述    内部资料 请勿转载  谢谢合作        catch(HibernateException e)
Hibernate框架简述    内部资料 请勿转载  谢谢合作        {
Hibernate框架简述    内部资料 请勿转载  谢谢合作            e.printStackTrace();
Hibernate框架简述    内部资料 请勿转载  谢谢合作            tx.rollback();
Hibernate框架简述    内部资料 请勿转载  谢谢合作        }
Hibernate框架简述    内部资料 请勿转载  谢谢合作        
Hibernate框架简述    内部资料 请勿转载  谢谢合作    }
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作    public void doPost(HttpServletRequest request, HttpServletResponse response)
Hibernate框架简述    内部资料 请勿转载  谢谢合作            throws ServletException, IOException {
Hibernate框架简述    内部资料 请勿转载  谢谢合作        doGet(request,response);
Hibernate框架简述    内部资料 请勿转载  谢谢合作        
Hibernate框架简述    内部资料 请勿转载  谢谢合作    }
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作
Hibernate框架简述    内部资料 请勿转载  谢谢合作}