像 hibernate 和 ojb 之类的对象映射工具都非常风行——并且应当如此。这些工具将 jdbc 从 jdbc 程序设计中分离出来,从而使得编写数据库访问代码如同处理文件 i/o 一样简单。
最近一个有影响力的对象映射工具是ibatis-database layer。ibatis 不同于其它对象映射工具的地方在于它不是将对象映射到数据库,而是将 sql 映射为对象,反之将对象映射为 sql。简单的映射基础使得具有 java 和 sql 经验的开发人员很容易开始使用 ibatis。
ibatis-database layer 的核心是 xml 文件,例如:
select
emp_id as id,
last_name as lastname,
first_name as firstname,
title as title,
from employees
where emp_id = #value#
创建一个 employee 对象的动作直接映射到一个 sql 语句。
创建能够执行 sql 的对象的方式如下:
public employee getemployeebyid(long id) {
employee employee = (employee) sqlmap.executequeryforobject("loademployee",
id);
}
ibatis-database layer 支持对各种手工数据库操作动作的映射:插入、更新及删除。它还具有其它对象映射工具的优点,比如说多数据库支持、数据源配置、将依赖对象映射为属性等等。使用 ibatis 的另一个优点是其学习曲线比较温和,因为你已经了解了sql,这就相当于了解了 ibatis 的一半。然而,有其好处的同时也会有其(最起码是警告级的)坏处。
因为你是自己编写 sql,所以你可能会在 sql 中使用针对某个特定数据库的优化技术。使用针对特定数据库的 sql 意味着如果你决定更换数据库那么你就必须移值你的映射。
即使有这种警告,ibatis-database layer 依然值得考虑。自己衡量一下,看看这个框架对你是否有所帮助。