关键词不能为空

当前您在: 主页 > 英语 >

Hibernate+Spring多数据库解决方案

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-29 23:41
tags:

-

2021年1月29日发(作者:贾格)


Hibernate


+Spring


多数据库解 决方案




我以前在项目中的探索和实践,写出来与大家分享。



大家有其他好的方式,也


欢迎分享。




环境:


JDK


1.4.x


,


Hibernate


3.1,


Spring


2.0.6,


JBOSS4.0,


开发模式


:


Service


+ DAO





我们项目中需要同时使用多个数据库


.



Hibernate


不能直接支 持,为此我们


对比了网上网友的方案,自己做了一点探索。




1. Demo


需求




我们的项目使用一个全省的公共库加十多个地市库的架构。


< /p>


本文主要说


明原理,将需求简化为两库模型。



主库:


User


管里,主要是系统管理,鉴权等数据;




订单库:


Order


管理,存放订单等业务性数据。




2.


原理:



1



Hibernate


的每个配置文件对应一个数据库,


因此多 库需要做多个配


置文件。本文以两个为例:




主库


hibernate_





订单库


hibernate_




每个库,


Hibernate


对应一个


sessionFactory

< br>实例,因此


Hibernate


下的多库处理,就是在多 个


sessionFactory


之间做好路由。




2) sessionFactory


有个


ssMetadata(voClass)


方法,返回值不为空时,表示该


VO


类在该库中



(< /p>


文件配置在了对应的



< br>)




该方法是数


据路由的核心和关键所在。




因此,



配置在


hibernate_




Order


数据位于配置到


hibernate_



3




多库处理时,需要使用


XA


事务管理。本例中使用


Jboss4.0

< br>来做


JTA


事务管理;用


JOT M


,其他应用服务器原理相同。




3.


实现



1




为做多


sessionFactory


实例的管理,设计


SessionFactoryManager


类,功能就是做数据路由,




控制路由的核心是


sessionFactoryMap


属性,它按



dbFlag=sessionFactory


的方式存储了多个库的



引用。





判断路由要使用的核心方法就是



public


Session


getSessionFactory(Class


voClass)


,它根据传入的



voClass


,返回对应


sessi onFactory




当前


session





SessionFactoryManager


类的详细实现原理以后为大家说明。




2



Hibernate


配置





主库


hibernate_


Xml


代码




1.






2.




3.






name


=



>


XAOracl eDS_MAIN



ty>


4.






name


=



>


hiberna te1



operty>



5.






name


=



>



nsactionFactory



6.






name


=



>


at

< p>
ransactionManagerLookup




7.






name


=



>


UserTransaction


>



8.




9.






name


=



>


Dialect



property>

< p>


10.




name


=



>


5




11.




name


=



>


5




12.




name


=



>


1




13.


14.



< p>
resource


=




/>




15.







订单库


hibernate_



Xml


代码




1.




2.





3.






name


=



>


XAOracleDS_ORDER



perty>



4.






name


=



>


hibernate2



property>



5.






name


=



>



nsactionFactory




6.






name


=



>



ransactionManagerLookup



7.






name


=



>


UserTra nsaction



ty>


8.




9.






name


=



>


Dialect




10.



< /p>


name


=



>< /p>


5




11.




name


=



>


5




12.




name


=



>


1




13.


14.




resource


=




/


>



15.






3) Spring


配置




使用


Spring

< p>
提供的



essionFactoryBean


类,为每个


库配置一个


session Factory bean





Xml


代码




1.




11.




id


=




class


=



.e ssionFactoryBean


>



12.




name


=



>



13.




14.



classpath:hibernate_< /p>



-


-


-


-


-


-


-


-



本文更新与2021-01-29 23:41,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/587910.html

Hibernate+Spring多数据库解决方案的相关文章