如果你从事软件开发工作有了一段时间的话,那么肯定听过关于“自己动手还是花钱购买” 的争论。该争论是说,针对一个业务问题,我们是应该自己动手构建自己的解决方案呢,还是应 该花钱购买一个声称已经解决了此问题的软件包。通常付出的代价是差不多的(否则也就没什么好争论的了),但真正的权衡其实在于“自己动手所要花费的时间”与“花钱购买来的软件包和 我们要解决的问题的契合度”。自己构建的软件当然能恰到好处地符合业务需求,但实现它确实 需要更多的时间。购买软件包当然非常迅速,但有时又不一定能满足我们所有的需求。基于这个 原因,当决定购买软件包时,我们往往会在买回以后对它进行改造,修改它的私有数据库,扩展 它所遗漏的特征,这样就可以两全其美了。

我们其实可以好好讨论一下深入别人的私有数据库并修改它是一件多么麻烦的事,但在此我想告诉你的只有一句话,私有数据库绝不是为了方便第三方修改而设计的。其设计中往往充满了假设、限制以及非标准的数据类型,还有其他像“请勿修改,否则后果自负”这样的警告信号。 但企业为了省钱,往往会不顾这些警告信号而做出一些惊人的事情。因此软件开发人员就注定要 深陷在这些私有数据库构成的丛林中,艰难探索了。

MyBatis在处理私有数据库时同样是一个非常优秀的持久化框架。通常这样的数据库只允许只 读访问,使用MyBatis时,对这样的需求你大可放心,因为你可以限制运行的SQL的类别。当需求 不允许数据库更新时,MyBatis绝不会对数据库执行任何神奇的更新操作。当需要更新时,私有数据库往往对数据的组织方式非常挑剔。MyBatis允许编写非常特定的更新语句以处理这种情况。

如果说有什么东西的存在是现代面向对象软件开发人员的祸害的话,那么无疑是遗留数据库 了。遗留数据库往往是曾经的企业数据库。它们具有企业数据库的各种复杂性和依赖关系。此外, 它们还具有长年累月的修改、快速修正、掩饰、绕弯路、绷带解决方案以及技术限制所带来的无尽的“伤痕”。更重要的是,遗留数据库通常是在不仅已经过时而且有时已完全不被支持的老式 平台上开发出来的。因此对于现代开发人员来说可能已经没有适当的驱动程序和开发工具可用 了。

MyBatis对于遗留数据库同样是有帮助的。只要你正在工作的系统有合适的数据库驱动程序可用,MyBatis就可以像对其他任何数据库那样发挥作用。事实上,MyBatis可能是处理遗留数据库问题最好的持久化框架了,因为它对数据库的设计没有做任何假设,所以即使是对于最让开发人员头痛的遗留数据库,它也可以处理。

系列文章:

MyBatis知多少(1)

MyBatis知多少(2)

MyBatis知多少(3)

MyBatis知多少(4)MyBatis的优势

MyBatis知多少(5)业务对象模型

MyBatis知多少(6)表现层与业务逻辑层

MyBatis知多少(7)持久层

MyBatis知多少(8)关系型数据库

MyBatis知多少(9)不同类型的数据库

MyBatis知多少(10)应用程序数据库

MyBatis知多少(11)企业数据库

MyBatis知多少(12)私有数据库的更多相关文章

  1. MyBatis知多少(13)MyBatis如何解决数据库的常见问题

    在现代软件项目中数据库通常被认为是遗留组件.它们一直以来都被认为难以使用,不论是出于技术的还是非技术的原因.大多数软件开发人员宁可从头开始完完全全地重建一个数据库. 如果数据库是遗留下来的,相信一些开 ...

  2. MyBatis知多少(9)不同类型的数据库

    并非所有的数据库都如此复杂,需要使用昂贵的数据库管理系统以及企业级的硬件.一些数 据库其实非常小,足以运行在一台老式的PC机上.所有的数据库都是不一样的.它们有各自不 同的需求和不同的挑战.iBATI ...

  3. MyBatis知多少(11)企业数据库

    企业数据库比应用程序数据库更大,其外部影响也更大.它们与其他系统之间存在更多的关系,包括依赖关系和被依赖关系.这些关系可能是Web应用程序与报表工具之间的,但也很有可 能是与其他的复杂系统和数据库的接 ...

  4. MyBatis知多少(10)应用程序数据库

    应用程序数据库往往是最小.最简单.也最易于使用的数据库.这种数据库往往是我们这些开发人员通常不介意使用甚至非常乐意使用的.应用程序数据库通常与我们的应用程序处于同一个项目中,两者一齐设计和实现.正是因 ...

  5. MyBatis知多少(8)关系型数据库

    MyBatis的存在就是为了简化对关系数据库的访问.数据库的确非常复杂,要正确地使用它们需要做很多的工作.数据库负责管理数据和修改数据.我们使用数据库而不简简单单地使用一个 平板文件的原因就在于数据库 ...

  6. MyBatis知多少(26)MyBatis和Hibernate区别

    iBatis和Hibernate之间有着较大的差异,但两者解决方案很好,因为他们有特定的领域.我个人建议使用MyBatis的,如果: 你想创建自己的SQL,并愿意维持他们. 你的环境是由关系数据模型驱 ...

  7. MyBatis知多少(26)调试

    这是很容易,同时与iBATIS的工作程序进行调试. iBATIS有内置的日志支持,并适用于下列日志库,并在这个顺序搜索他们. Jakarta Commons日志记录(JCL). Log4J JDK 日 ...

  8. MyBatis知多少(25)动态SQL

    使用动态查询是MyBatis一个非常强大的功能.有时你已经改变WHERE子句条件的基础上你的参数对象的状态.在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的 ...

  9. MyBatis知多少(24)存储过程

    使用MyBatis配置来调用存储过程.为了理解这一章,首先需要了解我们是如何在MySQL中创建一个存储过程. 在继续对本节学习之前,可以自行学习MySQL存储过程. 我们已经在MySQL下有EMPLO ...

随机推荐

  1. paip.广告过滤系统 php 实现

    paip.广告过滤系统 php 实现 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/at ...

  2. js 导出Excel

    最近从Silverlight这边转到javascript过来,现在要导出一个导出excel的功能.上级领导指示当页显示多少数据,就导出多少数据,没有必要从后台在去数据.以前也没有接触过这方面的,在网上 ...

  3. Jquery对Cookie的操作

    第一步:先引用jQuery的插件jquery-1.9.1.min.js 第二步:引用jquery.cookie.js插件 下对cookie的操作: $.cookie("cookieName& ...

  4. Leetcode-237 Delete Node in a Linked List

    #237.    Delete Node in a Linked List Write a function to delete a node (except the tail) in a singl ...

  5. 最近碰到了一个病毒木马:virus.win32.ramnit.B

    由于 使用了 简单游 平台上的挂机工具: 番茄-自动人机对战免费版1217  ,使用了很久,头段时间家里电脑 360提示有病毒,本来我一直忽略的,但 我扫描了一下,大量的这个木马,于是 吧 简单游卸载 ...

  6. Xamarin.Forms bug? System.ObjectDisposedException: Cannot access a disposed object

    Hi, My Android Xamarin.Forms application uses a Navigation stack to display various views, I often h ...

  7. js获取gridview模板列中textbox行列的值

    下面一个例子:在gridview中第一列输入数值,第二列输入数值,点击第三列的时候进行计算 求和,如果不符合标记为红色字体. 如图: 代码 : <html xmlns="http:// ...

  8. std::bind和std::function

    std::bind 用于绑定一个函数,返回另外一种调用方式的函数对象 ,可以改变参数顺序 和个数,特别是在多线程的程序中,经常用它将函数进行包装,然后打包发送给工作线程,让工作线程去执行我们的任务. ...

  9. 安装 LuaSocket

    如果你安装有 Lua 模块的安装和部署工具 -- LuaRocks,那么一条指令就能安装部署好 LuaSocket: luarocks install luasocket  

  10. Erwin 生成 mysql 带注释(comment )的脚本

    Erwin设计数据库非常方便,有逻辑视图和物理视图,可以很方便的生成数据库文档和SQL 脚本.在使用过程中唯一不爽的地方是脚本不能生成comment.   在百度无数次无法解决下,又FQ谷歌,在一个日 ...