如果用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在项目中如何使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)