- 浏览: 236513 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
qinxiaozhou:
pmd介绍的不错
静态分析工具PMD使用说明 -
sosyi:
这是什么问题?
通过SMSLib库实现Java程序发送短信 -
sosyi:
gnu.io.PortInUseException: Unkn ...
通过SMSLib库实现Java程序发送短信 -
wzs594:
下载地址连接失败
Quest Toad For Oracle V9.6.1 简体中文版(vista可用) -
rufi2008:
你好。。我查了很久关于Redmine自动发送邮件的功能,总是不 ...
安装Redmine服务自动启动和邮件设置
- package org.hibernate.auction.persistence;
- import net.sf.hibernate.*;
- import net.sf.hibernate.cfg.Configuration;
- import org.apache.commons.logging.*;
- import org.hibernate.auction.exceptions.InfrastructureException;
- import javax.naming.*;
- /**
- * Basic Hibernate helper class, handles SessionFactory, Session and Transaction.
- * <p>
- * Uses a static initializer for the initial SessionFactory creation
- * and holds Session and Transactions in thread local variables. All
- * exceptions are wrapped in an unchecked InfrastructureException.
- *
- * @author christian@hibernate.org
- */
- public class HibernateUtil {
- private static Log log = LogFactory.getLog(HibernateUtil.class);
- private static Configuration configuration;
- private static SessionFactory sessionFactory;
- private static final ThreadLocal threadSession = new ThreadLocal();
- private static final ThreadLocal threadTransaction = new ThreadLocal();
- private static final ThreadLocal threadInterceptor = new ThreadLocal();
- // Create the initial SessionFactory from the default configuration files
- static {
- try {
- configuration = new Configuration();
- sessionFactory = configuration.configure().buildSessionFactory();
- // We could also let Hibernate bind it to JNDI:
- // configuration.configure().buildSessionFactory()
- } catch (Throwable ex) {
- // We have to catch Throwable, otherwise we will miss
- // NoClassDefFoundError and other subclasses of Error
- log.error("Building SessionFactory failed.", ex);
- throw new ExceptionInInitializerError(ex);
- }
- }
- /**
- * Returns the SessionFactory used for this static class.
- *
- * @return SessionFactory
- */
- public static SessionFactory getSessionFactory() {
- /* Instead of a static variable, use JNDI:
- SessionFactory sessions = null;
- try {
- Context ctx = new InitialContext();
- String jndiName = "java:hibernate/HibernateFactory";
- sessions = (SessionFactory)ctx.lookup(jndiName);
- } catch (NamingException ex) {
- throw new InfrastructureException(ex);
- }
- return sessions;
- */
- return sessionFactory;
- }
- /**
- * Returns the original Hibernate configuration.
- *
- * @return Configuration
- */
- public static Configuration getConfiguration() {
- return configuration;
- }
- /**
- * Rebuild the SessionFactory with the static Configuration.
- *
- */
- public static void rebuildSessionFactory()
- throws InfrastructureException {
- synchronized(sessionFactory) {
- try {
- sessionFactory = getConfiguration().buildSessionFactory();
- } catch (Exception ex) {
- throw new InfrastructureException(ex);
- }
- }
- }
- /**
- * Rebuild the SessionFactory with the given Hibernate Configuration.
- *
- * @param cfg
- */
- public static void rebuildSessionFactory(Configuration cfg)
- throws InfrastructureException {
- synchronized(sessionFactory) {
- try {
- sessionFactory = cfg.buildSessionFactory();
- configuration = cfg;
- } catch (Exception ex) {
- throw new InfrastructureException(ex);
- }
- }
- }
- /**
- * Retrieves the current Session local to the thread.
- * <p/>
- * If no Session is open, opens a new Session for the running thread.
- *
- * @return Session
- */
- public static Session getSession()
- throws InfrastructureException {
- Session s = (Session) threadSession.get();
- try {
- if (s == null) {
- log.debug("Opening new Session for this thread.");
- if (getInterceptor() != null) {
- log.debug("Using interceptor: " + getInterceptor().getClass());
- s = getSessionFactory().openSession(getInterceptor());
- } else {
- s = getSessionFactory().openSession();
- }
- threadSession.set(s);
- }
- } catch (HibernateException ex) {
- throw new InfrastructureException(ex);
- }
- return s;
- }
- /**
- * Closes the Session local to the thread.
- */
- public static void closeSession()
- throws InfrastructureException {
- try {
- Session s = (Session) threadSession.get();
- threadSession.set(null);
- if (s != null && s.isOpen()) {
- log.debug("Closing Session of this thread.");
- s.close();
- }
- } catch (HibernateException ex) {
- throw new InfrastructureException(ex);
- }
- }
- /**
- * Start a new database transaction.
- */
- public static void beginTransaction()
- throws InfrastructureException {
- Transaction tx = (Transaction) threadTransaction.get();
- try {
- if (tx == null) {
- log.debug("Starting new database transaction in this thread.");
- tx = getSession().beginTransaction();
- threadTransaction.set(tx);
- }
- } catch (HibernateException ex) {
- throw new InfrastructureException(ex);
- }
- }
- /**
- * Commit the database transaction.
- */
- public static void commitTransaction()
- throws InfrastructureException {
- Transaction tx = (Transaction) threadTransaction.get();
- try {
- if ( tx != null && !tx.wasCommitted()
- && !tx.wasRolledBack() ) {
- log.debug("Committing database transaction of this thread.");
- tx.commit();
- }
- threadTransaction.set(null);
- } catch (HibernateException ex) {
- rollbackTransaction();
- throw new InfrastructureException(ex);
- }
- }
- /**
- * Commit the database transaction.
- */
- public static void rollbackTransaction()
- throws InfrastructureException {
- Transaction tx = (Transaction) threadTransaction.get();
- try {
- threadTransaction.set(null);
- if ( tx != null && !tx.wasCommitted() && !tx.wasRolledBack() ) {
- log.debug("Tyring to rollback database transaction of this thread.");
- tx.rollback();
- }
- } catch (HibernateException ex) {
- throw new InfrastructureException(ex);
- } finally {
- closeSession();
- }
- }
- /**
- * Reconnects a Hibernate Session to the current Thread.
- *
- * @param session The Hibernate Session to be reconnected.
- */
- public static void reconnect(Session session)
- throws InfrastructureException {
- try {
- session.reconnect();
- threadSession.set(session);
- } catch (HibernateException ex) {
- throw new InfrastructureException(ex);
- }
- }
- /**
- * Disconnect and return Session from current Thread.
- *
- * @return Session the disconnected Session
- */
- public static Session disconnectSession()
- throws InfrastructureException {
- Session session = getSession();
- try {
- threadSession.set(null);
- if (session.isConnected() && session.isOpen())
- session.disconnect();
- } catch (HibernateException ex) {
- throw new InfrastructureException(ex);
- }
- return session;
- }
- /**
- * Register a Hibernate interceptor with the current thread.
- * <p>
- * Every Session opened is opened with this interceptor after
- * registration. Has no effect if the current Session of the
- * thread is already open, effective on next close()/getSession().
- */
- public static void registerInterceptor(Interceptor interceptor) {
- threadInterceptor.set(interceptor);
- }
- private static Interceptor getInterceptor() {
- Interceptor interceptor =
- (Interceptor) threadInterceptor.get();
- return interceptor;
- }
- }
发表评论
-
hibernate多对一关联映射
2009-08-12 15:07 819hibernate多对一关联映射 (User-------&g ... -
hibernate中对象状态的特征
2009-08-11 12:32 757hibernate中对象状态的特征 transi ... -
hibernate session flush
2009-08-11 12:31 949hibernate session flush ... -
hibernate双向关联映射
2009-08-11 12:29 1679hibernate双向关联映射 1.hihernate ... -
hihernate单向关联映射
2009-08-11 12:26 10061.一对多单向关联映射 单向Classes-----> ... -
Hibernate ontomany示例
2009-08-09 14:27 902Hibernate ontomany示例 一对多关联映 ... -
Hibernate的配置文件示例
2009-08-09 14:18 894Hibernate的配置文件示例 hiberna ... -
Hibernate onetoone配置示例
2009-08-01 17:30 1208Hibernate onetoone配置示例 (人和身份证主键 ... -
Hibernate核心接口简介
2009-07-16 12:55 851Hiberna ... -
Hibernate中利用工具类自动生成数据库表
2009-07-16 12:30 1615Hibernate中利用工具类自动生成数据库表1.建好POJO ... -
一款好用的JAVA反编译工具
2009-03-31 12:17 1154今天突然间在网上看到了一款非常好用的JAVA反编译工具,下来学 ...
相关推荐
本资料包"Java封装hibernate操作数据库.rar"主要涉及了如何使用Hibernate进行数据库操作,并通过DAO(Data Access Object)层的封装来实现更加高效、简洁的代码结构。 首先,让我们深入了解Hibernate。Hibernate是一...
标题中的"spring+springmvc+hibernate常用jar"指的是在Java Web开发中,整合Spring框架、Spring MVC和Hibernate框架时所需的常用库文件。这些jar文件是构建基于这三大框架的应用程序的基础,允许开发者实现模型-视图...
Hibernate 是一款 ORM 框架(对象关系映射),它对 JDBC(数据库连接技术的简称)进行了轻量级的封装,使得 Java 程序员可以随心所欲的使用面向对象的编程思想来操作数据库。Hibernate 的作用:用面向对象的编程思想...
- 执行操作:通过 Session 对象执行 SQL 命令,例如使用 HQL(Hibernate Query Language)进行查询。 - 提交事务:完成一组操作后,提交事务确保数据持久化。 - 关闭 Session:操作完成后关闭 Session,释放资源...
- DAO(数据访问对象):封装了对数据库的增删改查操作,使用Session接口进行实际操作。 - Service层:业务逻辑处理,调用DAO进行数据处理,是应用的核心部分。 - 测试类:用于验证代码功能的正确性。 在Eclipse和...
Transaction则封装了数据库事务,确保数据操作的一致性和完整性。 7. HQL和Criteria API:Hibernate Query Language(HQL)是Hibernate特有的面向对象的查询语言,类似于SQL,但操作的是对象而非表格。Criteria API...
Hibernate框架在企业级应用中得到了广泛的应用,它封装了JDBC的细节,减轻了数据访问层的编码负担,并且支持多种数据库系统,具有良好的灵活性和扩展性。Hibernate支持1:1、1:n、n:m等多种关联映射关系,可以有效地...
### Hibernate常用配置详解 #### 一、概述 Hibernate 是一款开放源代码的 ORM(对象关系映射)框架,它对 JDBC 进行了轻量级的封装,使得 Java 开发人员可以使用面向对象的方式来操作数据库。本文将详细介绍 ...
3. **辅助类(Helper Classes)**:这可能是配置类,如HibernateUtil,负责创建SessionFactory,或者工具类,如DAO(Data Access Object),封装了对数据库的基本操作。这些类通常包含初始化Hibernate配置、打开/...
2. 工具类和实用方法:可能提供了对Spring和Hibernate常用操作的封装,提高开发效率。 3. 模块化设计:可能将不同的功能模块化,便于代码重用和维护。 4. 性能优化:可能包含了针对Spring和Hibernate的性能调优策略...
Hibernate提供了CRUD(创建、读取、更新、删除)操作的API,以及查询语言HQL(Hibernate Query Language)和Criteria API,方便进行复杂的数据查询。此外,Hibernate还支持事务管理和缓存机制,提升了应用程序的性能...
最后,可能还会有查询结果的映射功能,如ORM(Object-Relational Mapping)框架,如Hibernate或MyBatis,将数据库查询的结果自动转化为Java对象,简化了数据操作的代码。 综上所述,"封装了数据库访问操作"是一个...
在这个主题中,“ssh数据库基本操作封装”指的是将常用的数据库交互功能,如增删改查(CRUD),通过SSH框架进行封装,以便在项目中更方便地调用。这通常涉及到Spring的IoC(Inversion of Control)容器来管理数据库...
**一、Hibernate常用API详解** 在Hibernate中,主要的API包括SessionFactory、Session、Transaction等。SessionFactory是线程安全的,负责创建Session实例。Session是与数据库交互的主要接口,提供了持久化对象的...
在项目中为了方便地使用Hibernate,通常会创建一个`HibernateUtil`工具类来封装一些常用的功能。例如,创建`SessionFactory`实例、管理Session等。 - **2.4.1 SessionFactory的初始化** - 使用`SessionFactory`...
Struts、Spring和Hibernate是Java开发中常用的三大框架,它们分别负责不同的职责:Struts作为MVC(模型-视图-控制器)框架处理请求和响应,Spring提供了依赖注入和事务管理,而Hibernate则是对象关系映射(ORM)框架...
通过Hibernate API进行增删改查操作,常用的方法包括session.save(), session.get(), session.update()和session.delete()。 6. 进行单元测试。在代码开发完成后,需要对Hibernate的配置和实体类的映射进行测试,...
【hibernate_first_new项目源码】是一个关于Hibernate框架学习的项目,主要涵盖了对Hibernate常用接口的详细讲解和实例应用。Hibernate是一个强大的Java持久层框架,它为开发者提供了对象关系映射(ORM)功能,使得...
HibernateTemplate封装了一些常用的Hibernate操作,如save、update、delete、find等。 6. **注解驱动的实体类和映射**:Hibernate支持使用注解来定义实体类和数据库表之间的映射。例如,使用`@Entity`标记实体类,`...
【hibernate查询详解】 Hibernate,作为一款强大的Java对象...而分页查询是大数据量场景下的常用策略,Hibernate提供了简单的API来实现。理解并熟练掌握这些查询方式,将有助于我们在Java开发中更好地运用Hibernate。