spring源代码解析(八):spring驱动hibernate的实现

spring源代码解析(八):spring驱动hibernate的实现

ID:31643509

大小:85.92 KB

页数:14页

时间:2019-01-16

spring源代码解析(八):spring驱动hibernate的实现_第1页
spring源代码解析(八):spring驱动hibernate的实现_第2页
spring源代码解析(八):spring驱动hibernate的实现_第3页
spring源代码解析(八):spring驱动hibernate的实现_第4页
spring源代码解析(八):spring驱动hibernate的实现_第5页
资源描述:

《spring源代码解析(八):spring驱动hibernate的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、0/R工具出现之后,简化了许多复杂的信息持久化的开发。Spring应用开发者可以通过Spring提供的0/R方案更方便的使用各种持久化工具,比如Hibernate;下面我们就Spring+Hibernate中的Spring实现做一个简单的剖析。Spring对Hinberanate的配置是通过LocalSessionFactoryBean来完成的,这是一个工厂Bean的实现,在基类AbstractSessionFactoryBean中:Java代码/***这是FactoryBean需要实现的接口方法,直接取得当前的sessionFactory的值*/pu

2、blicObjectgetObject(){returnthis.sessionFactory;这个值在afterPropertySet中定义:publicvoidafterPropertiesSet()throwsException{//这个buiIdSessionFactory是通过配置信息得到SessionFactory的地方SessionFactoryrawSf=buildSessionFactory();//这里使用了Proxy方法插入对getCurrentSession的拦截,得到和事务相关的sessionthis.sessionFacto

3、ry二wrapSessionFactorylfNecessary(rawSf);}我们先看看SessionFactory是怎样创建的,这个方法很长,包含了创建Hibernate的SessionFactory的详尽步骤:protectedSessionFactorybuildSessionFactory()tbrowsExcept!on{SessionFactorysf=null;//CreateConfigurationinstance.Configurationconfig=newConfiguration();//这里配置数据源,事务管理器,Lob

4、Hander到Holder中,这个Holder是一个ThreadLocal变量,这样这些资源就和线程绑定了if(this.dataSource!二null){//MakegivenDataSourceavailableforSessionFactoryconfiguration.configTimeDataSourceHolder.set(this.dataSource);}if(this.jtaTransactionManager!二null){//MakeSpring-providedJTATransactionManageravailable.c

5、onfigTimeTransactionManagerllolder.set(this.jtaTransactionManager);}if(this.lobHandler!=null){//MakegivenLobHandleravailableforSessionFactoryconfiguration.//Doearlybecausebecausemappingresourcemightrefertocustomtypes.configTimeLobHandlerHolder.set(this.lobHandler);}〃这里是使用Hiberna

6、te的各个属性的配置,这里使用了Configuration类来抽象这些数据try{//Setconnectionreleasemode〃on_close〃asdefault.//ThiswasthecaseforHibernate3.0;Hibernate3.1changed//itto〃auto〃(i.e.,zafter_statement"orz,after_transaction〃)•//However,forSpring,sresourcemanagement(inparticularfor//HibernateTransactionManag

7、er),〃on_close〃isthebetterdefault.config.setProperty(Environment.RELEASE_CONNECTIONS,ConnectionReleaseMode.ON_CLOSE.toStringO);if(!isExposeTransactionAwareSessionFactory()){//NotexposingaSessionFactoryproxywithtransaction-aware//getCurrentSession()method->setHibernate3.1CurrentSe

8、ssionContext//implementationinstead,providingth

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。