像Hibernate和OJB之类的对象映射工具都非常风行——并且应当如此。这些工具将JDBC从JDBC程序设计中脱离出来,从而使得编写数据库访问代码如同处理文件I/O一样简单。
最近一个有影响力的对象映射工具是iBATIS-Database Layer。iBATIS不同于其它对象映射工具的地方在于它不是将对象映射到数据库,而是将SQL映射为对象,反之将对象映射为SQL。简单的映射基础使得具有Java和SQL经验的开发人员很容易开始使用iBATIS。
iBATIS-Database Layer的核心是XML文件,例如:
<mapped-statement name="loadEmployee" result-class="tips.Employee">
select
emp_id as id,
last_name as lastName,
first_name as firstName,
title as title,
from employees
where emp_id = #value#
</mapped-statement>
创建一个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依然值得考虑。自己衡量一下,看看这个框架对你是否有所帮助。