在现代软件项目中数据库通常被认为是遗留组件。它们一直以来都被认为难以使用,不论是出于技术的还是非技术的原因。大多数软件开发人员宁可从头开始完完全全地重建一个数据库。 如果数据库是遗留下来的,相信一些开发人员会真心地希望负有此责的,只可惜两种情况都是不实际的,也不可能发生。不论你是否相信,数据库的存在总有它自己的理由——不论这个理由是否充分。可能是数据库变更的代价太高了,也可能是因为有其他系统依赖于该数据库。不论数据库被质疑的原因如何,我们都应该学会如何高效地与任何类型(包括饱受非议)的数据库打交道。MyBatis的开发主要就是为了对付那些设计非 常复杂甚至非常糟糕的数据库。以下描述数据库经常遇到的一些问题以及MyBatis是如何帮助解决这些问题的。

所有权与控制

在现代企业环境中,数据库存在的第一个同时也是最主要的困难其实完全不是技术问题,而是大多数现代软件企业都将数据库的所有权和责任从应用程序开发团队中分离了出来这样一个事实。数据库通常都是完全由企业中的一个独立小组所拥有。如果幸运的话,这个小组可能会与你的项目团队协同工作一起开发软件。否则,你的项目团队与数据库小组之间就可能存在一堵 “墙”,你所有的需求都必须越过这堵墙传递给对方,然后期望它们能够被接收到并且得到理解。 多么可悲啊,但事实就是这样,并且它一直都在发生着。

要和数据库团队打交道通常都是一件非常困难的事情。主要原因就在于他们往往都承受着巨大的压力且处理的项目不止一个。他们经常需要处理大量的需求,有时这些需求甚至可能是冲突的。数据库系统的管理的确是一项非常困难的任务,因此许多公司都认为它是一项至关重要的职责企业数据库系统的崩溃是会惊动该企业的CEO的。因此,数据库管理团队通常都非常谨慎。 数据库系统的变更控制流程通常都比应用程序代码的变更控制流程要严格得多。数据库的某些变 更可能会需要数据转移。其他一些变更则可能需要进行大量的测试以保证它们对性能不会造成影 响。数据库团队难以交往看来的确是有理由的,因此如果可能,能帮帮他们就帮帮他们吧。

当需要进行数据库设计以及数据库交互时,MyBatis通常能带来极大的灵活性。DBA都希望能够看到将在他们的数据库上运行的SQL,对于复杂的查询,他们甚至可能可以帮忙调整一下,而MyBatis使这种希望成为了现实。一些使用MyBatis的开发团队甚至拥有一个DBA或者数据建模人员来帮助他们直接维护MyBatis的SQL文件。数据库管理员和SQL编程人员要理解MyBatis绝对没有 问题,因为背地里绝对不会发生任何意想不到的事情,他们可以看到所有的SQL语句。

系列文章:

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)私有数据库

MyBatis知多少(13)MyBatis如何解决数据库的常见问题的更多相关文章

  1. MyBatis知多少(12)私有数据库

    如果你从事软件开发工作有了一段时间的话,那么肯定听过关于“自己动手还是花钱购买” 的争论.该争论是说,针对一个业务问题,我们是应该自己动手构建自己的解决方案呢,还是应 该花钱购买一个声称已经解决了此问 ...

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

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

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

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

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

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

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

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

  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. Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o

    Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o 1. Criteria,,Criterion ,, 1 <2. 主要的对象黑头配置磊 ...

  2. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  3. FIR.im Weekly - 让炫酷 UI 为 APP 增色

    上周我看到一些不错的设计分享,挑选了几个比较全的 GitHub 资源推荐给大家.此外,还精选了一些实用的 iOS,Android 干货文章. iOS 炫酷动画资源 @荧星诉语 收集整理了主流炫酷动画框 ...

  4. MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK

    安装好MyEclipse之后,在MyEclipse中开发项目时,默认使用的是MyEclipse是自带的JDK,如下图所示: 如果我们需要使用自己安装好的JDK,那么就需要在MyEclipse中重新设置 ...

  5. nginx 负载均衡集群解决方案 healthcheck_nginx_upstreams (一)

    该文章来源于互联网,目前找不到原作者,放在这里的目的是记录healthcheck_nginx_upstreams 的安装过程和相关配置,在起初安装成功后不能够正常运行healthcheck_nginx ...

  6. C#与C++之间类型的对应

    Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char DOUB ...

  7. PowerShell remoting中的second-hop问题

    一直以来都对powershell remote有点一知半解, 今天通过这个问题的解决, 理解加深了好多.   下文写的挺清楚的, 保留在这里. Using CredSSP for second-hop ...

  8. Java中long和Long有什么区别 (转载)

    “Long is a class. long is a primitive. That means Long can be null, where long can't. Long can go an ...

  9. Docker实践(1)—入门

    tutorial centos6.5环境. # yum install docker-io -y 会依赖安装libcgroup,lxc,lxc-libs 启动docker # service dock ...

  10. Bencode的编码与解码

    开源地址: https://github.com/CreateChen/Bencode Nuget: Install-Package Bencode 1. Bencode规则 BEncoding是Bi ...