2011年3月10日 星期四

[初探JavaEE6] 使用Eclipse與GlassFish開發JEE6應用程式 (Part I -- JPA & EJB)

JavaEE 6標準已經完成一陣子了,現在JavaEE 7也開始起跑,只是這幾年來似乎JavaEE 6標準的提升似乎並沒有吸引了太多台灣開發人員的注目,畢竟之前J2EE 1.3、J2EE 1.4至JavaEE 5改版對於多數人的開發來說,差異性沒有太大 (EJB導入的比例太小也是其中原因之一),大部分的開發人員都傾向擁抱比較light-weight的開發framework與平台,導致Spring + Hibernate現在仍舊是主流技術。

為什麼我會突然開始關心起JavaEE 6呢?

實在是因為這次JavaEE 6所包裝的一些技術與標準讓我覺得 -- 也許JavaEE 6會是讓開發人員開始考慮回歸JavaEE 6標準主流的一個轉機。幾個吸引我的主題包括:模組化設計(Web Profile)的設計、CDI的引進、大量使用annotation開發、廢除EntityBean使用JPA以及JAX-RS Restful Service的標準。

我的想法是,試著開發出一個簡單的應用場景,看看使用JavaEE 6對開發人員是否有一些吸引力。我將場景設定為:使用EJB開發一個Business Object,其中應用JPA將資料庫中兩個table的一對多資料抓出;同時,為此EJB提供對外兩種介面:HttpServlet網頁的顯示與Restful Service應用程式查詢介面。

開發環境準備


這邊我所使用的開發工具與伺服器是Eclipse + GlassFish,如果你想要省事的話,可以到Oracle Enterprise Pack for Eclipse的網站下載最新版本的開發工具,其中已經將Eclipse與GlassFish Tools plug-in安裝預設安裝好。然後在這邊下載GlassFish 3.1版。
註:這篇不是Eclipse教學,我不會說明怎麼安裝Eclipse、設定Server...等,網路上已經有夠多的文件,有需要的人可以拜一下孤狗大神
另外,我選用Oracle資料庫做為資料儲存的地方,你可以用下列DDL產生兩個所開發需要的table:

CREATE TABLE MASTER (
MASTER_ID NUMBER(22 , 0) NOT NULL,
COL1 VARCHAR2(30),
COL2 VARCHAR2(30));
ALTER TABLE MASTER ADD CONSTRAINT PK_MASTER PRIMARY KEY (MASTER_ID);



CREATE TABLE DETAIL (
DETAIL_ID NUMBER(22 , 0) NOT NULL,
MASTER_ID NUMBER(22 , 0),
COL1 VARCHAR2(30));
ALTER TABLE DETAIL ADD CONSTRAINT PK_DETAIL PRIMARY KEY (DETAIL_ID);
ALTER TABLE DETAIL ADD CONSTRAINT FK_MASTER FOREIGN KEY (MASTER_ID) REFERENCES MASTER (MASTER_ID);