`

J2EE常用工具类—Hibernate操作

阅读更多
package cn.org.jshuwei.j2ee.util;

import java.io.Serializable;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
* 
* Hibernate操作的工具类
* 
* @author huwei(jshuwei.org.cn)
* @since 1.0
* 
*/
public class HbnUtil {
    private static SessionFactory sf;

    /**
     * 得到SessionFactory
     * 
     * @since 1.0
     * @return 返回SessionFactory
     */
    public static SessionFactory getSessionFactory() {
        if (sf == null || sf.isClosed()) {
            try {
                sf = new Configuration().configure().buildSessionFactory();
            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }
        return sf;
    }

    /**
     * 得到Session
     * 
     * @since 1.0
     * @return 返回Session
     */
    public static Session getSession() {
        getSessionFactory();
        return sf.openSession();
    }

    /**
     * 释放SessionFactory
     * 
     * @since 1.0
     */
    public static void releaseSessionFactory() {
        if (sf != null && !sf.isClosed()) {
            sf.close();
        }
    }

    /**
     * 保存对象
     * 
     * @since 1.0
     * @param obj
     *            需要保存的对象
     */
    public static Serializable add(Object obj) {
        Session session = null;
        Serializable ret = null;
        try {
            session = getSession();
            session.beginTransaction();
            ret = session.save(obj);
            session.getTransaction().commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        } finally {
            if (session != null) {
                session.close();
            }
            releaseSessionFactory();
        }
        return ret;
    }

    /**
     * 删除对象
     * 
     * @since 1.0
     * @param obj
     *            需要删除的对象
     */
    public static void delete(Object obj) {
        Session session = null;
        try {
            session = getSession();
            session.beginTransaction();
            session.delete(obj);
            session.getTransaction().commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        } finally {
            if (session != null) {
                session.close();
            }
            releaseSessionFactory();
        }
    }

    /**
     * 更新对象
     * 
     * @since 1.0
     * @param obj
     *            需要更新的对象
     */
    public static void update(Object obj) {
        Session session = null;
        try {
            session = getSession();
            session.beginTransaction();
            session.update(obj);
            session.getTransaction().commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        } finally {
            if (session != null) {
                session.close();
            }
            releaseSessionFactory();
        }
    }

    /**
     * 查找对象
     * 
     * @since 1.0
     * @param clazz 需要查找的对象类型
     * @param id
     *            需要查找的对象的id
     */
    public static Object find(Class clazz,Serializable id) {
        Session session = null;
        Object obj=null;
        try {
            session = getSession();
            obj=session.get(clazz, id);
        } catch (HibernateException e) {
            e.printStackTrace();
        } finally {
            if (session != null) {
                session.close();
            }
            releaseSessionFactory();
        }
        return obj;
    }
}

 

分享到:
评论

相关推荐

    java常用工具类打包下载

    J2EE常用工具类—Hibernate操作 J2EE常用工具类—Cookie操作 J2EE常用工具类—数组操作 J2EE常用工具类—时间处理工具类 J2EE常用工具类—文件打包解包处理类 J2EE常用工具类——文件操作类 J2EE常用工具类...

    基于J2EE的structs和hibernate的学生信息管理系统

    总的来说,基于J2EE的Struts和Hibernate框架,为我们构建学生信息管理系统提供了强大的工具。它们简化了Web开发的复杂性,提高了代码的可读性和可维护性,同时也保证了系统的高性能和稳定性。在实际开发中,开发者...

    开发者突击_Java+Web主流框架整合开发_J2EE+Struts+Hibernate+Spring+源代码

    在实际项目中,开发者会创建Action类来处理请求,Action类会调用Spring管理的服务层方法,这些方法可能需要通过Hibernate操作数据库。 为了更好地理解和运用这些框架,开发者需要掌握以下知识点: 1. MVC设计模式...

    精通J2EE—Eclipse Struts Hibernate Spring 整合应用案例源代码1

    《精通J2EE—Eclipse Struts Hibernate Spring 整合应用案例源代码1》这个压缩包文件主要包含了一个基于J2EE平台的、利用Eclipse开发工具,整合Struts、Hibernate和Spring框架的综合应用案例的源代码。这些源代码是...

    [VIP][强化]J2EE第一期 Hibernate专题 第一讲 Hibernate简介源码

    而Hibernate,作为一款优秀的对象关系映射(ORM)框架,是J2EE应用中常用来简化数据库操作的重要工具。它通过将Java类与数据库表进行映射,使得开发者可以使用面向对象的方式来处理数据,避免了直接编写SQL语句,...

    在线商城(j2EE,struts,hibernate)

    这个项目采用的技术栈是Java Enterprise Edition (j2EE),它包括了Struts作为MVC(Model-View-Controller)框架,以及Hibernate作为对象关系映射(ORM)工具。这样的组合在2000年代末至2010年代初非常流行,为开发者...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...

    j2ee常用方法.

    - Hibernate和MyBatis是常用的J2EE ORM(Object-Relational Mapping)框架,它们简化了数据库操作。例如,Hibernate的`Session`接口提供`save()`, `get()`, `update()`, `delete()`等方法,而MyBatis则通过XML配置...

    J2EE开发使用Hibernate所需要的jar文件,Oracle驱动

    5. **commons-lang.jar**: Apache Commons Lang是Java的一个实用工具库,提供了大量的工具类,可以帮助开发者处理字符串、日期、数组等各种Java对象。在Hibernate或其他Java项目中,它常被用来增强基本类型的操作。 ...

    j2ee用hibernate实现查询

    在这个"j2ee用hibernate实现查询"的项目中,我们首先会看到如何在J2EE环境中集成Hibernate,以便通过Hibernate的API来操作MySQL数据库。集成过程通常包括以下步骤: 1. **配置Hibernate**:设置hibernate.cfg.xml...

    J2EE常用框架

    总结来说,J2EE常用框架包括Spring、Hibernate、MyBatis、Struts和EJB等,这些框架协同工作,为开发者提供了构建大型企业级应用的强大工具。同时,掌握相关开发工具和资源,如IDEA、Maven和MyBatis指南,将极大地...

    J2EE培训课件 Hibernate JSF CSS

    Hibernate是Java社区中最流行的ORM(Object-Relational Mapping)工具之一,它简化了数据库操作,使开发者能够使用面向对象的编程方式处理持久化数据。Hibernate通过XML或注解方式定义对象-关系映射,将数据库表与...

    j2ee框架Struts2HibernateSpring考试复习题库.pdf

    Struts2、Hibernate和Spring是Java企业级应用开发中广泛使用的三大开源框架,它们共同构建了J2EE应用程序的基础架构。这些框架各自有着特定的功能和优势,协同工作时能极大地提高开发效率和软件质量。 **Struts2**...

    J2ee常用jar包

    在J2EE开发中,`jar`(Java Archive)文件扮演了至关重要的角色,它们包含了编译后的Java类、资源文件以及元数据,方便在项目中进行共享和重用。下面我们将深入探讨J2EE中常用的`jar`包以及它们的功能。 1. **...

    介绍J2EE常用Jar包的含义.doc

    - **用途**: 包含了一些Bean工具类,如Bean复制等,被Hibernate等框架广泛使用。 - **应用场景**: 需要进行Bean操作的地方,如属性复制、属性访问等。 10. **commons-cli-1.0.jar** - **用途**: 命令行参数解析...

    6j2ee Struts+Hibernate体验.rar

    而Hibernate则是一个对象关系映射(ORM)工具,它简化了数据库操作,将Java对象与数据库表进行映射,从而避免了传统的SQL操作。 描述中提到的是同一个主题,没有提供额外的具体信息,但我们可以理解这可能是一个...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...

    BBS.rar_Eclipse_J2EE_bbs struts_hibernate_struts

    标题 "BBS.rar_Eclipse_J2EE_bbs_struts_hibernate_struts" 暗示了一个基于Java EE(以前称为J2EE)的BBS(Bulletin Board System,电子公告板)应用程序开发项目,该程序使用了Eclipse IDE,以及Struts、Hibernate...

Global site tag (gtag.js) - Google Analytics