My Calendar

2014年10月30日 星期四

EJB - Bean Types

EJB - Bean Types

根據上一篇EJB-簡介所提到,EJB根據beans的功用分成三大類分別是session beans, message-driven beansentities

Session Beans
Session bean是為了執行特定商業操作而被client調用,如檢查客戶信用historySession這個名字意味著bean實例存在時間是“每個工作單位”和當伺服器shutdowncrash的時候就會消失。Session bean可以將任何應用程式邏輯模組化。Session bean有兩類分別為: statefulstateless
           Stateful session bean當客戶調用的時候在不需要寫任何多餘的程式碼的狀況下可以自動儲存bean的狀態。比較典型的例子就是網頁商城裡的購物車系統。相反,stateless session bean 不會維護任何狀態和模組應用程式服務。我們可以實作商業流程如信用卡付費或檢查查客戶信用記錄而建立stateless session bean.
           一個session beans不管在本地或遠端都可以透過Java RMI被調用。一個stateless session bean可以公開為網頁服務。

Message-driven Beans
MDBs 就像session beans,都是處理商業邏輯。但MDBs最大的不同是clients永遠不會直接調用MDB method。相反MDBs是透過訊息驅動然後傳給messaging server, 就是在系統元件之間啟動傳送非同步訊息。Messaging servers的典型例子有IBM WebSphere MQSonicMQ Oracle Advance Queueing, TIBCOMDBs通常是使用在系統整合或非同步處理的健全性。上。Messaging的一個例子,從自動零售系統傳送庫存補貨的需求到供應鏈管理系統。

Entities and the Java Persistence API
EJB 3當中其中一個新特色就是處理persistence的方法。之前我們概略的提到persistence 提供者和JPA,現在讓我們更深入到細節。 
         Persistence的能力是將Java objects中包含的data自動儲存到關聯式資料庫像Oracle, SQL Server, DB2Persistence 在 EJB 3是透過JPA管理。它自動的使用Object-relational mapping(ORM)這項技術persists Java objectsORM的本質是透過設定檔在java objects處理mapping data然後儲存到資料表中。它緩解我們寫底層,複雜的JDBC程式碼persist objects到資料庫的工作。
           EJB 3中,persistence provider基本上就是Java Persistence API (JPA)所支援的ORM框架。JPA定義了一些標準:
  •  ORM設定metadata的建立mapping entities relational tables.
  •  EntityManager API – 是一個標準的APIentities執行CRUD persistence operations.
  •  Java Persistence Query Language (JPQL),是用來搜尋和獲取persisted application data.
自從為了Java平台JPA ORM frameworks標準化,我們可以在應用程式plug in ORM 產品如 JBOSS Hibernate,OracleTopLink,或BEA Kodo 做為JPApersistence provider”的底層。

Entities
如果在我們的應用程式採用JPA建立persistence logic,那就必須使用entities. EntitiesJava objects用來persisted到資料庫。就像session beansprocess模組化,entities將低階應用概念包裝成高階商業流程管理。

The EntityManager
JPA EntityManager介面管理entities和提供persistence 服務。Entities會告訴JPA provider如何map資料庫。EntityManager 介面讀取ORM metadataentity和執行persistence. EntityManager知道如何對entities在資料庫中執行CRUDCREATE, RETRIEVE, UPDATE, DELETE)。另外JPA 提供處理lifecycle managementperformance tuningcachingtransaction management的能力。

Java Persistence Query Language
JPA 有提供一個類似SQL的語言稱為Java Persistence Query Language (JPQL) 可以搜尋儲存在資料庫中的entities. 在一個健全和彈性的APIJPQL,我們在選擇自動persistence而不是手寫JDBC是不會遺失任何東西。另外,JPA支援native database-specific SQL, 在一些罕有的案件是這是值得使用。
         在這時候,我們應該對EJB各個部分都有部分的認識。我們也知道需要透過EJB container去執行session beansMDBs persistence provider執行entities,那這些元件都能存取EJB 3所提供的服務。

Reference:

1)EJB 3 in action

沒有留言:

張貼留言