EJB技術的數據庫應用
一、J2EE 技術簡介
J2EE是 SUN 公司提出的在分布式環境中的一種體系結構,它提供了一種基于組件的設計、開發、集成、部署企業應用系統的方法,J2EE平臺提供了多層分布式的應用系統模型、重用組件的能力、統一的安全模型和靈活的事務控制。基于組件的J2EE企業應用系統具有平臺獨立性,所以不受任何軟件產品和任何軟件廠家API的約束。
J2EE定義了下面的組件:
·application client 和 applets 是客戶層組件;
·Java Servlet 和 JSP 組件是WEB 層組件;
·Enterprise JavaBean(EJB) 組件是業務處理層組件。
EJB 技術是J2EE 體系一部分,EJB 組件是用 Java 語言編寫的,是可以被客戶端程序存取的可重用的服務器端組件,它運行在J2EE 服務器上,在客戶/服務器系統中,EJB 提供類似于中間件的服務。
J2EE 服務器提供應用系統系統級的服務,像事務管理、安全管理、數據庫存取等,開發人員不必自己開發系統級服務,所以可以集中精力開發應用系統中的業務邏輯處理;用EJB 組件處理業務邏輯。
二、EJB 組件簡介
EJB 組件分為兩類:Sesson bean 和 Entity bean
Sesson bean 代表 J2EE 服務器的客戶端,客戶端通過調用 Sesson bean 的功能和J2EE 服務器通信,Sesson bean 和客戶會話,可以認為是客戶端的擴展,例如:網上帳務系統的客戶可以調用 Sesson bean 的"輸入存款單"的功能來存入現金等。每一個Sesson bean 只能有一個客戶,當客戶終止時,與之相應的Sesson bean 也終止。因此Sesson bean 是暫時的,不可持久的。
Entity bean 代表業務處理對象,它存儲在持久的存貯機制如數據庫中,例如,一個Entity bean 代表一個帳戶存單,它是存儲在關系數據庫中存單表的一行。Entity bean 的信息不一定存儲在關系數據庫中,它也可以存儲在對象數據庫中、文件中或其他別的存儲機制中( 本例子中用關系數據庫)。
Entity bean 可以被多個客戶端共享。由于多個客戶端可能改變相同的數據,所以Entity bean 在事務管理下工作是很重要的。通常情況下,EJB 容器提供事務管理。開發人員可以在組件的部署描述文件中指定事務的屬性。每一個Entity bean 都有一個唯一的對象標識符,也叫主鍵,這個主鍵可以讓客戶端定位一個Entity bean。
Entity bean 的持久性可以被 Entity bean 自己管理,也可以讓 EJB 容器管理,Entity bean自己管理要求開發人員在Entity bean中提供數據存取代碼。例如客戶的Entity bean要調用 SQL 語句來通過 JDBC 存取關系數據庫。EJB 容器管理Entity bean持久性意味著 EJB容器自動處理數據存取的調用。
兩種類型的EJB 組件(Session bean 和 Entity beans)都可以存取數據庫。選擇哪一類 EJB 組件來存取數據庫依賴于具體的應用系統。
下面的情況可以在 Session bean 組件中調用 SQL 語句來存取數據庫:
· 應用系統相對簡單。
· SQL 語句返回的數據不能被多個客戶端共享使用。
· 數據不代表一個業務實體。
下面的情況要用Entity beans 組件:
· 超過一個客戶端使用數據庫調用返回的數據。
· 數據代表一個業務實體。
· 開發者想從 Sesson bean 中隱藏關系模型。
EJB 結構的這種靈活性可以讓開發人員用不同的方法來開發應用系統。
J2EE是 SUN 公司提出的在分布式環境中的一種體系結構,它提供了一種基于組件的設計、開發、集成、部署企業應用系統的方法,J2EE平臺提供了多層分布式的應用系統模型、重用組件的能力、統一的安全模型和靈活的事務控制。基于組件的J2EE企業應用系統具有平臺獨立性,所以不受任何軟件產品和任何軟件廠家API的約束。
J2EE定義了下面的組件:
·application client 和 applets 是客戶層組件;
·Java Servlet 和 JSP 組件是WEB 層組件;
·Enterprise JavaBean(EJB) 組件是業務處理層組件。
EJB 技術是J2EE 體系一部分,EJB 組件是用 Java 語言編寫的,是可以被客戶端程序存取的可重用的服務器端組件,它運行在J2EE 服務器上,在客戶/服務器系統中,EJB 提供類似于中間件的服務。
J2EE 服務器提供應用系統系統級的服務,像事務管理、安全管理、數據庫存取等,開發人員不必自己開發系統級服務,所以可以集中精力開發應用系統中的業務邏輯處理;用EJB 組件處理業務邏輯。
二、EJB 組件簡介
EJB 組件分為兩類:Sesson bean 和 Entity bean
Sesson bean 代表 J2EE 服務器的客戶端,客戶端通過調用 Sesson bean 的功能和J2EE 服務器通信,Sesson bean 和客戶會話,可以認為是客戶端的擴展,例如:網上帳務系統的客戶可以調用 Sesson bean 的"輸入存款單"的功能來存入現金等。每一個Sesson bean 只能有一個客戶,當客戶終止時,與之相應的Sesson bean 也終止。因此Sesson bean 是暫時的,不可持久的。
Entity bean 代表業務處理對象,它存儲在持久的存貯機制如數據庫中,例如,一個Entity bean 代表一個帳戶存單,它是存儲在關系數據庫中存單表的一行。Entity bean 的信息不一定存儲在關系數據庫中,它也可以存儲在對象數據庫中、文件中或其他別的存儲機制中( 本例子中用關系數據庫)。
Entity bean 可以被多個客戶端共享。由于多個客戶端可能改變相同的數據,所以Entity bean 在事務管理下工作是很重要的。通常情況下,EJB 容器提供事務管理。開發人員可以在組件的部署描述文件中指定事務的屬性。每一個Entity bean 都有一個唯一的對象標識符,也叫主鍵,這個主鍵可以讓客戶端定位一個Entity bean。
Entity bean 的持久性可以被 Entity bean 自己管理,也可以讓 EJB 容器管理,Entity bean自己管理要求開發人員在Entity bean中提供數據存取代碼。例如客戶的Entity bean要調用 SQL 語句來通過 JDBC 存取關系數據庫。EJB 容器管理Entity bean持久性意味著 EJB容器自動處理數據存取的調用。
兩種類型的EJB 組件(Session bean 和 Entity beans)都可以存取數據庫。選擇哪一類 EJB 組件來存取數據庫依賴于具體的應用系統。
下面的情況可以在 Session bean 組件中調用 SQL 語句來存取數據庫:
· 應用系統相對簡單。
· SQL 語句返回的數據不能被多個客戶端共享使用。
· 數據不代表一個業務實體。
下面的情況要用Entity beans 組件:
· 超過一個客戶端使用數據庫調用返回的數據。
· 數據代表一個業務實體。
· 開發者想從 Sesson bean 中隱藏關系模型。
EJB 結構的這種靈活性可以讓開發人員用不同的方法來開發應用系統。