hibernate连接同一个musql数据库服务器上的多个数据库(急,在线等...)

时间:2021-12-07 19:25:32
我的hibernate配置如下:
<session-factory>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
<![CDATA[ jdbc:mysql://localhost/Mysql_A?&useUnicode=true&characterEncoding=gbk]]>
</property>

<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">120</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">120</property>
<property name="hibernate.c3p0.acquire_increment">2</property>

<property name="show_sql">true</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
</session-factory>
现在还应该有个连接是
<property name="connection.url">
<![CDATA[ jdbc:mysql://localhost/Mysql_B?&useUnicode=true&characterEncoding=gbk]]>
</property>
怎么做??????

7 个解决方案

#1


建个工厂模式比较好 

DAO多写几个每个DAO写上不同的DataSource 

然后根据逻辑,在工厂里调用不同的DAO 

其实你这种需求 采用ibatis会更好点。

#2


不好意思,刚没说明白
项目刚开始没有这个需求,现在已经完成了,可又要求和一个php语言的论坛结合在一起,所以我现在的需求是这个项目的用户注册时,同时也要把用户注册信息写入到php连接的那个数据库中的一个表中. 我就想可以不可以改变jdbc:mysql://localhost/  Mysql_B?   &useUnicode=true&characterEncoding=gbk,如果可以,该怎么做,谢谢!!!

#3


可以再建一个配置文件,用这个文件创建一个新的sessionFactory,对数据库b的操作就从这个sessionFacory拿session就可以了

#4


可以考虑从数据库端解决问题阿,为什么一定要改程序呢。
比如:触发器。

#5


大家说具体点,可以吗?本人比较菜  

#6


默认hibernate.cfg.xml;
php.cfg.xml:
<session-factory>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
<![CDATA[ jdbc:mysql://localhost/discuz?&useUnicode=true&characterEncoding=gbk]]>
</property>

<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">120</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">120</property>
<property name="hibernate.c3p0.acquire_increment">2</property>

<property name="show_sql">true</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<mapping resource="com/innoing/common/entity/discuz.hbm.xml" />

</session-factory>
程序中
SessionFactory mysqlFactory = new Configuration().configure("/php.cfg.xml").buildSessionFactory();
Session session1 = mysqlFactory.openSession();
Discuz discuz = new Discuz();
discuz.setUsername(username);
discuz.setPassword(md5_str);
session1.save(discuz);
session1.flush();
session1.clear();
不报错,就是不执行上面这段程序,为什么???

#7


终于搞定了   晕倒

#1


建个工厂模式比较好 

DAO多写几个每个DAO写上不同的DataSource 

然后根据逻辑,在工厂里调用不同的DAO 

其实你这种需求 采用ibatis会更好点。

#2


不好意思,刚没说明白
项目刚开始没有这个需求,现在已经完成了,可又要求和一个php语言的论坛结合在一起,所以我现在的需求是这个项目的用户注册时,同时也要把用户注册信息写入到php连接的那个数据库中的一个表中. 我就想可以不可以改变jdbc:mysql://localhost/  Mysql_B?   &useUnicode=true&characterEncoding=gbk,如果可以,该怎么做,谢谢!!!

#3


可以再建一个配置文件,用这个文件创建一个新的sessionFactory,对数据库b的操作就从这个sessionFacory拿session就可以了

#4


可以考虑从数据库端解决问题阿,为什么一定要改程序呢。
比如:触发器。

#5


大家说具体点,可以吗?本人比较菜  

#6


默认hibernate.cfg.xml;
php.cfg.xml:
<session-factory>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
<![CDATA[ jdbc:mysql://localhost/discuz?&useUnicode=true&characterEncoding=gbk]]>
</property>

<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">120</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">120</property>
<property name="hibernate.c3p0.acquire_increment">2</property>

<property name="show_sql">true</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<mapping resource="com/innoing/common/entity/discuz.hbm.xml" />

</session-factory>
程序中
SessionFactory mysqlFactory = new Configuration().configure("/php.cfg.xml").buildSessionFactory();
Session session1 = mysqlFactory.openSession();
Discuz discuz = new Discuz();
discuz.setUsername(username);
discuz.setPassword(md5_str);
session1.save(discuz);
session1.flush();
session1.clear();
不报错,就是不执行上面这段程序,为什么???

#7


终于搞定了   晕倒