Tải bản đầy đủ (.ppt) (55 trang)

EJB 3.x và JavaEE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (443.68 KB, 55 trang )


EJB 3.x và JavaEE
EJB 3.x và JavaEE


Khoa Mạng máy tính và Truyền thông
Khoa Mạng máy tính và Truyền thông
Đại học Công nghệ Thông tin
Đại học Công nghệ Thông tin
Enterprise JavaBean
Enterprise JavaBean 2

Nội dung
Nội dung

Kiến trúc ứng dụng đa lớp

JavaEE

EJB

Session

Message-Driven

Entity (JPA)

Business Interface

EJB JAR file


Chu kỳ sống của EJB

JavaEE Application
JavaEE Application
Enterprise JavaBean 4

Kiến trúc ứng dụng đa lớp
Kiến trúc ứng dụng đa lớp
Enterprise JavaBean 5

JavaEE application workflow
JavaEE application workflow

Enterprise JavaBean
Enterprise JavaBean
Enterprise JavaBean 7

EJB?
EJB?

Server-side component -- cài đặt business logic
cho ứng dụng

Thực thi trong EJB container -- môi trường thực
thi ở Application Server

EJB container hỗ trợ transaction và security cho
các EJB

Version: 3.x

Enterprise JavaBean 8

EJB Container trong JavaEE
EJB Container trong JavaEE
Enterprise JavaBean 9

Ưu điểm
Ưu điểm

Lập trình viên chỉ quan tâm đến việc cài đặt
business logic cho ứng dụng; vấn đề transaction
và security được EJB container hỗ trợ

Client module chỉ quan tâm đến việc trình bày
dữ liệu; EJB đảm nhiệm thực thi business logic

EJB: portable component
Enterprise JavaBean 10

Mục đích sử dụng
Mục đích sử dụng

Ứng dụng có tính ổn định cao

Số lượng người dùng

Phân tán component

EJB transparent đối với người dùng


Đảm bảo tính toàn vẹn dữ liệu với transaction

Ứng dụng có nhiều loại client khác nhau: web
application, desktop application ...
Enterprise JavaBean 11

Phân loại EJB
Phân loại EJB

Sesion: Thực thi một tác vụ theo yêu cầu của
client

Message-Driven: Hoạt động như là một bộ lắng
nghe các JMS API, xử lý các thông điệp theo
cơ chế bất đồng bộ

Entity: Đại diện cho một thực thể tồn tại trong
hệ thống lưu trữ (CSDL) -- khái niệm cũ trong
J2EE platform
Enterprise JavaBean 12

EJB trong JavaEE
EJB trong JavaEE

Trong EJB 3, session bean và message-driven
bean là các Java class thông thường với các
annotation

@Stateless


@Stateful

@MessageDriven

Entity EJB 2.x vẫn được hỗ trợ

Entity Bean có thể được phát triển theo hướng
khác

@Entity được áp dụng cho JPA entity nhằm cung cấp
các tính năng mới

Session Bean
Session Bean
Enterprise JavaBean 14

Session Bean
Session Bean

Đại diện cho một client ở phía application server

Cung cấp các phương thức business logic phục
vụ các client

Không chia sẻ: tương tự như một phiên làm việc
tương tác

Không hỗ trợ lưu trữ dữ liệu vào các hệ thống
lưu trữ


Bị hủy khi client kết thúc phiên làm việc
Enterprise JavaBean 15

Session Bean
Session Bean

Stateless

Không duy trì trạng thái giao dịch với client: phục vụ
client gọi thực thi các phương thức xử lý đơn lẻ

Hỗ trợ tốt đối với các ứng dụng với số lượng người
dùng lớn

Stateful

Các thuộc tính của lớp (EJB) biểu diễn trạng thái của
một phiên làm việc duy nhất giữa client và bean

Duy trì trạng thái giao dịch với client thông qua các
thuộc tính của bean trong suốt quá trình làm việc
giữa client và bean

Khi client kết thúc phiên làm việc với bean, thông tin
về trạng thái giao dịch sẽ bị hủy
Enterprise JavaBean 16

Mục đích sử dụng
Mục đích sử dụng


Một client truy xuất đến một đối tượng bean

Trạng thái giao dịch không được lưu trữ lại vì chỉ
tồn tại trong một khoảng thời gian ngắn.

Khi cần cài đặt một web service
Enterprise JavaBean 17

Stateful Bean: Mục đích sử dụng
Stateful Bean: Mục đích sử dụng

Stateful

Trạng thái của bean biểu diễn quá trình tương tác
giữa bean và một client cụ thể

Cần duy trì trạng thái của giao dịch trong quá trình
client gọi thực thi các phương thức của bean

Bean đóng vai trò giao tiếp trung gian giữa client và
các component khác của ứng dụng. Bean điều phối
luồng xử lý truy xuất đến nhiều bean khác.
Enterprise JavaBean 18

Stateless Bean: Mục đích sử dụng
Stateless Bean: Mục đích sử dụng

Stateless

Bean không cần lưu trữ bất kỳ thông tin nào liên quan

đến giao dịch với client

Trong một lời gọi phương thức, bean thực thi một
business logic chung cho tất cả mọi client

Bean có thể truy vấn dữ liệu (read-only mode) cho
client sử dụng

Entity với JPA
Entity với JPA
Enterprise JavaBean 20

Entity (Bean) 3.x
Entity (Bean) 3.x

Một Entity đại diện cho một table trong CSDL
quan hệ, chẳng hạn như customer, order,
product

Mỗi entity instance biểu diễn một dòng dữ liệu
trong table đó

Thông tin trạng thái lưu trữ trong một entity
được biểu diễn bằng tập các thuộc tính
persistent.
Enterprise JavaBean 21

Cài đặt
Cài đặt


Class phải được chú dẫn bằng javax.persistence.Entity

Class phải chứa một phương thức khởi tạo mặc định
public hoặc protected

Class không final và không phương thức hoặc thuộc tính
nào final

Nếu một entity instance được sử dụng để truyền tham trị
(detached object), entity class phải thi công interface
Serializable

Các thuộc tính phải có phạm vi truy xuất private,
protected hoặc default, và chỉ được truy xuất trực tiếp bởi
các phương thức của bean

Nếu một thuộc tính transient hoặc được chú dẫn
@Transient (javax.persistence.Transient) sẽ không được
ánh xạ với dữ liệu trong CSDL
Enterprise JavaBean 22

Quản lý các entity
Quản lý các entity

Các entity được quản lý bởi entity manager
(javax.persistence.EntityManager)

Mỗi entity manager gắn kết với một persistence
context cụ thể


Persistence context

Định nghĩa phạm vi các entity được tạo ra, lưu trữ và
xóa bỏ

Chứa một tập các entity instance trong một hệ thống
lưu trữ (CSDL) cụ thể
Enterprise JavaBean 23

Quản lý các entity
Quản lý các entity

Entity Manager

Container-managed Entity manager
@PersistenceContext
EntityManager em;

Application-managed Entity manager
@PersistenceUnit
EntityManagerFactory emf;

EntityManager em = emf.createEntityManager();
Enterprise JavaBean 24

Sử dụng Entity Manager
Sử dụng Entity Manager

find()


persist()

remove()

merge()

refresh()

createQuery()
Enterprise JavaBean 25

createQuery()
createQuery()
public List findWithName(String name) {
return em.createQuery(
"SELECT c FROM Customer c
WHERE c.name
LIKE :custName")
.setParameter("custName", name)
.getResultList();
}

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×