entity bean với khóa chính tự tăng

16
 Entity Bean vi khóa chính ttăng – identity trong EJB 3.0 User Rating: / 0 Top of Form Poor Best Bottom of Form Category: EJB Hits: 654 Entity Bean vi khóa chính ttăng – identity trong EJB 3.0 Mc đích: ni dung ca bài này hướng ti vic vn dng Entity Bean vi khóa chính ttăng sdng EJB 3.0 để thy skhác bit so vi CMP vi khóa chính ttăng trong EJB 2.1 Yêu cu  Nm vng các khái ni m vEntity Bean và CMP và các nguyên lý cơ bn vcài đặt CMP, CMP vi identity – khóa chính ttăng trong EJB 2.1  Nm vng cú pháp và kiến thc vOOP, đặc bit EJB QL Tools sdng đây là Netbeans 6.9.1 JDK 6 update 22 Server: JBoss 5.1.0 GA DBMS: SQL Server 2005 Trong phn ni dung này chúng tôi slàm ví dmô tdliu liên quan đến mt employee tương tnhư bài CMP trong EJB 2.1 để giúp chúng ta có ththy được skhác bit trong cơ chế cách cài đặt gia Entity Bean có khóa chính ttăng (identity) trong EJB 2.1 và EJB 3.0. Dliu mô tnhư sau

Upload: hoang-nguyen-dinh

Post on 06-Jul-2015

178 views

Category:

Documents


0 download

TRANSCRIPT

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 1/16

 

Entity Bean với khóa chính tự tăng – identity trong EJB 3.0

User Rating: / 0Top of Form

Poor BestBottom of Form

Category: EJBHits: 654

Entity Bean với khóa chính tự tăng – identity trong EJB 3.0Mục đích: nội dung của bài này hướng tới việc vận dụng Entity Bean với khóa chính tự tăng sửdụng EJB 3.0 để thấy sự khác biệt so với CMP với khóa chính tự tăng trong EJB 2.1

Yêu cầu•  Nắm vững các khái niệm về Entity Bean và CMP và các nguyên lý cơ bản về cài đặt

CMP, CMP với identity – khóa chính tự tăng trong EJB 2.1

•  Nắm vững cú pháp và kiến thức về OOP, đặc biệt EJB QL

• Tools sử dụng ở đây là Netbeans 6.9.1

• JDK 6 update 22

• Server: JBoss 5.1.0 GA

• DBMS: SQL Server 2005

Trong phần nội dung này chúng tôi sẽ làm ví dụ mô tả dữ liệu liên quan đến một employee tươngtự như bài CMP trong EJB 2.1 để giúp chúng ta có thể thấy được sự khác biệt trong cơ chế vàcách cài đặt giữa Entity Bean có khóa chính tự tăng (identity) trong EJB 2.1 và EJB 3.0. Dữ liệumô tả như sau

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 2/16

 

Ở bài này, chúng tôi sẽ thực hiện hai chức năng chính đó là tạo mới một employeeTrong phần tutorial này chúng tôi sẽ thực hiện nhóm cách động tương tự các bước trong bàitutorial CMR 1:1 trong EJB 2.1 và cài đặt Entity Bean trong EJB 3.0Bước 1: Đăng ký Datasource với Netbeans để Netbeans hỗ trợ chúng ta trong việc phát sinhdatasource (bước này có thể bỏ qua nếu bạn đã có datasource rồi) (Vui lòng xem chi tiết Bước 1trong tutorial CMR 1:1)

•  Nếu Datasource với DB mà có chứa các bảng mà chúng ta thao tác đã được đăng ký rồi,

○ Vào trong tab Services, mở rộng phần Database

Click phải chuột trên connection mà chúng ta cần làm việc, chọn Connect …

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 3/16

 

 

○ Chúng ta nhập username và password để kết nối DB, click OK 

 

• Lưu ý: Một Database Connection chỉ dùng cho một DB cụ thể, không thể áp dụng cho tất

cả các Database vì mỗi Database Connect có 1 chuỗi kết nối đến một DB cụ thểBước 2: Tạo Enterprise Application Project tương tự như bước 2 của tutorial trong CMR 1:1

• Tạo Project Enterprise Application có tên EntityBeanIdentity3

○ Chúng ta chọn Server là JBoss5.1.0 GA và version của Java EE là JavaEE5 bởi vìchúng ta đang tạo trên nền EJB 3.0

Lưu ý: Server JBoss 5.1.0 GA phải được add vào trong tab Services của Netbeans 6.9.1

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 4/16

 

 

○ Chúng ta sẽ có project trên NetBeans như sau

 

Bước 3: Tạo Entity Class tương tự như tạo Entity Class trong bài Entity Bean của EJB 3.0• Tạo Entity Class

○ Chúng ta tạo Datasource tương tự như CMR 1:1 và ở đây chúng ta đặt tênDatasource là EJB3Identity, tập tin jboss-ds.xml tại Server Resource sẽ được cậpnhật như hình bên dưới

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 5/16

 

 

○ Sau khi các bảng được lấy về, chúng ta chọn bảng cần phát sinh Entity Class (ở đây là bảng Registration) và nhấn nút Add >

 

○ Chúng ta click nút Next

 

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 6/16

 

 

○ Thành phần Entity Classes sẽ khác hoàn toàn so với EJB 2.1, ở đây phát sinh class sẽ phải dùng toán tử new khi sử dụng như Java Object bình thường

○ Đặt tên package cho code của chúng ta trong ô Package (ở đây tôi nhập sample.identity)

○ Tại đây chúng ta chọn “Create Persistence Unit”. Nội dung này sẽ tạo cho chúng ta tậptin mapping là persistence (tạo ra tập tin persistence.xml). Chúng ta sẽ thấy tập tin và cấutrúc của hình bên dưới khi hoàn tất toàn bộ quá trình tạo Entity Class

 

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 7/16

 

 

○ Chúng ta nhấn Next

 

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 8/16

 

 

○ Ở đây chúng ta sẽ chọn Collection Type có thể là Collection hay Set hay List, nhưng ở đây chúng tôi chọn loại Collection để tương thích với cách phát sinh của EJB 2.1

Bên cạnh đó, chúng ta phải check vào “Fully Qualified Database Table Names” và“Attributes for Regenerating Tables” để tool Netbean hỗ trợ chúng ta phát sinh code (cácthuộc tính của entity class và một số query object cơ bản)

○ Chúng ta nhấn nút Finish để hoàn tất quá trình tạo bean

○  Netbeans phát sinh và cập nhật project chúng ta với 01 java class được tạo ra như sau(không có bất kỳ interface nào cả)

Lưu ý: code phát sinh luôn luôn chứa đựng annotation thay cho việc mapping trựctiếp vào tập tin ejb-jar.xml như EJB 2.1 và container sẽ phát sinh code tương ứngkhi chạy và deploy

 

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 9/16

 

 

○ Chúng ta phải bổ sung annotation vào để đánh dấu field có khóa tự động tăng bằngannotation @GeneratedValue (của gói javax.persistence) dưới @Id và trên @Basic

 

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 10/16

 

○ Kết thúc bước này chúng ta đã tạo được bean và mapping nhưng chúng ta vẫn chưa sửdụng được chúng

 

Bước 4: Tạo Session Bean tương tự như bài Entity Bean trong EJB 3.0 để đưa ra bên ngoàicho client sử dụng có tên là IdentitySession

• Chúng ta thực hiện tạo các phương thức hàm để sử dụng các thành phần Entity Classes vàđưa một số chức năng cho người sử dụng qua Session Bean interface

○ Chúng ta thực hiện đưa Entity Manager vào để Session Bean có thể kết nối vớiEntity Class tương tự như bài Entity Bean trong EJB 3.0

• Phát sinh hàm insert để thực hiện insert dữ liệu xuống DB, thực hiện Insert Code, chọnAdd Business Method

• Hàm insert trả về kiểu boolean, hàm truyền 2 tham số String username, double salary(tương ứng với các field tương ứng dưới DB)

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 11/16

 

• Code của hàm insert được cập nhật như sau

Bước 5: Cấu hình thông tin để sử dụng và mapping bean, áp dụng tương tự như tutorial CMR 1:1

• Mapping bean để khi deploy server có thể quản lý và đưa ra tên để chúng ta kết nối tớikhi sử dụng trong tập tin jboss.xml như hình vẽ bên dưới

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 12/16

 

• Lưu ý

○ Tên tag ejb-name phải được mapping chính là tên tập tin Session Bean class (cụthể IdentitySession – tên class IdentitySession.java)

○ Tên jndi là do chúng ta đặt, tên này chúng ta sẽ dùng truy cập bean

○ Ở đây chúng ta dùng tag local-jndi-name vì các cmp được phát sinh chỉ có Localvà Local Home Interface

• Chúng ta hoàn tất xong việc mapping bean

• Chúng ta không thực hiện mapping DB và đồng bộ giữa instance object và DB thông qua

tập tin jbosscmp-jdbc.xml vì tất cả các khai báo trong Entity class đã được khai báo thôngqua annotation trong Entity class (chúng ta đã thấy code và annotation phát sinh trong tậptin

• Kết thúc bước này chúng ta hoàn tất việc cấu hình cho bean

Bước 6: Tạo giao diện web để sử dụng chức năng insert

• Chúng ta chuyển sang gói EntityBeanIdentity3 -war, chỉnh sửa giao diện tập tin index.jspnhư sau

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 13/16

 

• Phát sinh Controller để sử dụng như sau

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 14/16

 

• Thực hiện Build Project, Start Server, Deploy để testing thư

○ Deploy đến Server: deploy tập tin jboss-ds.xml tại thư mục<Thư mục lưu trữ project>\ EntityBeanIdentity3 \ EntityBeanIdentity3-ejb\setup\đến JBOSS_HOME\server\default\deploy (Lưu ý: server của chúngta bây giờ là JBoss 5.1.0 GA). Chúng ta thấy server có kết quả y như tên chúngta thấy trong tập tin persistence.xml

 

○ Deploy tập tin ear vào trong thư mục deploy như trên, ta thấy trên server 

 

Lưu ý:

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 15/16

 

• Cách deploy của EJB 3.0 này nhiều hơn so với EJB 2.1 và Hibernate sẽ phảideploy tất các các thành phần liên quan đến query và các thành phần của EntityClass, do vậy, việc deploy hơn chậm một chút. Tới khi nào chúng ta thấy đượchình như trên là việc deploy thành công

• Chúng ta cứ chờ cho việc deploy hoàn tất, không nên vội vã, bất cứ hành động

nhanh nhẩu nào sẽ gây lỗi cho code phát sinh 

• Thực hiện testing, chọn tab Services, chọn Servers, chọn Web Application, chọn tênProject có gói war 

Trong EJB 3 và Server JBoss 5.1.0 GA, server đã tách biệt gói jar và gói war, vàkhông thể hiện gói jar trong EJB Module lẫn Enterprise Application

• Click chuột phải, chọn, Open in Browser 

• Kết quả testing demo như sau

DB trước khi Insert

 

Kết quả nhập liệu testing

 

5/7/2018 Entity Bean vơi khóa chính tư tăng - slidepdf.com

http://slidepdf.com/reader/full/entity-bean-voi-khoa-chinh-tu-tang 16/16

 

• Chúng ta đã hoàn tất được chức năng insert

Chúc mừng các bạn, chúng ta đã hoàn tất xong việc cài đặt Entity Bean với khóa chính tự tăng – identity trên EJB 3.0 (bạn phải nắm bắt được khái niệm trong bài khái niệm Entity Bean vàCMP với khóa chính tự tăng trong mô hình EJB 2.1) . Rất mong bài viết sẽ giúp ích cho bạntrong việc sử dụng và làm quen đến các khái niệm của EJB 3.0, đặc biệt ở đây là mở rộng kháiniệm về Entity ClassRất mong sự góp ý chân thành của các bạn và hẹn các bạn trong bài tiếp theo