锁定老帖子 主题:如何让系统支持多种数据库
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-11
最后修改:2012-02-17
要求系统可以支持oracle 和 mysql,因为目前系统只支持oracle,后台sql都是oracle的语法,比如connect by,decode之类的。除了使用hibernate来做这个事情,,是否还有其他的解决办法,可以做到可以支持多种数据库。 请大家不吝赐教。 非常感谢大家的热情回复,前几天出差去了,不好意思。现在大概决定支持oracle与mysql,可以像大家说的抽象工厂做两DAO做解决。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-02-11
ice_panda 写道 因为目前系统只支持oracle,后台sql都是oracle的语法
用oracle语法怎么可能在不改sql的前提下支持别的数据库呢? |
|
返回顶楼 | |
发表时间:2012-02-11
怎么样也要把oracle的特性去掉再说
|
|
返回顶楼 | |
发表时间:2012-02-12
我是指重新开发一套的时候,如何让系统可以支持多数据库
|
|
返回顶楼 | |
发表时间:2012-02-12
可以考虑用 JPA 。
Oracle 相关的特性可能不全完能照顾到 。 |
|
返回顶楼 | |
发表时间:2012-02-12
ice_panda 写道 我是指重新开发一套的时候,如何让系统可以支持多数据库
全部采用SQL99标准语法,当然,这不一定能满足需要,那么可能的选择就是用Hibernate或者做一套语法转换器,那就复杂了…… 反正是包含特性语法的同一段程序不可能在不改变代码的情况下转移到另一种数据库中 |
|
返回顶楼 | |
发表时间:2012-02-12
1、统计下需要用到的sql,看下oracle相关的特性用到了多少。
能不能用标准sql改写,对性能的影响有多大,能否接受。 如果可以的话,设计成只用标准的sql语法。这样一般的db就ok了。 2、如果有些功能,必须要用某些sql的方言,看看能不能用其他方法绕过去, 比如在jvm内存计算,等等。 3、如果不能绕过去的,考虑像hibernate一样设计,实现针对一个不同db的某些操作的facade,部署时根据配置的db,运行时针对某些功能点,选择不同的facade执行特定的native sql操作。 |
|
返回顶楼 | |
发表时间:2012-02-12
提出跨数据库系统的人连自己的需求都不知道
|
|
返回顶楼 | |
发表时间:2012-02-12
只能在dao层抽象两种设计了 比如 MysqlUserDao ,OracleUserDao,同样的功能实现两套就行了,你懂得,
|
|
返回顶楼 | |
发表时间:2012-02-12
只能修改sql语句了,全部改成通用的
|
|
返回顶楼 | |