
Hibernate与各种数据库连接的配置
1 Oracle连接配置
Oracler数据库的hibernate在配置文件中配置。
连接部分
<!--驱动程序-->
<property name="connectiondriver_class">oraclejdbcdriverOracleDriver</property>
<!-- JDBC URL -->
<property name="connectionurl">jdbc:oracle:thin:@localhost:1521:dbname</property>
<!--数据库用户名-->
<property name="connectionusername">test</property>
<!--数据库密码-->
<property name="connectionpassword">test</property>
上例使用的驱动类为:oraclejdbcdriverOracleDriver,开发人员需要将相关的jar包(ojdbc14jar)加入到classpath中。
2 MySql连接配置
MySql数据库的hibernate连接设置,在hibernatecfgxml文件中
<hibernate-configuration>
<session-factory>
<!--各属性的配置-->
<!—为true表示将Hibernate发送给数据库的sql显示出来 -->
<property name="show_sql">true</property>
<!-- SQL方言,这边设定的是MySQL -->
<property name="dialect">netsfhibernatedialectMySQLDialect</property>
<!--一次读的数据库记录数 -->
<property name="jdbcfetch_size">50</property>
<!--设定对数据库进行批量删除 -->
<property name="jdbcbatch_size">30</property>
<!--驱动程序-->
<property name="connectiondriver_class">commysqljdbcDriver</property>
<!-- JDBC URL -->
<property name="connectionurl">jdbc:mysql://localhost/dbname
characterEncoding=gb2312</property>
<!--数据库用户名-->
<property name="connectionusername">root</property>
<!--数据库密码-->
<property name="connectionpassword">root</property>
<!—映射文件 -->
<mapping resource="com/amigo/pojo/Userhbmxml"/>
<mapping resource="com/amigo/pojo/Orghbmxml"/>
</session-factory>
</hibernate-configuration>
上面使用的驱动类是commysqljdbcDriver需要将MySql的连接器jar包(eg mysql-connector-java-Dbname为数据库名字504-binjar)加入到classpath中。
3 Sql Server连接配置
Sql Server数据库的hibernate在配置文件中配置。
连接部分
<!--驱动程序-->
<property name="connectiondriver_class">netsourceforgejtdsjdbcDriver</property>
<!-- JDBC URL -->
<property
name="connectionurl">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname</property>
<!--数据库用户名-->
<property name="connectionusername">sa</property>
<!--数据库密码-->
<property name="connectionpassword"></property>
上例的驱动类使用的是jtds的驱动类,因此读者需要将jtds的jar包(eg jtds-12jar)加入到classpath中
4 DB2连接配置
DB2数据库的hibernate在配置文件中配置。
连接部分
<!--驱动程序-->
<property name="connectiondriver_class"> comibmdb2jdbcappDB2Driver</property>
<!-- JDBC URL -->
<property
name="connectionurl"> jdbc:db2://localhost:5000/sample </property> //sample为数据库名
<!--数据库用户名-->
<property name="connectionusername">admin</property>
<!--数据库密码-->
<property name="connectionpassword"></property>
上例使用的驱动类为:comibmdb2jdbcappDB2Driver,开发人员需要将相关的jar包(db2jccjar)加入到classpath中。
5sybase连接配置
sybase数据库的hibernate在配置文件中配置。
连接部分
<!--驱动程序-->
<property name="connectiondriver_class">comsybasejdbcSybDrive</property>
<!-- JDBC URL -->
<property
name="connectionurl"> jdbc:sybase:Tds:localhost:5007/myDB</property> ;//myDB为数据库名
<!--数据库用户名-->
<property name="connectionusername">userid</property>
<!--数据库密码-->
<property name="connectionpassword">user_password</property>
上例使用的驱动类为:comsybasejdbcSybDrive,开发人员需要将相关的jar包(jconn3jar)加入到classpath中。
6 informix连接配置
informix数据库的hibernate在配置文件中配置。
连接部分
<!--驱动程序-->
<property name="connectiondriver_class">cominformixjdbcIfxDrive</property>
<!-- JDBC URL -->
<property
name="connectionurl">jdbc:informix-sqli://123456789:1533/myDB:INFORMIXSERVER=myserver </property> ;//myDB为数据库名
<!--数据库用户名-->
<property name="connectionusername">testuser</property>
<!--数据库密码-->
<property name="connectionpassword">testpassword</property>
上例使用的驱动类为:cominformixjdbcIfxDrive,开发人员需要将相关的jar包(ifxjdbcjar)加入到classpath中。
7PostgreSQL连接配置
PostpreSQL数据库的hibernate在配置文件中配置。
连接部分
<!--驱动程序-->
<property name="connectiondriver_class">orgpostgresqlDriver</property>
<!-- JDBC URL -->
<property
name="connectionurl">jdbc:postgresql://localhost/myDB</property>;//myDB为数据库名
<!--数据库用户名-->
<property name="connectionusername">myuser</property>
<!--数据库密码-->
<property name="connectionpassword">mypassword</property>
上例使用的驱动类为:cominformixjdbcIfxDrive,开发人员需要将相关的jar包(postgresql-81-405jdbc3)加入到classpath中。
8access连接配置
access数据库的hibernate在配置文件中配置。
连接部分
<!--驱动程序-->
<property name="connectiondriver_class">sunjdbcodbcJdbcOdbcDriver</property>
<!-- JDBC URL -->
<property
name="connectionurl">jdbc:odbc:Driver={MicroSoftAccessDriver(mdb)};DBQ="+applicationgetRealPath("/Data/ReportDemomdb")</property> ;//myDB为数据库名
<!--数据库用户名-->
<property name="connectionusername">myuser</property>
<!--数据库密码-->
<property name="connectionpassword">mypassword</property>
DAO 在访问 sessionFactory 的时候都不得不在多个数据源中不断切换,问题就出现了:如何让 sessionFactory 在执 行数据持久化的时候,根据客户的需求能够动态切换不同的数据源?我们能不能在 spring 的框架下通过少量修改得到解决?是否有什么设计模式可以利用 呢?
问题的分析
我 首先想到在 spring 的 applicationContext 中配置所有的 dataSource 。这些 dataSource 可能是各种 不同类型的,比如不同的数据库: Oracle 、 SQL Server 、 MySQL 等,也可能是不同的数据源:比如 apache 提供的 orgapachecommonsdbcpBasicDataSource 、 spring 提供的 orgspringframeworkjndiJndiObjectFactoryBean 等。然后 sessionFactory 根据客户的 每次请求,将dataSource 属性设置成不同的数据源,以到达切换数据源的目的。
但 是,我很快发现一个问题:当多用户同时并发访问数据库的时候会出现资源争用的问题。这都是“单例模式”惹的祸。众所周知,我们在使用 spring 框架 的时候,在 beanFactory 中注册的 bean 基本上都是采用单例模式,即 spring 在启动的时候,这些 bean 就装载到内存中, 并且每个 bean 在整个项目中只存在一个对象。正因为只存在一个对象,对象的所有属性,更准确说是实例变量,表现得就如同是个静态变量(实际上“静 态”与“单例”往往是非常相似的两个东西,我们常常用“静态”来实现“单例”)。拿我们的问题来说, sessionFactory 在整个项目中只有一 个对象,它的实例变量 dataSource 也就只有一个,就如同一个静态变量一般。如果不同的用户都不断地去修改 dataSource 的值,必然 会出现多用户争用一个变量的问题,对系统产生隐患。
在hibernatecfgxml配置文件可以通过<mapping元素>配置多个映射文件,示例代码如下
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 30//EN"
";
上面例子,配置了3个映射文件
在SpringSide 3 中,白衣提供的预先配置好的环境非常有利于用户进行快速开发,但是同时也会为扩展带来一些困难。最直接的例子就是关于在项目中使用多个数据源的问题,似乎 很难搞。在上一篇中,我探讨了SpringSide 3 中的数据访问层,在这一篇中,我立志要解决多数据源配置的难题,我的思路是这样的:
第一步、测试能否配置多个DataSource
第二步、测试能否配置多个SessionFactory
第三步、测试能否配置多个TransactionManager
第四步、测试能否使用多个TransactionManager,也就是看能否配置多个
基本上到第四步就应该走不通了,因为Spring中似乎不能配置多个,而且@transactional注解也无法让用户选择具体使用哪个TransactionManager。也就是说,在SpringSide的应用中,不能让不同的数据源分别属于不同的事务管理器,多数据源只能使用分布式事务管理器,那么测试思路继续如下进行:
第五步、测试能否配置JTATransactionManager
如果到这一步,项目还能顺利在Tomcat中运行的话,我们就算大功告成了。但我总认为事情不会那么顺利,我总觉得JTATransactionManager需要应用服务器的支持,而且需要和JNDI配合使用,具体是不是这样,那只有等测试后才知道。如果被我不幸言中,那么进行下一步:
第六步、更换Tomcat为GlassFish,更换JDBC的DataSource为JNDI查找的DataSource,然后配置JTATransactionManager
下面测试开始,先假设场景,还是继续用上一篇中提到的简单的文章发布系统,假设该系统运行一段时间后非常火爆,单靠一台服务器已经无法支持巨大的用户数, 这时候,站长想到了把数据进行水平划分,于是,需要建立一个索引数据库,该索引数据库需保存每一篇文章的Subject及其内容所在的Web服务器,而每 一个Web服务器上运行的项目,需要同时访问索引数据库和内容数据库。所以,需要创建索引数据库,如下:
[java] view plain copy print
create database puretext_index;
use puretext_index;
create table articles(
id int primary key auto_increment,
subject varchar(256),
webserver varchar(30)
);
create database puretext_index;
use puretext_index;
create table articles(
id int primary key auto_increment,
subject varchar(256),
webserver varchar(30)
);
第一步测试,配置多个DataSource,配置文件如下:
applicationproperties
hibernate就是冬眠的意思!
Some bears hibernate(有些熊冬眠。)
Java Hibernate Framework:
了解基础:>
以上就是关于怎样配置hibernate才能适应新浪云上的数据库全部的内容,包括:怎样配置hibernate才能适应新浪云上的数据库、Hibernate+Spring 多数据源 怎么弄、如何在hibernate.cfg.xml中的主配置文件中配置多个映射文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)