package cn.hxex.blog.hibernate;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Interceptor;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
/**
* 基础的Hibernate辅助类,用于Hibernate的配置和启动。
* <p>
* 通过静态的初始化代码来读取Hibernate启动参数,并初始化
* <tt>Configuration</tt>和<tt>SessionFactory</tt>对象。
* <p>
*
* @author galaxy
*/
public class HibernateUtil
{
private static Log log = LogFactory.getLog(HibernateUtil.class);
// 指定定义拦截器属性名
private static final String INTERCEPTOR_CLASS = "hibernate.util.interceptor_class";
// 静态Configuration和SessionFactory对象的实例(全局唯一的)
private static Configuration configuration;
private static SessionFactory sessionFactory;
static
{
// 从缺省的配置文件创建SessionFactory
try
{
// 创建默认的Configuration对象的实例
// 如果你不使用JDK 5.0或者注释请使用new Configuration()
// 来创建Configuration()对象的实例
configuration = new Configuration();
// 读取hibernate.properties或者hibernate.cfg.xml文件
configuration.configure();
// 如果在配置文件中配置了拦截器,那么将其设置到configuration对象中
String interceptorName = configuration.getProperty(INTERCEPTOR_CLASS);
if (interceptorName != null)
{
Class interceptorClass =
HibernateUtil.class.getClassLoader().loadClass(interceptorName);
Interceptor interceptor = (Interceptor)interceptorClass.newInstance();
configuration.setInterceptor(interceptor);
}
if (configuration.getProperty(Environment.SESSION_FACTORY_NAME) != null)
{
// 让Hibernate将SessionFacory绑定到JNDI
configuration.buildSessionFactory();
}
else
{
// 使用静态变量来保持SessioFactory对象的实例
sessionFactory = configuration.buildSessionFactory();
}
}
catch (Throwable ex)
{
// 输出异常信息
log.error("Building SessionFactory failed.", ex);
ex.printStackTrace();
throw new ExceptionInInitializerError(ex);
}
}
/**
* 返回原始的Configuration对象的实例
*
* @return Configuration
*/
public static Configuration getConfiguration()
{
return configuration;
}
/**
* 返回全局的SessionFactory对象的实例
*
* @return SessionFactory
*/
public static SessionFactory getSessionFactory()
{
SessionFactory sf = null;
String sfName = configuration.getProperty(Environment.SESSION_FACTORY_NAME);
if ( sfName != null)
{
log.debug("Looking up SessionFactory in JNDI.");
try
{
sf = (SessionFactory) new InitialContext().lookup(sfName);
}
catch (NamingException ex)
{
throw new RuntimeException(ex);
}
}
else
{
sf = sessionFactory;
}
if (sf == null)
throw new IllegalStateException( "SessionFactory not available." );
return sf;
}
/**
* 关闭当前的SessionFactory并且释放所有的资源
*/
public static void shutdown()
{
log.debug("Shutting down Hibernate.");
// Close caches and connection pools
getSessionFactory().close();
// Clear static variables
configuration = null;
sessionFactory = null;
}
/**
* 使用静态的Configuration对象来重新构建SessionFactory。
*/
public static void rebuildSessionFactory()
{
log.debug("Using current Configuration for rebuild.");
rebuildSessionFactory(configuration);
}
/**
* 使用指定的Configuration对象来重新构建SessionFactory对象。
*
* @param cfg
*/
public static void rebuildSessionFactory(Configuration cfg)
{
log.debug("Rebuilding the SessionFactory from given Configuration.");
synchronized(sessionFactory)
{
if (sessionFactory != null && !sessionFactory.isClosed())
sessionFactory.close();
if (cfg.getProperty(Environment.SESSION_FACTORY_NAME) != null)
cfg.buildSessionFactory();
else
sessionFactory = cfg.buildSessionFactory();
configuration = cfg;
}
}
/**
* 在当前SessionFactory中注册一个拦截器
*/
public static SessionFactory registerInterceptorAndRebuild(Interceptor interceptor)
{
log.debug("Setting new global Hibernate interceptor and restarting.");
configuration.setInterceptor(interceptor);
rebuildSessionFactory();
return getSessionFactory();
}
/**
* 获得拦截器对象
*
* @return Interceptor
*/
public static Interceptor getInterceptor()
{
return configuration.getInterceptor();
}
/**
* 提交当前事务,并开始一个新的事务
*/
public static void commitAndBeginTransaction()
{
sessionFactory.getCurrentSession().getTransaction().commit();
sessionFactory.getCurrentSession().beginTransaction();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
struts hibernate spring集成开发宝典光盘源码(一).rar
共196个文件
java:58个
jar:51个
jsp:24个
4星 · 超过85%的资源 需积分: 4 82 下载量 68 浏览量
2010-02-02
09:09:29
上传
评论 1
收藏 13.51MB RAR 举报
温馨提示
struts hibernate spring集成开发宝典光盘源码(一).rar
资源推荐
资源详情
资源评论
收起资源包目录
struts hibernate spring集成开发宝典光盘源码(一).rar (196个子文件)
common.css 661B
welcome.gif 42KB
register.gif 17KB
update.gif 8KB
content.gif 7KB
bak.gif 49B
hibernate3.jar 1.99MB
hibernate3.jar 1.99MB
classes12.jar 1.07MB
classes12.jar 1.07MB
struts.jar 537KB
struts.jar 531KB
struts.jar 531KB
mysql-connector-java-3.1.10-bin.jar 409KB
mysql-connector-java-3.1.10-bin.jar 409KB
standard.jar 384KB
standard.jar 384KB
antlr.jar 350KB
antlr.jar 350KB
antlr.jar 350KB
log4j-1.2.9.jar 344KB
dom4j-1.6.1.jar 307KB
dom4j-1.6.1.jar 307KB
cglib-2.1.3.jar 276KB
cglib-2.1.3.jar 276KB
ehcache-1.2.3.jar 203KB
commons-beanutils.jar 184KB
commons-beanutils.jar 184KB
commons-beanutils.jar 184KB
commons-collections-2.1.1.jar 171KB
commons-collections-2.1.1.jar 171KB
commons-lang-2.0.jar 166KB
commons-digester.jar 164KB
commons-digester.jar 164KB
commons-digester.jar 164KB
jdom.jar 150KB
ehcache-1.2.jar 115KB
junit-4.1.jar 110KB
commons-validator.jar 82KB
commons-validator.jar 82KB
commons-validator.jar 82KB
jakarta-oro.jar 64KB
jakarta-oro.jar 64KB
jakarta-oro.jar 64KB
commons-logging.jar 37KB
commons-logging.jar 37KB
commons-logging.jar 37KB
commons-logging.jar 37KB
asm.jar 26KB
asm.jar 26KB
commons-fileupload.jar 22KB
commons-fileupload.jar 22KB
commons-fileupload.jar 22KB
jstl.jar 20KB
jstl.jar 20KB
jta.jar 9KB
jta.jar 9KB
HibernateUtil.java 6KB
TestMessageDAO.java 3KB
HibernateFilter.java 2KB
ListForm.java 2KB
MessageDAO.java 2KB
LifeCycle.java 2KB
UploadAction.java 2KB
ReplyForm.java 2KB
ReplySaveAction.java 2KB
MessageSaveAction.java 2KB
DaoFactory.java 2KB
RegistForm.java 2KB
TestUserDao.java 2KB
MessageSaveUpdateAction.java 2KB
OutputXMLAction.java 2KB
MessageUpdateAction.java 2KB
RegistAction.java 2KB
LogonAction.java 2KB
MapForm.java 2KB
HomepageAction.java 2KB
MessageForm.java 2KB
ReplyDeleteAction.java 2KB
ReplyAddAction.java 2KB
MessageDeleteAction.java 2KB
BlogAction.java 2KB
CheckTokenAction.java 2KB
LazyDynaFormAction.java 2KB
DynaFormAction.java 1KB
LogonForm.java 1KB
HibernateDAO.java 1KB
BaseModel.java 1KB
UploadForm.java 1KB
TokenForm.java 1KB
BaseAction.java 1KB
MapFormAction.java 1KB
ListFormAction.java 1KB
DownloadFileAction.java 1KB
OpenFileAction.java 1KB
SaveTokenAction.java 1KB
BlogForm.java 1KB
IdForm.java 1KB
ReplyMessage.java 1KB
UserDAO.java 1KB
共 196 条
- 1
- 2
资源评论
- zheren77882011-10-03还不错,参考参考,自己写的吧,文件夹的名字和原著上不一样~~~
- qinzebin1232011-12-23机械工业出版社的宝典书,都挺好的,书中源代码虽然有时候有很多bug,不过对于初学者还是有很答帮助作用
- jerryHH_20122013-09-25好书 谢谢楼主
hongyanjava
- 粉丝: 11
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机器学习和数据挖掘课程设计-米其林餐厅数据挖掘管理系统源码+使用文档说明.zip
- html html html展示我与ai的对化
- 数据结构课程设计-全国交通出行咨询模拟系统C语言实现源码.zip
- cef-binary-109.0.1+gcd5e37a+chromium-109.0.5414.8-windows32
- 基于C语言的全国交通咨询系统模拟源码.zip
- 正点原子HAL库 STM32F4 DMA(学习自用附源码)
- 炫酷代码雨,超级炫酷哦!!!
- 基于物联网MQTT协议的智能停车场管理系统
- POETIZE个人博客系统源码 - 最美博客
- 基于深度学习的行人检测系统源码+项目说明(YoloV3+Tensorflow).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功