论坛首页 Java企业应用论坛

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

浏览 22722 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-02-13  
难道卖的是产品?非要兼容数据库?
简单的系统一般来说自己用或者针对性开发的话很多都是可以定下来的
即使真是卖产品的也要尽量让销售人员用嘴说服对方使用合适的db
为了一些个百年都不会改变的问题去做改变。。。只能说脑子该擦油泥了
即使一套产品5-10年肯定会更新换代,即使是银行的系统也是一直在改变着
0 请登录后投票
   发表时间:2012-02-13   最后修改:2012-02-13
1、尽量把业务逻辑放在app;2、sql尽量用标准的,尽量不用存储过程(即1点);3、除非性能原因,尽量执行前面两点。4、在逻辑上分层上最好有DAO层抽象(spring的范例都有的,参考即可),不同的数据库有不同的DAO实现就可以了。
0 请登录后投票
   发表时间:2012-02-13   最后修改:2012-02-13
nkadun 写道
ice_panda 写道
我是指重新开发一套的时候,如何让系统可以支持多数据库

全部采用SQL99标准语法,当然,这不一定能满足需要,那么可能的选择就是用Hibernate或者做一套语法转换器,那就复杂了……
反正是包含特性语法的同一段程序不可能在不改变代码的情况下转移到另一种数据库中


只用SQL99的标准语法也不能保证能同时在2个环境上运行, 而且肯定会遇到2个都不能用的情况。。。
我建议只要直接写sql就放弃一套sql同时适应2个环境的想法, 除非能确定项目中都是极其简单的sql
0 请登录后投票
   发表时间:2012-02-13  
或者全部用存储过程,每种库上一套,说白了也是两套代码,不过在APP代码上不用改变了
0 请登录后投票
   发表时间:2012-02-13  
nkadun 写道
或者全部用存储过程,每种库上一套,说白了也是两套代码,不过在APP代码上不用改变了

我前面回复就是这个意思
0 请登录后投票
   发表时间:2012-02-13  
hibernate不就是干这个的吗,还要找?
0 请登录后投票
   发表时间:2012-02-14  
可以这样做 不是所有的sql语句都需要重写 那些mysql oracle 不一样的地方 写两个dao方法 在配置文件中表名 数据库类型
0 请登录后投票
   发表时间:2012-02-14  
呵呵 你的问题 可以使用抽象工厂设计模式
0 请登录后投票
   发表时间:2012-02-14  
caizi12 写道
WAMING5 写道
用抽象工厂设计不同的数据库DAO,根据数据库配置选择不同DAO实例


你这样设计和做四个支持不同数据库的系统有多大区别。


哈哈 有意思 像你这种想法 那还要设计模式干嘛 有什么用 需要改的时候我在重写一套不就完了

但是你要知道,好的程序,健壮的程序,容易扩展的程序是需要遵循开发规则的,

首先使用抽象工厂实现 只需要提供不同的实现DAO层就行 每种数据库的DAO都分别实现一个

他遵守了开放封闭原则,有需求变更的时候不需要修改代码但是可以新加类来扩展,如果以后还需要增加sqlserver的支持

我只需要在新建一个sqlserver 的实现DAO 降低了代码的耦合度 就OK了 其他的都不需要变 你说方便不方便


在一个 如果你使用了抽象工程 你就可以配置你的 oracleDaoService 是单例模式 还是 原型模式

极大的可配置性,同时还可以提高程序的性能 多好啊! 想加什么就加什么,想怎么改就怎么改

你说的那个实现4个系统 那一改 得乱成啥样,我改一个地四个产品都得改,一想都脑袋疼,还是个产品 老的程序员走了

在招新的程序员去改 那新的程序员估计想死的心都有了。
0 请登录后投票
   发表时间:2012-02-14  
a1721615168 写道
caizi12 写道
WAMING5 写道
用抽象工厂设计不同的数据库DAO,根据数据库配置选择不同DAO实例


你这样设计和做四个支持不同数据库的系统有多大区别。


哈哈 有意思 像你这种想法 那还要设计模式干嘛 有什么用 需要改的时候我在重写一套不就完了

但是你要知道,好的程序,健壮的程序,容易扩展的程序是需要遵循开发规则的,

首先使用抽象工厂实现 只需要提供不同的实现DAO层就行 每种数据库的DAO都分别实现一个

他遵守了开放封闭原则,有需求变更的时候不需要修改代码但是可以新加类来扩展,如果以后还需要增加sqlserver的支持

我只需要在新建一个sqlserver 的实现DAO 降低了代码的耦合度 就OK了 其他的都不需要变 你说方便不方便


在一个 如果你使用了抽象工程 你就可以配置你的 oracleDaoService 是单例模式 还是 原型模式

极大的可配置性,同时还可以提高程序的性能 多好啊! 想加什么就加什么,想怎么改就怎么改

你说的那个实现4个系统 那一改 得乱成啥样,我改一个地四个产品都得改,一想都脑袋疼,还是个产品 老的程序员走了

在招新的程序员去改 那新的程序员估计想死的心都有了。



那如果现在业务有所改变,需要改一下SQL逻辑,那你要改几次SQL?技术带来的好处都知道,有谁想过带来好处的同时也会伴随副作用。
0 请登录后投票
论坛首页 Java企业应用版

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