大数跨境
0
0

iBatis设计哲学及优点

iBatis设计哲学及优点 OceanMind海睿思
2016-08-31
0
导读:iBatis是为了解决数据库存储问题的一个混合性的解决方案,它综合了市面上基于数据库存储的各种解决方案的优点

iBatis是为了解决数据库存储问题的一个混合性的解决方案,它综合了市面上基于数据库存储的各种解决方案的优点,而规避了它们的缺点。

首先介绍一下几种数据库存储的解决方案:

SQL


SQL是面向数据库的操作语言,提供了操作数据库的全部功能。市场上存在的其他解决方案,提供的功能都是SQL功能的子集。所以,iBatis就使用SQL作为最主要的操作数据库的手段,同时结合其他工具的优点。

存储过程


当我们需要使用复杂逻辑来操作数据库时,如果全部逻辑都是在数据库端实现,就需要使用存储过程。

存储过程的优点是执行比较快,但是缺点也是很明显的,缺点包括:

(1)编写和调试没有合适的IDE软件,比较困难。

(2)基于过程的编程方式,与基于对象的业务逻辑相比,实现比较困难,有时甚至不能实现。

(3)数据库服务器往往在第三方,有时并不开放存储过程。

inlineSQL


为了解决存储过程的弊端,人们尝试在高级的语言中访问数据库,而把业务处理逻辑在数据库端解除,是的SQL直接与程序语言接触。

这样做到优点是:实现了高级语言和SQL的无缝结合。

缺点是:

(1)SQL本身的标准并不统一,基于Oracle的SQl和基于MySQL的SQL会有微小的差异,这样在连接不同数据库时,会产生错误。

(2)SQL语句必须先编译为高级语言,然后才能执行。

动态SQL

就是把SQL作为字符串,插入到程序之中,这种方式比较常见。它有效的解决了SQL和高级语言的耦合,通过高级语言的API来调用SQL。这种解决方式有很大的灵活性,可以在运行时给SQl设定相应的变量和参数。

缺点是:

(1)高级语言API调用比较繁琐。

(2)SQL语句较长时,会被分为很多段,调试和维护复杂。

进行对象和关系型数据库的映射

这种方法在开发者角度消除了SQL,通过建立程序对象和数据库对象的映射关系,让框架自动生成SQL,而开发者则按照面向对象的方式编程。

这种方式的优点是:

(1)API接口比较简单。

(2)提供Transaction、Cache等高级性能的管理

(3)提供懒载入服务

缺点是:

(1)对象和关系型数据库之间映射规则比较复杂,在一些不符合范式的数据库系统上,映射甚至不存在。

(2)提供的功能只是SQl语言的子集,有些复杂SQl逻辑不能实现。


iBatis的最终登场

学习的技术

类似的优点

解决的问题

存储过程

数据库查询逻辑位于程序逻辑之外

业务逻辑和数据查询逻辑分离

Inline SQL

直接撰写完整SQL,没有拼接和设置参数部分

无需系统编译,可以直接对SQL进行调试

动态SQl

可以动态生成SQL

不用在编码中插入SQL字符串

对象和关系型数据库映射

支持数据库对象的高级操作,如懒加载、缓存、继承等等

可以处理各种类型的数据结构的存储


【声明】内容源于网络
0
0
OceanMind海睿思
中新赛克旗下的大数据产品品牌,致力于成为“您身边的数字化转型专家”。
内容 292
粉丝 0
OceanMind海睿思 中新赛克旗下的大数据产品品牌,致力于成为“您身边的数字化转型专家”。
总阅读1
粉丝0
内容292