论坛首页 Java企业应用论坛

如何让系统支持多种数据库

浏览 22511 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-02-11   最后修改:2012-02-17
最近领导给了一个任务,带领几个人重新做一套系统,系统不大,其中一个要求想要请教各位大侠。
要求系统可以支持oracle 和 mysql,因为目前系统只支持oracle,后台sql都是oracle的语法,比如connect by,decode之类的。除了使用hibernate来做这个事情,,是否还有其他的解决办法,可以做到可以支持多种数据库。
请大家不吝赐教。




非常感谢大家的热情回复,前几天出差去了,不好意思。现在大概决定支持oracle与mysql,可以像大家说的抽象工厂做两DAO做解决。
   发表时间:2012-02-11  
ice_panda 写道
因为目前系统只支持oracle,后台sql都是oracle的语法

用oracle语法怎么可能在不改sql的前提下支持别的数据库呢?
0 请登录后投票
   发表时间:2012-02-11  
怎么样也要把oracle的特性去掉再说
0 请登录后投票
   发表时间:2012-02-12  
我是指重新开发一套的时候,如何让系统可以支持多数据库
0 请登录后投票
   发表时间:2012-02-12  
可以考虑用 JPA 。

Oracle 相关的特性可能不全完能照顾到 。
0 请登录后投票
   发表时间:2012-02-12  
ice_panda 写道
我是指重新开发一套的时候,如何让系统可以支持多数据库

全部采用SQL99标准语法,当然,这不一定能满足需要,那么可能的选择就是用Hibernate或者做一套语法转换器,那就复杂了……
反正是包含特性语法的同一段程序不可能在不改变代码的情况下转移到另一种数据库中
0 请登录后投票
   发表时间:2012-02-12  
1、统计下需要用到的sql,看下oracle相关的特性用到了多少。
   能不能用标准sql改写,对性能的影响有多大,能否接受。
   如果可以的话,设计成只用标准的sql语法。这样一般的db就ok了。
2、如果有些功能,必须要用某些sql的方言,看看能不能用其他方法绕过去,
   比如在jvm内存计算,等等。
3、如果不能绕过去的,考虑像hibernate一样设计,实现针对一个不同db的某些操作的facade,部署时根据配置的db,运行时针对某些功能点,选择不同的facade执行特定的native sql操作。
0 请登录后投票
   发表时间:2012-02-12  
提出跨数据库系统的人连自己的需求都不知道
0 请登录后投票
   发表时间:2012-02-12  
只能在dao层抽象两种设计了 比如 MysqlUserDao ,OracleUserDao,同样的功能实现两套就行了,你懂得,
1 请登录后投票
   发表时间:2012-02-12  
只能修改sql语句了,全部改成通用的
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics