怎样用Hibernate配置多个数据源

怎样用Hibernate配置多个数据源,第1张

如果用xml配置的话,那就写两个配置文件,可以不再用“hibernatecfgxml”做文件名,随便什么都可以,像“mysqlcfgxml”或“sqlserverxml”都行。用Configuration类获取SessionFactory的代码:

SessionFactory mysqlFactory = new Configuration()configure("mysqlcfgxml")buildSessionFactory();

SessionFactory sqlserverFactory = new Configuration()configure("sqlserverxml")buildSessionFactory();

如果你用spring,多数据库就更简单了,像这段代码可以完成所有配置:

<beans>

<bean id="mysqlDS" class="orgspringframeworkjdbcdatasourceDriverManagerDataSource">

<property name="url">

<value>jdbc:mysql://localhost:3306/test</value>

</property>

<property name="driverClassName">

<value>orggjtmmmysqlDriver</value>

</property>

<property name="username">

<value>root</value>

</property>

<property name="password">

<value>123456</value>

</property>

</bean>

<bean id="mysqlFactory" class="orgspringframeworkormhibernate3LocalSessionFactoryBean">

<property name="dataSource">

<ref local="mysqlDS"/>

</property>

<property name="hibernateProperties">

<props>

<prop key="hibernatedialect">orghibernatedialectMySQLDialect</prop>

</props>

</property>

<property name="mappingResources">

<list>

<value>testhbmxml</value>

</list>

</property>

</bean>

<bean id="sqlserverDS" class="orgspringframeworkjdbcdatasourceDriverManagerDataSource">

<property name="url">

<value>jdbc:odbc:test</value>

</property>

<property name="driverClassName">

<value>sunjdbcodbcJdbcOdbcDriver</value>

</property>

<property name="username">

<value>root</value>

</property>

<property name="password">

<value>123456</value>

</property>

</bean>

<bean id="sqlserverFactory" class="orgspringframeworkormhibernate3LocalSessionFactoryBean">

<property name="dataSource">

<ref local="sqlserverDS"/>

</property>

<property name="hibernateProperties">

<props>

<prop key="hibernatedialect">orghibernatedialectSQLServerDialect</prop>

</props>

</property>

<property name="mappingResources">

<list>

<value>testhbmxml</value>

</list>

</property>

</bean>

</beans>

hibernate和spring还有很多可行的配置,可以参考他们的references,有很详细地说明的。

JDBC既不是spring的东西,也不是hibernate的,它只是J2EE的一种规范。

hibernate作为持久层框架,它解决的是Java对象持久化的问题,但从本质上说还是必须通过jdbc api来完成 *** 作数据库的工作。

spring的核心实际上只有2个东西,IoC和AOP,与数据库没有什么关系。它的扩展包中提供了对各种持久层框架的集成,包括hibernate。当然还有一个简单的jdbcTemplate。

至于hibernate和jdbc的选取,取决于你自身的业务以及数据量。

MyEclipse中开发Hibernate图解入门

准备工作

⑴安装MyEclipse

⑵安装Tomcat服务器

⑶安装Oracle数据库(当然,使用Mysql、SqlServer数据库均可,但配置参数有些许差别,本文不作讨论)

二、创建Hibernate项目

⑴首先,让MyEclipse连接上数据库,因此第一步就是确保MyEclipse的DB Browser视窗处于显示状态,若没有则Window→Show View→Other→DB Browser。如图所示:

接下来,在DB Browser中New一个数据库连接:

在d出的页面中输入相应文本:

点击下一步(Next):

点击完成(Finish),之后在DB Browser视窗中打开数据库连接:

⑵新建一个Java项目

在项目上右键→MyEclipse→Add hibernate Capabilities添加Hibernate兼容:

直接使用默认配置,点击下一步(Next):

继续默认配置,点击下一步(Next):

继续默认配置,点击下一步(Next):

点击完成(Finish),出现以下界面,点击Add,添加2个很有用的属性::

同上图,添加format_sql,创建之后:

⑶生成数据库表与java文件的关联

在DB Browser中同时选中DEPT和EMP表,由于两张表之间有约束,因此不能单独选择,只能同时使用;之后右键→Hibernate Reverse Engineering:

依次进行下图配置:

⑷修改配置文件

将上图红色区域修改为下图红色区域:

之后在数据库中创建同配置文件中相同名字的序列:

最后写一个简单的测试文件测试一下:

实现了输出全部员工名字和查询编号为7788的员工名字的功能:

SMITH

ALLEN

WARD

JONES

MARTIN

BLAKE

CLARK

SCOTT

KING

TURNER

ADAMS

JAMES

FORD

MILLER

============================

SCOTT

首先你要明白,save和merge的效果都是没有主键的时候是保存,有主键的时候是更新,但是save执行之后,对象变为持久态,而merge执行过后,对象是脱管状态,也就是说,这时对象的主键是不起作用的。

在你的程序中,每次循环都thisproTechProchead,所以对于save来说第一次过后,对象已经是持久态了,所以之后的 *** 作只是更新,而merge的话,由于第一次之后是托管的,主键不起作用,所以是插入,也正是因为主键不起作用,所以插入的主键就是null

以上就是关于怎样用Hibernate配置多个数据源全部的内容,包括:怎样用Hibernate配置多个数据源、一般用hibernate来处理数据库,而不是用spring的JDBC来处理数据库、hibernate在项目中如何使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10148877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存