明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

對(duì)象映射就這么容易

[摘要]像 Hibernate 和 OJB 之類的對(duì)象映射工具都非常風(fēng)行——并且應(yīng)當(dāng)如此。這些工具將 JDBC 從 JDBC 程序設(shè)計(jì)中分離出來,從而使得編寫數(shù)據(jù)庫訪問代碼如同處理文件 I/O 一樣簡(jiǎn)單。 最近一個(gè)有影響力的對(duì)象映射工具是iBATIS-Database Layer。iBATIS 不同于其...
像 Hibernate 和 OJB 之類的對(duì)象映射工具都非常風(fēng)行——并且應(yīng)當(dāng)如此。這些工具將 JDBC 從 JDBC 程序設(shè)計(jì)中分離出來,從而使得編寫數(shù)據(jù)庫訪問代碼如同處理文件 I/O 一樣簡(jiǎn)單。



最近一個(gè)有影響力的對(duì)象映射工具是iBATIS-Database Layer。iBATIS 不同于其它對(duì)象映射工具的地方在于它不是將對(duì)象映射到數(shù)據(jù)庫,而是將 SQL 映射為對(duì)象,反之將對(duì)象映射為 SQL。簡(jiǎn)單的映射基礎(chǔ)使得具有 Java 和 SQL 經(jīng)驗(yàn)的開發(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)建一個(gè) Employee 對(duì)象的動(dòng)作直接映射到一個(gè) SQL 語句。

創(chuàng)建能夠執(zhí)行 SQL 的對(duì)象的方式如下:

public Employee getEmployeeById(Long id) {
Employee employee = (Employee) sqlMap.executeQueryForObject("loadEmployee",
id);
}

iBATIS-Database Layer 支持對(duì)各種手工數(shù)據(jù)庫操作動(dòng)作的映射:插入、更新及刪除。它還具有其它對(duì)象映射工具的優(yōu)點(diǎn),比如說多數(shù)據(jù)庫支持、數(shù)據(jù)源配置、將依賴對(duì)象映射為屬性等等。使用 iBATIS 的另一個(gè)優(yōu)點(diǎn)是其學(xué)習(xí)曲線比較溫和,因?yàn)槟阋呀?jīng)了解了SQL,這就相當(dāng)于了解了 iBATIS 的一半。然而,有其好處的同時(shí)也會(huì)有其(最起碼是警告級(jí)的)壞處。

因?yàn)槟闶亲约壕帉?SQL,所以你可能會(huì)在 SQL 中使用針對(duì)某個(gè)特定數(shù)據(jù)庫的優(yōu)化技術(shù)。使用針對(duì)特定數(shù)據(jù)庫的 SQL 意味著如果你決定更換數(shù)據(jù)庫那么你就必須移值你的映射。

即使有這種警告,iBATIS-Database Layer 依然值得考慮。自己衡量一下,看看這個(gè)框架對(duì)你是否有所幫助。




相關(guān)文章