對象映射就這么容易
發(fā)表時間:2024-02-11 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]像 Hibernate 和 OJB 之類的對象映射工具都非常風(fēng)行——并且應(yīng)當(dāng)如此。這些工具將 JDBC 從 JDBC 程序設(shè)計中分離出來,從而使得編寫數(shù)據(jù)庫訪問代碼如同處理文件 I/O 一樣簡單。 最近一個有影響力的對象映射工具是iBATIS-Database Layer。iBATIS 不同于其...
像 Hibernate 和 OJB 之類的對象映射工具都非常風(fēng)行——并且應(yīng)當(dāng)如此。這些工具將 JDBC 從 JDBC 程序設(shè)計中分離出來,從而使得編寫數(shù)據(jù)庫訪問代碼如同處理文件 I/O 一樣簡單。
最近一個有影響力的對象映射工具是iBATIS-Database Layer。iBATIS 不同于其它對象映射工具的地方在于它不是將對象映射到數(shù)據(jù)庫,而是將 SQL 映射為對象,反之將對象映射為 SQL。簡單的映射基礎(chǔ)使得具有 Java 和 SQL 經(jīng)驗的開發(fā)人員很容易開始使用 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>
創(chuàng)建一個 Employee 對象的動作直接映射到一個 SQL 語句。
創(chuàng)建能夠執(zhí)行 SQL 的對象的方式如下:
public Employee getEmployeeById(Long id) {
Employee employee = (Employee) sqlMap.executeQueryForObject("loadEmployee",
id);
}
iBATIS-Database Layer 支持對各種手工數(shù)據(jù)庫操作動作的映射:插入、更新及刪除。它還具有其它對象映射工具的優(yōu)點,比如說多數(shù)據(jù)庫支持、數(shù)據(jù)源配置、將依賴對象映射為屬性等等。使用 iBATIS 的另一個優(yōu)點是其學(xué)習(xí)曲線比較溫和,因為你已經(jīng)了解了SQL,這就相當(dāng)于了解了 iBATIS 的一半。然而,有其好處的同時也會有其(最起碼是警告級的)壞處。
因為你是自己編寫 SQL,所以你可能會在 SQL 中使用針對某個特定數(shù)據(jù)庫的優(yōu)化技術(shù)。使用針對特定數(shù)據(jù)庫的 SQL 意味著如果你決定更換數(shù)據(jù)庫那么你就必須移值你的映射。
即使有這種警告,iBATIS-Database Layer 依然值得考慮。自己衡量一下,看看這個框架對你是否有所幫助。