论坛首页 Java企业应用论坛

动态切换多数据源

浏览 47930 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-04-19  
自定义一个datasource,这个datasource在getConnection的时候,根据用户身份或者其他信息,使用不同的url连接数据库。事务什么的和以前一样配置,只是配置datasource的时候需要指向你自己的这个datasource class
0 请登录后投票
   发表时间:2007-04-19  
hexiaodong.你这个datasource怎么设置的,能说详细说一下吗?
0 请登录后投票
   发表时间:2007-04-19  

我现在是这样处理,在程序中,获得session
	    public Session getLocalSession(String database) throws Exception{
	    	String url = "jdbc:mysql://127.0.0.1/"+database;
	    	Class.forName("org.gjt.mm.mysql.Driver");
	    	Connection con = DriverManager.getConnection(url,"root","ssuupv");
	    	return this.getSessionFactory().openSession(con);
	    }

这样.
0 请登录后投票
   发表时间:2007-04-19  
ssuupv 写道

我现在是这样处理,在程序中,获得session
	    public Session getLocalSession(String database) throws Exception{
	    	String url = "jdbc:mysql://127.0.0.1/"+database;
	    	Class.forName("org.gjt.mm.mysql.Driver");
	    	Connection con = DriverManager.getConnection(url,"root","ssuupv");
	    	return this.getSessionFactory().openSession(con);
	    }

这样.
ip地址不同那
0 请登录后投票
   发表时间:2007-04-24  
ssuupv 写道
hexiaodong.你这个datasource怎么设置的,能说详细说一下吗?


<bean id="dataSource" class="com.talentsoft.common.hibernate.util.EnterpriseDataSource">
</bean>
1 请登录后投票
   发表时间:2007-04-25  
to: hexiaodong

仔细想想,觉得你的方法也许可行。不过如何将用户的选择传递给datasource,然后由datasource自己路由到不同数据库呢?我的想法是使用一个全局的threadlocal保存当前数据库的url,然后提供给datasource使用。

这样的确可以动态的无限制添加数据库到系统当中,而不用修改spring的配置。我打算空下来还是仔细研究一下2.0的数据库路由功能,他们的实现应该更安全,更有效吧。毕竟我们是用spring来做企业级的应用,这些算是整个系统的基石,很是重要。

能否共享一下你的datasource类呢。
0 请登录后投票
   发表时间:2007-05-17  
有那么烦的吗?spring 好象已经提供了这样的处理了吧  记得是一个抽象类AbstractRoutingDataSource吧,在2.0.4版本里的吧   继承一下就行了,它抽象那层已经做好了一切,等于吃白饭的
0 请登录后投票
   发表时间:2007-05-18  
to: ahua3515

項目采用的是1.2.8版本,現在還沒有仔細了解升級到2.0版本的可行性。我想也有其他很多朋友也面臨這個問題吧。不過,2.0版本的一些東西可以拿來借鑒。
0 请登录后投票
   发表时间:2007-05-24  
大家回得的都是spring封装的hibernateTemplate,为什么没有人讨论一下在spring中的jdbcTemplate呢,我现在就遇到了这个问题,不仅要用hibernateTemplate进行对数据库操作,还用到了jdbcTemplate,请哪位一下,我该怎么在applicationContext.xml中配置jdbcTemplate,和怎么使用他呢,当思感恩不尽!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics