package org.cric.util;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory factory=null;
//静态方法,只实例化一次,因为SessionFactory重量级,每个SessionFactory对应一个数据库,包含这个数据库的全部信息
//单实例!
static{
try{
Configuration cfg=new Configuration().configure();
factory=cfg.buildSessionFactory();
}catch(Exception e){
e.printStackTrace();
}
}
//获取Session 对象
public static Session getSession(){
return factory.openSession();
}
//获取SessionFactory对象
public static SessionFactory getSessionFactory(){
return factory;
}
//因为Session 不是线程安全的,所以需要关闭
public static void closeSession(Session session){
if(session!=null){
if(session.isOpen()){
session.close();
}
}
}
//封装save方法
public static Integer save(Object object){
Integer status=0;
Session session=null;
Transaction tr=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
Serializable serializable=session.save(object);
status=serializable.hashCode();//序列化转化成Integer类型
tr.commit();
return status;
}
catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
//封装update方法
public static Integer update(Object object){
Session session=null;
Transaction tr=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
session.update(object);
tr.commit();
return 1;
}catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
//封装delete方法
public static Integer delete(Object object){
Session session=null;
Transaction tr=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
session.delete(object);
tr.commit();
return 1;
}catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
//封装get方法
public static Object get(Class<?> clazz,Integer id){
Session session=null;
Transaction tr=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
Object obj=session.get(clazz, id);
tr.commit();
return obj;
}catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
//封装find方法
public static List<?> find(String HQL){
Session session=null;
Transaction tr=null;
List<?> list=null;
try{
session=HibernateUtil.getSession();
tr=session.beginTransaction();
Query query=session.createQuery(HQL);
list=query.list();
tr.commit();
return list;
}catch(Exception e){
e.printStackTrace();
tr.rollback();
throw new RuntimeException();
}finally{
HibernateUtil.closeSession(session);
}
}
}
分享到:
相关推荐
HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装
【标题】:Hibernate入门实例——基于HibernateUtil的数据库操作封装 在Java开发中,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本实例将深入浅出地介绍如何使用Hibernate进行基本...
4. 容错性:通过封装异常处理,HibernateUtil可以在出现错误时优雅地关闭Session,防止资源泄露。 五、使用示例 以下是一个简单的使用HibernateUtil的例子: ```java public class UserService { public void ...
本教程将详细解释如何使用Hibernate将本地SQL查询的结果封装成对象,以便更好地理解和应用这项技术。 1. Hibernate ORM简介: Hibernate是一个开源的ORM框架,它为Java应用程序提供了数据持久化的解决方案。它通过...
本教程将详细讲解如何使用HibernateUtil工具类封装HQL查询,从初始化配置到执行查询、管理事务,再到对象的持久化操作,旨在帮助开发者更高效地使用Hibernate进行数据库操作。通过学习这些内容,你可以更好地理解...
本篇将详细介绍一个基于Hibernate封装的增删改查工具类,该工具类整合了util、comm.util以及beanutils等库,旨在提高开发效率,降低代码复杂度,方便开发者快速地获取session和sessionFactory。 首先,让我们理解...
首先,`HibernateUtil` 类是 Hibernate 教程中常见的一种工具类,它的主要作用是提供对 Hibernate 框架的简单封装,以方便进行数据库操作。在实际开发中,我们通常会创建一个静态方法来初始化 SessionFactory,这样...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层SQL的编写。在实际项目中,为了提高代码的复用性和可维护性,通常会对DAO层进行...
`HibernateUtil`工具类就是对Hibernate框架功能的一种封装,简化了对数据库的操作。 在`HibernateUtil`工具类中,常见的方法有以下几类: 1. **初始化SessionFactory**: SessionFactory是Hibernate的核心组件,它...
这样,查询结果将被自动封装成User对象的列表。然而,如果只想映射查询结果的特定字段,我们需要使用`addScalar`: ```java List[]> results = sqlQuery.addScalar("id", Hibernate.LONG).addScalar("name", ...
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); User user = new User(); // 设置用户属性... session.save...
5. **HibernateUtil**:HibernateUtil类是一个实用类,用于管理SessionFactory对象。通常包含一个静态的SessionFactory实例和一个静态方法,用于获取这个实例。HibernateUtil类可以帮助简化获取Session的操作。 ...
1. **封装JDBC访问**:Hibernate通过提供一套高级API,将底层的JDBC操作进行了封装,使得开发者不再需要编写大量的SQL语句,而是可以直接使用面向对象的方式来操作数据。 2. **对象关系映射**:Hibernate允许开发者...
- 模型层:在HibernateUtil中增加了公告新增的业务逻辑方法,接收封装用户输入的实体对象。 4. **公告删除** - 界面层:删除操作在公告列表页面中进行,无单独的删除界面。若用户无权限,会显示bbc_nomodify.jsp...
HibernateUtil配置涉及到Hibernate初始化,以及提供Session对象的获取方法。Session对象是Hibernate进行持久化操作的主要接口,包括增删改查等基本操作。 ###Hibernate的增删改查操作 Hibernate通过Session对象封装...
当用户提交表单时,`fa_add.jsp`接收这些数据,将它们封装到`Shenhe`对象中,然后调用`HibernateUtil`的`saveShenhe()`方法,将数据保存到数据库。完成保存操作后,根据方法返回的结果决定是否向用户显示成功信息并...
`HibernateUtil` 类通常用于封装 Session 工厂和 Session 的获取,提供便捷的事务管理。例如,可以创建一个静态方法来开始和结束事务,确保资源的正确释放。 ### 第三节 查询方式 #### 一、HQL 查询方式 ...
Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了轻量级的对象封装,让Java程序员能够用对象编程思维操作数据库。Hibernate不仅适用于Java客户端程序,也适用于Web应用,特别是能够在EJB架构中...
Hibernate是一个开源的Java语言编写的对象关系映射(ORM)框架,它对JDBC进行了轻量级的对象封装,使得Java开发人员可以使用面向对象的方式来操作数据库。在提供的“hibernate学习笔记定义.pdf”中,我们可以看到...
在实际应用中,我们通常会将`SessionFactory`和`Session`的管理封装到DAO(Data Access Object)层,以便于业务逻辑层调用。同时,为了优化性能,Hibernate还提供了二级缓存,可以通过配置将频繁访问的数据存储在...