知识大全 浅谈Hibernate框架简述
Posted 操作
篇首语:学习知识要善于思考,思考,再思考。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅谈Hibernate框架简述相关的知识,希望对你有一定的参考价值。
浅谈Hibernate框架简述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在基于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事务 它主要方法有mit()和rollback() 可以从Session的beginTrancation()方法生成
Persistent Object
持久化对象可以是普通的Javabeans 惟一特殊的是它们与(仅一个)Session相关联 JavaBeans在Hibernate中存在三种状态
临时状态(transient):当一个JavaBean对象在内存中孤立存在 不与数据库中的数据有任何关联关系时 那么这个JavaBeans对象就称为临时对象(Transient Object)
持久化状态(persistent):当一个JavaBean对象与一个Session相关联时 就变成持久化对象(Persistent Object)
脱管状态(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简单示例
数据
create table T_register
(
id int primary key
userName varchar( )
userPwd varchar( )
sex varchar( )
age int
)
视图层 注册页面register jsp
用户名
密 码
性 别
年 龄
设计持久化类TRegister java
package hibernate PO;
/**
* 持久化类
*/
public class TRegister implements java io Serializable
// Fields
private Integer id;
private String userName;
private String userPwd;
private String sex;
private Integer age;
// Constructors
/** default constructor */
public TRegister()
/** minimal constructor */
public TRegister(Integer id)
this id = id;
/** full constructor */
public TRegister(Integer id String userName String userPwd String sex Integer age)
this id = id;
this userName = userName;
this userPwd = userPwd;
this sex = sex;
this age = age;
// Property accessors
public Integer getId()
return this id;
public void setId(Integer id)
this id = id;
public String getUserName()
return this userName;
public void setUserName(String userName)
this userName = userName;
public String getUserPwd()
return this userPwd;
public void setUserPwd(String userPwd)
this userPwd = userPwd;
public String getSex()
return this sex;
public void setSex(String sex)
this sex = sex;
public Integer getAge()
return this age;
public void setAge(Integer age)
this age = age;
设计Hibernate配置文件hibernate cfg xml
//Hibernate/Hibernate Configuration DTD //EN
configuration dtd >
root
jdbc:mysql://localhost: /study
hibernate dialect MySQLDialect
MySQL
root
gjt mm mysql Driver
true
设计映射文件TRegister hbm xml
mapping dtd >
设计hibernate基础类HibernateUtil java
package hibernate;
/**
* hibernate 基础类
* @author fengyan
* date :
*/
import hibernate HibernateException;
import hibernate Session;
import hibernate SessionFactory;
import hibernate cfg Configuration;
public class HibernateUtil
private static final SessionFactory sessionFactory;
static
try
Configuration config = new Configuration(nfigure( /hibernate/hibernate cfg xml );
sessionFactory = config buildSessionFactory();
catch(Throwable e)
throw new ExceptionInInitializerError(e);
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 isOpen())
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();
设计控制类
package hibernate servlet;
/**
* @author fengyan
* date :
* 设计Hibernate控制类
*/
import hibernate HibernateUtil;
import hibernate PO TRegister;
import java io IOException;
import java io PrintWriter;
import javax servlet ServletException;
import javax servlet HttpServlet;
import javax servlet HttpServletRequest;
import javax servlet HttpServletResponse;
import hibernate HibernateException;
import hibernate Session;
import hibernate Transaction;
public class RegisterServlet extends HttpServlet
private static final String CONTENT_TYPE = text/;charset=GBK ;
public void init() throws ServletException
// Put your code here
public void destroy()
super destroy(); // Just puts destroy string in log
// Put your code here
public void doGet(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException
response setContentType(CONTENT_TYPE);
request setCharacterEncoding( GBK );
PrintWriter out = response getWriter();
String userName = request getParameter( userName );
String userPwd = request getParameter( userPwd );
String sex = request getParameter( sex );
int age = Integer parseInt(request getParameter( age ));
TRegister rg = new TRegister();
rg setAge(age);
rg setSex(sex);
rg setUserName(userName);
rg setUserPwd(userPwd);
Session session = HibernateUtil currentSession();//生成Session实例
Transaction tx = session beginTransaction();
try
session save(rg); //保存持久类对象
mit(); //提交到数据库
session close();
response sendRedirect( registerOK jsp );
catch(HibernateException e)
e printStackTrace();
tx rollback();
public void doPost(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException
doGet(request response);
cha138/Article/program/Java/ky/201311/28144
相关参考
框架HibernateValidator简介 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用A
关于OJB和Hibernate框架的评议 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! OJB和
知识大全 浅谈在Hibernate中使用Oraclesequence
浅谈在Hibernate中使用Oraclesequence 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
知识大全 基于hibernate的开源通用查询框架-bba96
bba框架当前版本包含 bbacore核心框架封装HibernateCriteria提供方便的查询以及分页支持查询参数 bbastruts基于Struts的开发框架依赖core提供便捷的CRU
浅谈Hibernate获得成功的十大理由 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 下面是对
知识大全 浅谈Struts分页中的Hibernate如何实现
浅谈Struts分页中的Hibernate如何实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
开源框架Hibernate3的新特性以及发展趋势 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
关于Hibernate开发框架中的各个包文件解释 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 有关ssh框架的面试题 — ibatis与hibernate有什么区别
iBatis的sql语句需要自己手动写而Hibernate能够在程序运行时自动生成但是不要就这样以为Hibernate比iBatis方便其实二者熟悉之后的效率差不多而Hibernate还能够自动建表等
建议是有一点点是一点点基础的人又没有hibernate基础和经验的人比较适合(所谓一点点基础是最起码不要我介绍一些配置文件的什么的)注意我用的JDBC驱动inettdsTdsDriver 大