当前位置:首页 » 操作系统 » hibernate跨数据库

hibernate跨数据库

发布时间: 2022-07-15 22:28:04

㈠ hibernate不同数据库连接查询

在 hibernate 里面写原生sql——ANSI SQL,就可以这样

如果单查询,还可以用视图的方式

㈡ hibernate跨数据库查询

可以使用hibernate支持的Hql语言实现跨平台操作数据库的要求!

㈢ Hibernate框架适用于什么项目说明其优劣性

Hibernate框架基本上适用于所有项目,其优点在于hibernate对表的级联操作,如何你操作一条数据对很多表的数据都有影响,hibernate的级联会自动帮你维护表里面的数据,前提是要配置级联选项。
其二优点在于hibernate跨数据库,我想只要是程序员,都希望自己的项目开发后适用于所有的数据库,不只是针对某一种数据库,如果单纯的用jdbc去操作数据库,那么就必须编写sql语句,不同的数据库的sql语句稍微有差距,那么项目肯定是针对某个数据库进行开发。要想hibernate的项目实用所有数据,前提是不要使用hibernate的纯sql查询。

一般大项目都是对性能要求很高,也就是并发量很大,整个项目的性能瓶颈都压在了数据库上,sql语句的好坏直接影响性能,如果不精通hibernate的查询语句和hibernate管理的对象的状态的区别就不要使用hibernate。什么是精通hibernate ,你懂的。

㈣ hibernate可以跨数据库吗

首先来说,跨数据库肯定是可以的!
通常有两个方法,第一个是笨办法,就是在配置项里定义两个数据源,并且这两个数据源分属于两个SessionFaction对象。并且在代码中也有创建两个对象分别对应两个数据库,这样做比较麻烦,代码会很繁琐,并且执行效率不一定高。

第二个办法是使用spring开源框架里提供的动态数据源,通过动态的加载,将两个数据源信息加载到一个SessionnFacgtion对象中。方法一里面提到的缺点在这里都能够很好的解决。

大概步骤如下:
1.org.springframework.beans.factory.support.DefaultListableBeanF

actory获得bean工厂,可以添加销毁数据源;

2.org.springframework.beans.factory.support.BeanDefinitionBuilder动态创建bean,然后通过
DefaultListableBeanFactory.registerBeanDefinition(dsInfo.getId(), beanDefinitionBuilder.getBeanDefinition()); 注册数据源事务

3.销毁数据源
beanFactory.destroySingleton(tsId);
beanFactory.removeBeanDefinition(tsId);

㈤ 如何用hibernate实现跨oracle数据库操作

如果用的myeclipsese的话,打开window---->open perspective---->Myeclipse Haibernate,然后new一个,然后的然后,......在new的这个点击右键有个反向工程,就好了!

㈥ hibernate与数据库连接的几种方式

三种连接都是以连接MySQl为例。

<!-- JDBC驱动程序 -->
<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</property> <!-- 数据库用户名 -->
<property name="connection.username">root</property> <!-- 数据库密码 -->
<property name="connection.password">8888</property>

上面的一段配置,在c3p0和dbcp中,都是必需的,因为hibernate会根据上述的配置来生成connections,再交给c3p0或dbcp管理.但是,proxool则不能,虽然说服文档上说proxool也可以和hibernate结合,但我按照官方文档上的说明怎么配也出错,而且,到了sun和hibernat有的官方网站上问了几天,都没有一个人回复。后来我只能让proxool自身来生成连接,这在下面再讲。

1 C3P0

只需在hibernate.cfg.xml中加入
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property>
<property name="c3p0.max_statement">50</property>

还有在classespath中加入c3p0-0.8.4.5.jar

2 dbcp

在hibernate.cfg.xml中加入

<property name="dbcp.maxActive">100</property>
<property name="dbcp.whenExhaustedAction">1</property>
<property name="dbcp.maxWait">60000</property>
<property name="dbcp.maxIdle">10</property>

<property name="dbcp.ps.maxActive">100</property>
<property name="dbcp.ps.whenExhaustedAction">1</property>
<property name="dbcp.ps.maxWait">60000</property>
<property name="dbcp.ps.maxIdle">10</property>

还有在classespath中加入commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar.

3 proxool

在hibernate.cfg.xml中加入

<property name="proxool.pool_alias">pool1</property>
<property name="proxool.xml">ProxoolConf.xml</property>
<property name="connection.provider_class">net.sf.hibernate.connection.ProxoolConnectionProvider</property>

然后,在和hibernate.cfg.xml同一个目录下,加一个ProxoolConf.xml文件,内容为

<?xml version="1.0" encoding="utf-8"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>pool1</alias>
<!--proxool只能管理由自己产生的连接-->
<driver-url>jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</driver-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value="8888"/>
</driver-properties>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->
<maximum-new-connections>20</maximum-new-connections>
<!-- 最少保持的空闲连接数-->
<prototype-count>5</prototype-count>
<!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->
<maximum-connection-count>100</maximum-connection-count>
<!-- 最小连接数-->
<minimum-connection-count>10</minimum-connection-count>
</proxool>
</something-else-entirely>

并在classespath中加入proxool-0.8.3.jar

㈦ hibernate跨数据库查询问题

不可以跨数据库连接查询的,这得看数据库中没有这方面的其他支持。
而且你现在这样查根本就不在一个事物中,如果需要支持多数据库事物需要使用jta,分布式事物。

㈧ hibernate切换了不同的数据库,那hql还需要改动吗它会自动转换成对应数据库语言的sql吗

不需要改动。hql是独立于数据库的,hibernate切换数据库以后,除了jdbc的一些如地址、用户名、密码要换以外。

Hibernate支持不同的数据库主要是用方言也就是dialect的,对应就是hibernate.cfg.xml配置文件里的一个设置,比如 SQL Server的就是:

<propertyname="hibernate.dialect"value="org.hibernate.dialect.SQLServerDialect"/>

这里的org.hibernate.dialect.SQLServerDialect是hibernate带的或你自己提供的一个数据库数据类型映射的一个Java类,由它处理不同数据库的区别。

但是如果不同的数据库之间差别太大的话,即直接要写不同的SQL语句的话,Hibernate的dialect也处理不了。

热点内容
图色模拟脚本是什么 发布:2025-01-22 09:09:04 浏览:164
怎么重置银行卡密码 发布:2025-01-22 09:07:18 浏览:334
哪个平台云服务器好用 发布:2025-01-22 09:07:16 浏览:476
编程猫审判 发布:2025-01-22 08:54:17 浏览:142
明日之后怎么加不同服务器好友 发布:2025-01-22 08:51:08 浏览:206
php代码格式化 发布:2025-01-22 08:50:22 浏览:180
db2plsql 发布:2025-01-22 08:19:10 浏览:779
猪猪侠脚本没反应 发布:2025-01-22 08:08:37 浏览:812
赛博朋克跟永劫无间哪个配置高 发布:2025-01-22 08:07:07 浏览:535
请尽快上传 发布:2025-01-22 08:06:22 浏览:189