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();
}