Breaking

28 tháng 6, 2021

tháng 6 28, 2021

 


Session Bean

3.1 Giới thiệu

- EJB là các thành phần phía máy chủ được lưu trữ trên các máy chủ ứng dụng hỗ trợ Java. Chúng được phát triển như một phần của các ứng dụng doanh nghiệp để hỗ trợ cung cấp giải pháp cho các yêu cầu phức tạp của doanh nghiệp. Thông thường, EJB’s được đặt ở lớp giữa của ứng dụng và được truy cập bởi các loại máy khách khác nhau như Servlet hoặc dịch vụ Web.

- Nền tảng Java EE hỗ trợ các loại thành phần EJB khác nhau dựa trên chức năng và sự tích hợp với các thành phần khác trong ứng dụng. Enterprise JavaBeans được phân loại thành nhiều loại phát triển bean khác nhau. Chúng là session bean và bean hướng thông điệp.

- Các session besan đại diện cho các quy trình nghiệp vụ được sử dụng để xử lý các lôgic nghiệp vụ cho ứng dụng. Một logic nghiệp vụ có thể thực hiện phép cộng trên hai số, kết nối với cơ sở dữ liệu, thực hiện giao dịch trên tài khoản ngân hàng hoặc gọi các session bean khác hoặc bean theo hướng tin nhắn.

3.1.1 Session Bean

- Các session bean là các thành phần Java có thể sử dụng lại đóng gói logic nghiệp vụ của một ứng dụng doanh nghiệp. Chúng thực thi ở phía máy chủ trong vùng chứa EJB. Chúng được triển khai trên các máy chủ ứng dụng hỗ trợ Java và cung cấp các dịch vụ cho khách hàng của họ có thể truy cập chúng theo chương trình.

- Các đối tượng của session bean có tính chất đàm thoại. Một cuộc hội thoại là một tương tác giữa bean và khách hàng và nó bao gồm một số lệnh gọi phương thức giữa chúng. Ví dụ, Cookie có thể được sử dụng để duy trì dữ liệu máy khách trong các ứng dụng Web. Tương tự như vậy, Session bean có thể giữ trạng thái của máy khách trong quá trình gọi phương thức.

- Có thể có nhiều loại client khác nhau đối với một Session bean. Những client này có thể truy cập session từ xa hoặc cục bộ.

+ Remore client - Nó có thể là một ứng dụng Java độc lập, một dịch vụ Web hoặc các Session bean khác đang thực thi như một phần của ứng dụng doanh nghiệp trong JVM khác nhau.

+ Local client - Nó có thể là các thành phần nằm trong cùng một ứng dụng doanh nghiệp. Nó có thể là một Session khác hoặc một Servlet thành phần Web.

- Các thành phần của session bean thực hiện interface javax.ejb.SessionBean Chúng không liên tục qua các lỗi hệ thống.

 


Các quan điểm khác nhau về session bean

-  Trong hình ảnh, kiến ​​trúc sư ứng dụng xem các Session bean như việc triển khai logic nghiệp vụ, các Session bean ở đây được truy cập bởi nhiều máy khách. Kiến trúc sư thiết kế logic kinh doanh theo yêu cầu của khách hàng. Quan điểm của nhà phát triển của Session bean là triển khai các lớp Java. Các lớp Java này thực hiện chức năng ứng dụng.

- Quan điểm ứng dụng máy khách của Session bean là phần mở rộng của máy chủ ứng dụng. máy khách truy cập các dịch vụ được cung cấp bởi máy chủ ứng dụng thông qua các bean. máy khách truy cập Phiên thông qua giao diện kinh doanh do các nhà phát triển cung cấp.

-Quan điểm ứng dụng máy khách của Session bean là phần mở rộng của máy chủ ứng dụng. Máy khách truy cập các dịch vụ được cung cấp bởi máy chủ ứng dụng thông qua các bean. Máy khách truy cập Phiên thông qua giao diện kinh doanh do các nhà phát triển cung cấp.

3.1.2 các loại session bean

- Sự khác biệt chính giữa Session bean và JavaBeans là thời gian tồn tại của Session bean. Một phiên bản của Session bean thực hiện một nhiệm vụ thay mặt cho máy khách. Nói cách khác, nó đại diện cho máy khách ở phía máy chủ và hoạt động như một phần mở rộng của máy khách trên máy chủ. Một phiên bản của Session bean còn tồn tại miễn là máy khách có mặt. Do đó, thời gian tồn tại của một Session bean tương đương với thời gian tồn tại của một ứng dụng khách. nó duy trì trạng thái hội thoại cho khách hàng. Hội thoại có thể được định nghĩa là khoảng thời gian giữa máy khách truy cập vào một phiên bản Session bean và máy khách gọi phương thức từ xa trên phiên bản đó.

- Sau đây là hai khía cạnh chính của thời gian tồn tại của Session bean:

+ Nhiều máy khách không thể chia sẻ các phiên bản của Session bean. Thời lượng của một session giảm tùy theo khoảng thời gian mà cá thể bean đã được sử dụng.

+ Vòng đời thể hiện của Session bean được kiểm soát bởi container và thể hiện của Session bean bị vùng chứa loại bỏ khi hết thời gian chờ xảy ra hoặc bean bị phá hủy rõ ràng.

- Trạng thái của các phiên bản của Session bean không thể được lưu trong cơ sở dữ liệu hoặc hệ thống tệp. Do đó, Session bean không liên tục, nhưng chúng có thể thực hiện các hoạt động cơ sở dữ liệu.

- Dựa trên thời gian tồn tại của Session bean, có ba biến thể của Session bean:

+ Stateless Session Bean - Như tên gợi ý, stateless session bean không duy trì trạng thái máy khách trên máy chủ trong quá trình hội thoại. Điều này có nghĩa là nó không lưu trữ giá trị của các biến cá thể được liên kết với cuộc hội thoại của khách hàng. Bất cứ khi nào một phương thức của stateless session bean được gọi, nó sẽ sử dụng các biến thể hiện của bean, nhưng giá trị của các biến này chỉ được giữ lại trong thời gian gọi phương thức. Sau khi phương thức được hoàn thành, các giá trị không được giữ lại, tức là chúng sẽ bị vùng cha xóa.

+ Một số tình huống không yêu cầu phải duy trì đập của máy khách và phù hợp cho việc phát triển phiên không trạng thái (Stateless Session bean), chúng như sau:

* SalaryCalculator

* MoneyConverter

* CardVerification

+ Stateful Session bean - Stateful session bean duy trì trạng thái của các máy khách trên máy chủ. Điều này có nghĩa là chúng lưu trữ thông tin thu được từ máy khách cụ thể giữa các lần gọi phương thức. Nói cách khác, các stateful bean session có trách nhiệm duy trì trạng thái máy khách qua các cuộc hội thoại phương thức khác nhau.

+ Một số trường hợp cần thiết phải lưu trữ thông tin của khách hàng để duy trì danh tính của nó và phù hợp với stateful bean session, chúng như sau:

* Shopping Cart

* Online banking

* Product order processing system

+ Singleton Session bean -  Singleton session bean tương tự như hạt Stateless Session. Tuy nhiên, chúng được khởi tạo một lần cho toàn bộ ứng dụng. Chúng được truy cập đồng thời. Bởi nhiều máy khách và chúng tương tự như các Stateless Session Bean.

+ Phiên bản duy nhất của singleton session bean được chia sẻ bởi tất cả các máy khách. Một số trường hợp trong đó Singleton Session bean có thể được sử dụng để thực hiện các tác vụ khởi tạo và dọn dẹp của ứng dụng khi nó tắt.

3.1.3 Đặc điểm của session bean

- Một Session bean thực thi logic nghiệp vụ trên máy chủ, ẩn sự phức tạp khỏi máy khách truy cập nó. Bất kể loại session bean nào được phát triển trong ứng dụng doanh nghiệp, chúng đều có các đặc điểm sau:

+ Session bean là đối tượng tồn tại trong thời gian ngắn. Điều này có nghĩa là Session beankhông thể tồn tại khi máy chủ ứng dụng gặp sự cố.

+ Một session bean được liên kết với một máy khách và không thể được chia sẻ bởi nhiều máy khách.

+ Session bean được quản lý bởi container. Điều này có nghĩa là quá trình thực thi của Session bean được kiểm soát bởi container.

+ Các session bean được thực thi bởi mã máy khách và đại diện cho trạng thái giao tiếp giữa máy khách và bean.

+ Các session bean được khởi tạo và quản lý bởi EJB container.

+ Session bean hỗ trợ giao tiếp đồng bộ và không đồng bộ. Điều này có nghĩa là chúng có thể được gọi đồng bộ hoặc không đồng bộ bởi các máy khách.

+ Các session bean là các bean không bền, có nghĩa là chúng không thể được sử dụng để biểu diễn dữ liệu trong cơ sở dữ liệu.

+ Session bean có thể thực hiện các ranh giới giao dịch và cơ chế bảo mật.

- Session bean được sử dụng trong ứng dụng khi bất kỳ điều kiện nào sau đây đều hoạt động tốt:

+ Khi ứng dụng phải giữ lại trạng thái qua nhiều lần gọi phương thức.

+ Khi có yêu cầu giao tiếp giữa máy khách và các thành phần khác của ứng dụng.

3.2.1 Phương thức gọi lại cho Stateless Session Bean

- Các phương thức gọi lại là các phương thức được container sử dụng để quản lý vòng đời của một Session bean. Các phương thức này có tiền tố là chú thích gọi lại.

- Các stateless session bean có hai loại phương thức gọi lại, phương thức PostConstruct và PreDestroy. Các phương thức này có tiền tố là các chú thích @PostConStruct và @PreDestroy tương ứng.

- Các phương thức PostConstruct triển khai chức năng hoặc nhiệm vụ sẽ thực thi ngay sau khi Session bean được khởi tạo, chẳng hạn như khởi tạo các biến, v.v.

- Các phương thức PreDestroy triển khai chức năng hoặc nhiệm vụ sẽ thực thi trước khi Session bean bị xóa khỏi container, chẳng hạn như giải phóng tất cả các tài nguyên được giữ bởi Session bean, v.v.

- Các phương thức này không trả về bất kỳ giá trị nào; do đó kiểu trả về là void.

3.2.2 Vòng đời của Stateless Session Bean

- Stateless session bean được duy trì dưới dạng. Một nhóm bean trong container. Bất cứ khi nào nhận được yêu cầu của khách hàng, container sẽ chỉ định được từ pool để phục vụ yêu cầu. Sau khi phiên hoàn tất, bean sẽ được trả về nhóm đậu được duy trì bởi thùng chứa.

1. lnstantiated - Trong giai đoạn này, Session bean được khởi tạo và thêm vào bean pool.

2. Remove- Trong giai đoạn này, cá thể của bean trong bị phá hủy và bị loại bỏ khỏi container.

 


Vòng đời của Stateless session bean

- Máy chủ ứng dụng ban đầu không có bất kỳ session bean nào trong container. Sau đó, một bean được cho là ở trạng thái 'Không tồn tại'. Bất cứ khi nào có yêu cầu của khách hàng đối với session, container sẽ khởi tạo bean Phiên. Tuy nhiên, container cũng có thể khởi tạo các session bean ngay cả khi không có yêu cầu của khách hàng nào đối với session, việc khởi tạo như vậy xảy ra trong quá trình khởi động ứng dụng.

- Container tạo ra một thể hiện của Session bean thông qua phương thức newInstance (). Sau khi khởi tạo, các phụ thuộc bean được khai báo thông qua các chú thích và bộ mô tả triển khai được đưa vào bean.

- Gọi một phương thức gọi lại cấu trúc bài đăng là tùy chọn. Chức năng của một phương thức gọi lại cấu trúc đăng là thực hiện các hoạt động khởi tạo bổ sung sau khi stateless session bean được khởi tạo. Các phương thức này được gọi bởi vùng chứa không phải ứng dụng khách. Khi một khách hàng gọi một đã được, khách hàng nhận được từ nhóm và trả về nhóm session bean.

- Sau khi khởi tạo, tất cả các Session bean được đặt trong nhóm Method-Ready. Các session bean trong nhóm này sẵn sàng nhận các yêu cầu từ khách hàng và phản hồi tương ứng.

- Khi một container phải xóa Session bean container, nó có thể phải thực hiện các phương thức gọi lại hủy trước. Các phương thức này chịu trách nhiệm thực hiện các tác vụ dọn dẹp cho bean, chẳng hạn như chuyển trạng thái của máy khách cho một session khác, dealIocating tất cả các tài nguyên được sử dụng bởi bean, v.v. Tùy chọn có một phương thức hủy trước cho Session bean.

3.2.3 Chú thích trong Stateless Session Beans

- Chú thích là siêu dữ liệu được container sử dụng trong quá trình triển khai ứng dụng. Họ cung cấp các chỉ thị liên quan đến cấu hình ứng dụng.

- Một Stateless Session Beans có thể được tạo bằng cách chú thích lớp Java cụ thể với chú thích @Stateless

- Các interface của Session bean có thể được chú thích bằng chú thích @Local và @Remote. Interface cục bộ được chú thích bằng @Local và interface từ xa được chú thích bằng @Remote.

- Một stateless session bean có thể có các phương thức gọi lại được liên kết với các sự kiện vòng đời của chúng. Các phương thức gọi lại có thể được chú thích bằng chú thích @PostConstruct, @ PreDestroy.

3.3 Phát triển Beans phiên không trạng thái

Khi một nhà phát triển dự định tạo một bean Phiên không trạng thái, họ phải tạo các thành phần sau:

Bean class

Business interface

Lớp Bean đề cập đến việc triển khai lớp Java của logic nghiệp vụ được mong đợi từ bean. Nó có một tập hợp các biến cá thể và các phương thức được xác định để hoàn thành nhiệm vụ mong đợi

Giao diện nghiệp vụ đề cập đến tập hợp các phương thức được hiển thị cho máy khách mà thông qua đó máy khách có thể truy cập vào Session bean. Việc tạo giao diện nghiệp vụ là không bắt buộc đối với việc tạo các Session bean; chúng cũng có thể được truy cập thông qua chế độ xem không giao diện

Một số quy tắc cần tuân thủ khi phát triển bean phiên không trạng thái:

Cần có ít nhất một giao diện nghiệp vụ cho Session bean

Lớp bean phiên không thể được khai báo là cuối cùng hoặc trừu tượng vì vùng chứa cần thao tác với lớp

Lớp session bean nên triển khai một hàm tạo không đối số vì hàm tạo này được gọi khi một thể hiện của Session bean được tạo

Lớp bean phiên có thể là một lớp con của một Session bean khác hoặc một lớp POJO

Các phương thức gọi lại nghiệp vụ và vòng đời được định nghĩa trong lớp Session bean hoặc lớp cha

Tên phương thức nghiệp vụ hiện diện trong giao diện nghiệp vụ và trong lớp bean phiên không được bắt đầu bằng ejb.

Các phương thức nghiệp vụ phải được khai báo là công khai và không thể được khai báo là cuối cùng hoặc tĩnh

Để tạo bean phiên không trạng thái trong NetBeans IDE, hãy thực hiện các bước sau:

Mở NetBeans IDE.


Select File → New Project mới để tạo một ứng dụng doanh nghiệp. Chọn Dự án Mới từ menu Tệp, nó sẽ dẫn bạn đến màn hình hiển thị trong hình

 

Hình 3.4: Tạo ứng dụng doanh nghiệp


Chọn các tùy chọn thích hợp như trong hình 3.4 để tạo một ứng dụng doanh nghiệp.

Chọn Java EE → Enterprise Application trong màn hình này

Màn hình sau sẽ nhắc nhà phát triển về tên ứng dụng doanh nghiệp, hãy chọn tên thích hợp và nhấp vào Tiếp theo. Nó sẽ dẫn đến màn hình như trong hình 3.5.


 

Hình 3.5: Chọn Máy chủ Ứng dụng

Trong màn hình hiển thị trong hình 3.5, nhà phát triển phải chọn máy chủ ứng dụng mà ứng dụng sẽ được triển khai. Nếu có nhiều phiên bản Java EE, thì nhà phát triển phải chọn phiên bản mà nhà phát triển dự định sử dụng cho ứng dụng

Ngoài ra, hãy chọn mô-đun của ứng dụng sẽ được tạo. Theo mặc định, IDE tạo một mô-đun EJB và mô-đun Web. Ở đây chỉ tập trung vào mô-đun EJB.

Sau khi dự án được tạo, nó sẽ xuất hiện trong cửa sổ dự án như trong hình 3.6.

 

Hình 3.6: Ứng dụng Doanh nghiệp trong NetBeans IDE

Hình 3.6 cho thấy ứng dụng doanh nghiệp Module3 'và mô-đun EJB tương ứng của nó. Bây giờ Tạo một bean phiên không trạng thái trong mô-đun EJB cho ứng dụng.

Tạo phiên bean ngay bây giờ. Chọn mô-đun EJB và chọn Tệp Mới từ menu Tệp. Nó dẫn đến màn hình hiển thị trong hình 3.7.


Chọn Enterprise JavaBeans → Session Bean trong màn hình hiện tại và nhấp vào Tiếp theo. Điều này sẽ dẫn đến màn hình hiển thị trong hình 3.8

Lựa chọn các tùy chọn của Phiên không trạng thái đang sử dụng trình hướng dẫn được hiển thị trong hình 3.8.

Hình 3.8: Lựa chọn các tùy chọn để tạo bean phiên không trạng thái

Trong hình 3.8, chọn các tùy chọn cho bean Phiên không trạng thái. Đầu tiên, hãy cung cấp tên của hạt đậu và gói chứa hạt đậu đó. Một thực tiễn tốt là lưu trữ các hạt đậu trong các thư mục khác nhau tùy theo chức năng của chúng

Chọn loại Session bean đang được tạo. Ở đây, một bean phiên không trạng thái được tạo với giao diện từ xa để truy cập nó. Khi giao diện từ xa được chọn, ứng dụng sẽ nhắc về một dự án phù hợp để lưu trữ giao diện từ xa. Do đó, trước tiên hãy tạo một giao diện từ xa.


3.3.1 Tạo giao diện từ xa Giao diện từ xa

Giao diện từ xa là tập hợp các phương thức mà qua đó Session bean có thể được truy cập từ xa. Sau đây là các bước cần làm để tạo giao diện từ xa:

Để tạo giao diện từ xa, hãy tạo một dự án Thư viện Lớp Java mới trong IDE NetBeans bằng cách nhấp vào Tệp Dự án Mới Java Thư viện Lớp Java Java từ hộp thoại Dự án Mới như thể hiện trong hình 3.9.

 

Hình 3.9: Tạo giao diện từ xa

Bây giờ hoàn tất quá trình tạo bean bằng cách chọn các tùy chọn như trong hình 3.10.

 

Hình 3.10: Chọn giao diện từ xa cho Session Bean

Khi tạo session bean với giao diện từ xa, các thư mục được tạo như trong hình 3.11 trong NetBeans IDE.

 

Hình 3.11: Cấu trúc thư mục của mô-đun.3

3.3.2 Tạo phương thức kinh doanh

Sau đây là các bước cần thực hiện để tạo các phương thức kinh doanh trong session bean

Bấm đúp vào tệp bean, AdditionBean.java sẽ mở trong trình chỉnh sửa mã và thêm mã triển khai bean vào đó. Trong trình chỉnh sửa, nhấp chuột phải vào khu vực nơi doanh nghiệp

ods được xác định và nó sẽ bật ra một menu như trong hình 3.12

               Hình 3.12: Chèn mã vào Session Bean

Chọn tùy chọn Chèn mã trong menu. Nó sẽ dẫn đến một menu khác như trong hình 3.13

Hình 3.13: Thêm phương thức kinh doanh

Chọn tùy chọn Thêm Phương thức Kinh doanh từ menu. Nó sẽ dẫn đến một màn hình hiển thị trong hình 3.14.

                                        Hình 3.14: Tạo phương thức kinh doanh

Chọn các đặc điểm của phương thức bean, Theo định nghĩa trong hình 3.14, một phương thức nghiệp vụ có tên là 'add' đang được tạo có kiểu trả về là 'int'. Có hai tham số đầu vào của phương thức, a và b kiểu 'int'. Xác định các đặc điểm này và bấm OK

Thao tác này sẽ tạo mã trong các dasses AdditionBean và AdditionBeanRemote như thể hiện trong hình 3.15 và 3.16 tương ứng.

Hình 3.15: Gói AdditionBean Class Beans

 

Hình 3.16: Giao diện AdditionBeanRemote

Sửa đổi mã mặc định được tạo bởi IDE trong phần bổ sung Bean để thực hiện thao tác cộng hai biến int. Đoạn mã 1 hiển thị mã sau khi sửa đổi.

Code Snippet 1 hiển thị gói chứa bean hiện tại. Chú thích Stateless ngụ ý rằng nó là một bean không trạng thái để nó có thể được triển khai một cách thích hợp. Việc triển khai một bean không trạng thái được nhập từ gói javax.eb.Statalesa. Bean thực hiện giao diện từ xa AdditionBeanRemote.

Tạo một ứng dụng khách cho một phiên giao dịch

Tạo một ứng dụng khách có thể truy cập bean phiên. Để tạo một ứng dụng khách, hãy tạo một dự án mới với các tùy chọn như trong hình 3.17.

Hình 3.17: Tạo ứng dụng khách

Chọn Module3client làm tên cho ứng dụng khách và các tùy chọn khác như trong hình 3.18

 


Hình 3.18: Cấu hình ứng dụng khách

Tạo ứng dụng, máy khách sẽ dẫn đến lớp chính như hình 3.19. Gọi hạt đậu doanh nghiệp từ máy khách, nhấp chuột phải vào mã máy khách và chọn tùy chọn.

 


Hình 3.19: Gọi Enterprise Bean từ Ứng dụng khách

Khi chọn tùy chọn Cal Enterprise Bean, trình hướng dẫn hiển thị trong hình 3.20 sẽ xuất hiện, liệt kê tất cả các bean doanh nghiệp có sẵn.

 

                                                                                   

                                                  Hình 3.20: Chọn Enterprise Bean được truy cập

Tiết kiệm mã của ứng dụng khách như được hiển thị trong Code Snippet 2.

Trong Code Snippet 2, giao diện từ xa được nhập vào mô-đun khách thông qua nhập Đậu. Addition Bean truy cập vào addBaan được sử dụng để gọi phương thức.

Khi triển khai và chạy ứng dụng khách, kết quả như trong hình 3.21.

 

               

Hình 3.21: Đầu ra khi chạy ứng dụng khách

Định cấu hình và triển khai phiên bean

Một Session bean có thể được cấu hình thông qua bộ mô tả triển khai và chú thích. ejb-jar.xml là bộ mô tả triển khai cho ứng dụng doanh nghiệp. Đây là một tệp XML khai báo chỉ định cấu hình yêu cầu của ứng dụng.

Thông tin triển khai xác định cách vùng chứa EJB quản lý bean khi được triển khai, thông tin này bao gồm loại phiên mà Session bean sẽ thiết lập, loại giao dịch được hỗ trợ, v.v

Code Snippet 3 hiển thị một bộ mô tả triển khai chung

 


Trong Đoạn mã 3, cấu hình của AdditionBean được xác định. Lớp thực hiện EJB là Beans. Bổ sungBean.

Phần tử <ejb-class> đại diện cho tên lớp Java mà thông qua đó Session bean được triển khai. Phần tử <session-type> xác định kiểu bean đang được triển khai, trong trường hợp này, nó là một bean phiên không trạng thái. Phần tử loại giao dịch> xác định phương pháp quản lý giao dịch có thể áp dụng. Trong trường hợp này, việc quản lý giao dịch được xác định thông qua vùng chứa.

Loại phiên là không trạng thái và giao dịch được quản lý bởi vùng chứa. Tuy nhiên, mã bộ mô tả triển khai này là mã một phần.


tháng 6 28, 2021

 Stateful Session Beans

4.1 Giới thiệu

4.2 Lifecycle of a Stateful Session Bean

Các beans phiên trạng thái không sử dụng tổng hợp phiên bản Các phiên bản dành riêng cho một máy khách

cho toàn bộ ứng dụng Các cá thể bean bị xóa khỏi bộ nhớ khi chúng không

trong đối tượng EJB của người dùng vẫn được kết nối với các trường hợp Bean của ứng dụng khách được thụ động trước

chúng bị xóa khỏi bộ nhớ và khi đối tượng EJB hoạt động thì cá thể đó là

được kích hoạt để khôi phục trạng thái của nó Bộ chứa điều chỉnh các hoạt động khác nhau để quản lý Phiên trạng thái Beans

Sau đây là các bước được thực hiện bởi container:

+ Sử dụng hàm tạo mặc định để tạo một cá thể bean

+ Chèn các tài nguyên như kết nối cơ sở dữ liệu

+ Lưu cá thể bean trong bộ nhớ

+ Thực thi phương thức nghiệp vụ do khách hàng gọi ra

+ Chờ và thực hiện các yêu cầu khác

+ Passivates thể hiện bean khi máy khách không hoạt động

+ Kích hoạt cá thể bean khi nhận được cuộc gọi từ máy khách

+ Hủy một phiên bản bean khi bean không được gọi trong một khoảng thời gian

+ Yêu cầu xóa cá thể bean khỏi máy khách yêu cầu kích hoạt bean

ví dụ sau đó là sự phá hủy

Có ba trạng thái trong vòng đời của Phiên trạng thái beanz Does Not Exist Mothod-Raady, and Passive.

Fiqure 4.6 hiển thị các trạng thái khác nhau của một bean Phiên trạng thái.


4.2.1 Lifecycle Callback Methods

Sau đây là các chú thích gọi lại khác nhau được sử dụng trong beanz Stateful Session:

+ PestConstruct e Các phương thức gọi lại này được thực thi sau khi phiên đậu là instam

theo thời gian của container Chúng được sử dụng trong cả đậu Trạng thái và Phiên không trạng thái

Các phương thức PostConstruct có tiền tố là chú thích @PostConstruct

+ PreDestroy e Các phương thức gọi lại này được thực thi trước khi bean phiên bị loại bỏ

từ vùng chứa và chuyển sang trạng thái Không tồn tại Các phương pháp này cũng được sử dụng

bởi cả đậu Trạng thái và Phiên không trạng thái và có tiền tố là @PreDestroy

chú thích

+ PrePassivate e Các phương thức gọi lại này được phiên beanj sử dụng trước bean

được thụ động là quá trình chuyển đổi từ Trạng thái sẵn sàng sang Trạng thái bị động Họ

thực hiện tất cả các hoạt động cần thiết trước khi chuyển giao bean, chẳng hạn như duy trì

trạng thái của session bean đến bộ nhớ thứ cấp, v.v. Các phương thức này được chú thích

với chú thích @PrePassivate

+ PostActivate e Các phương thức gọi lại này được sử dụng để thực hiện các tác vụ sau

vùng chứa chuyển phiên bean từ trạng thái thụ động sang trạng thái hoạt động

các phương thức được chú thích bằng @posActivate annotation.

4.2.2 Programming Rules for Stateful Session Bean

Sau đây là các quy tắc được thực hiện bởi beanz Phiên trạng thái:

+ biểu tượng của bean Stateful Session phải là kiểu dữ liệu nguyên thủy của Java hoặc các đối tượng có thể nối tiếp.

+ Lớp bean của Stateful Session nên định nghĩa một phương thức có thể phá hủy bean trong lập trường của lớp bean bằng cách sử dụng annotatiom @Remotre.

+ Bean phiên trạng thái có các phương thức gọi lại vòng đời PostActivate PrePassivate Phương thức PostActivate được gọi sau khi bean được đưa trở lại bộ nhớ và phương thức PrePassivate được gọi trước khi cá thể bean ở trạng thái thụ động.

4.2.3 Developing Stateful Session Bean

Một bean Stateful Session được tạo với giao diện từ xa để quản lý các sản phẩm trong danh mục.

Code Snippet 1: hiển thị mã cho lớp ProductCatalogEean lớp.

Code Snippet 1 :


Trong Đoạn mã 1, hai phương thức nghiệp vụ addProduct ()getProduct () đang được tạo Phương thức addProduct () được sử dụng để thêm các sản phẩm mới vào cổng mua sắm. Các sản phẩm được thêm vào cổng được lưu trữ trong danh sách mảng. Phương thức getProduct () truy xuất các sản phẩm được thêm vào ProductCatalogBeam. Các phương thức được thêm vào ProductCatalogBean được máy khách từ xa truy cập thông qua giao diện từ xa.

Đoạn mã 2 hiển thị giao diện từ xa cho ProductCatalogBean.

Code Snippet 2

hiển thị giao diện từ xa do nhà phát triển xác định với các nguyên mẫu phương pháp có thể được sử dụng như một phần của ứng dụng Giao diện từ xa đề cập đến tập hợp các phương pháp được cung cấp bởi session bean có thể được truy cập bởi các máy khách từ xa.lnthe code, một remoteclient of ProduccCatalogaean canaccessthe các phương thức addProduct() getProducts (). Chú thích @Remote chỉ ra rằng các phương pháp này có thể được truy cập chỉ bởi khách hàng từ xa.

4.3 Clients lnterfaces for Stateful Session Bean

Bản thân một EJB không thể thực hiện bất kỳ chức năng nào cho đến khi nó được gọi bởi máy khách. Máy khách EJB là một đối tượng tương tác với EJB để bean thực hiện một số dịch vụ thay mặt cho khách hàng này tương tác ở dạng khách hàng gọi các hoạt động trên các giao diện beanfs Giao diện của một EJB xác định các phương thức có sẵn cho các máy khách để gọi.

Khách hàng không bao giờ có quyền truy cập vào EJBt thực tế EJB nằm trong vùng chứa EJB và chỉ vùng chứa có quyền truy cập vào bean Khách hàng chỉ có quyền truy cập vào đối tượng EJB mà chứa chữ ký của tất cả các phương thức mà máy khách có thể calL Đối tượng EJB hoạt động như một nhà máy và nhà phân phối các đối tượng EJB cho khách hàng.

Quyết định cung cấp truy cập cục bộ hoặc truy cập từ xa phụ thuộc vào các yếu tố sau:

+ Loại dịch vụ-Kể từ khi ứng dụng khách có thể truy cập các hạt phiên của các ứng dụng

tien hoặc thông qua giao diện cục bộ hoặc thông qua các giao diện từ xa, chúng có thể được gọi là máy khách cục bộ hoặc máy khách từ xa Dựa trên loại dịch vụ được cung cấp bởi apa plication một khách hàng thích hợp được phát triển.

+ Mối quan hệ giữa các thành phần - Đậu doanh nghiệp cũng nhận các dịch vụ từ các hạt đậu khác Nếu các hạt đậu doanh nghiệp được kết hợp chặt chẽ với nhau tức là chúng có các yếu tố phụ đối với nhau, đó là một lựa chọn thiết kế tốt để tạo ra chúng như một đơn vị logic Trong một kịch bản các hạt đậu được cung cấp quyền truy cập cục bộ Nếu các thành phần hạt đậu lỏng lẻo được ghép nối sau đó các hạt đậu có thể truy cập vào nhau từ xa

+ Vị trí của các thành phần trên mạng doanh nghiệp - Một bean có thể được truy cập cục bộ hoặc từ xa dựa trên sự phân bố của các thành phần ứng dụng trên các bước vào mạng giải thưởng Nếu các thành phần còn lại của ứng dụng phải truy cập vào đậu doanh nghiệp được định vị từ xa thì thành phần đậu sẽ được định vị từ xa đã truy cập

+ Hiệu suất damands - Dựa trên nhu cầu hiệu suất của ứng dụng, nhà phát triển phải quyết định cách định vị và truy cập các thành phần bean của ứng dụng Các thành phần ứng dụng được đặt ở xa bị giảm hiệu suất do sự chậm trễ do truyền tải dữ liệu trên mạng. Nhà phát triển nên xem xét những yếu tố này trong khi quyết định loại hình tiếp cận các hạt doanh nghiệp

Dựa trên sự lựa chọn quyền truy cập vào bean, các phương thức truy cập bean có tiền tố là @Local và chú thích @Remote.

4.3.1 Local Client

Các máy khách cục bộ và EJB luôn nằm trong cùng một JVMt. và hạt đậu doanh nghiệp có mặt trong cùng một JVMt.

Một máy khách cục bộ có thể là một thành phần Web hoặc bean doanh nghiệp khác của ứng dụng.

Các máy khách cục bộ có thể truy cập các session bean thông qua nointerface hoặc thông qua local interface View View nointerface bao gồm tất cả các phương thức công khai của lớp session bean và giao diện cục bộ bao gồm các phương thức được khai báo như một phần của giao diện cục bộ Nếu giao diện nghiệp vụ của session bean là không được chú thích rõ ràng bằng chú thích @Local, nó được coi là giao diện cục bộ.

4.3.2 Remote Client

Một máy khách từ xa tới một EJB không cần phải được đặt trong cùng một JVM để truy cập các phương thức của bean Nó có thể nằm trong một JVM khác trên một máy vật lý khác Máy khách từ xa không quan tâm đến vị trí thực của máy mà nó truy cập.

Máy khách từ xa cen là một doanh nghiệp khác đang cư trú tại cùng một vị trí hoặc khác hoặc nó cũng có thể là một trang web epplicetion một applet hoặc một ứng dụng bảng điều khiển Java. Máy khách từ xa cen thậm chí là một chương trình không phải Java, chẳng hạn như ứng dụng CORBA được viết bằng C ++.

Ứng dụng khách từ xa không thể truy cập doanh nghiệp thông qua chế độ xem không giao diện Nó phải triển khai giao diện doanh nghiệp được chú thích bằng @Remo te annotation Một doanh nghiệp được khách hàng từ xa cho phép truy cập thông qua giao diện từ xa Các phương thức vòng đời kết thúc kinh doanh của doanh nghiệp được xác định trong điều khiển từ xa giao diện.

Code Snippet 3 thể hiện đoạn mã khách hàng từ xa truy cập vào ứng dụng cổng thông tin mua sắm.

Code Snippet 3:


4.3.3 Accessing JNDI Lookups

Máy khách có thể truy cập giao diện cục bộ hoặc từ xa của en doanh nghiệp bean thông qua các đối tượng EJB hoặc thông qua các dịch vụ tra cứu như JNDL JNDI là một dịch vụ đặt tên và thư mục được sử dụng để đăng ký các hạt doanh nghiệp cho lệnh gọi từ xa.

Để thực hiện tra cứu đối tượng EJB bằng JNDI, dịch vụ các thành phần sau cần được thiết lập như sau:

 

+ Các tham số khởi tạo JNDI e Các tham số khởi tạo JNDI bao gồm trình điều khiển JNDI được sử dụng để gọi bean doanh nghiệp đã đăng ký từ thư mục đặt tên Các trình điều khiển JNDI từ vùng chứa đến vùng chứa được sử dụng để meneging thể hiện bean Vì vậy, để truy cập dịch vụ JNDI, khách hàng phải cung cấp hướng dẫn sử dụng tài sản để truy cập

nhập trình điều khiển JNDI cụ thể cho vùng chứa trong chương trình máy khách Cách mã hóa cứng trình điều khiển JNDI phá hủy tính khả chuyển của mã Do đó, API JNDI cung cấp một ngữ cảnh ban đầu mặc định được sử dụng bởi trình trung tâm để đặt các thuộc tính JNDI cụ thể cho trung tâm. Các thuộc tính này được đặt cho môi trường khách trước bean được truy cập.

+ lnitialContext Class Một lớp văn bản InitialCon được sử dụng để tạo điểm nhập vào hệ thống neming được sử dụng trong epplicetion Các đối tượng của ứng dụng được liên kết với các tên JNDI để tham chiếu và được sử dụng trong epplicetion JNDI hoặc tạo tất cả các đối tượng của epplicetion thành một hệ thống cấp bậc và cá thể InitialContext được sử dụng để tạo gốc của cấu trúc hierer. javax t đặt tên cho i Lớp InitzialContzextz thực hiện giao diện Context.

Đoạn mã 4 trình bày cách sử dụng đối tượng InitialContext.

Code Snippet 4:

Đoạn mã cho thấy việc sử dụng đối tượng InitialContext, lấy lại tham chiếu của giao diện ProductzCatzaloBeanRemote.

+ Cấu hình JNDI

Thao tác tra cứu trong mã nguồn JNDI được thực hiện thông qua phương pháp tra cứu trong Đoạn mã 4, thao tác tra cứu được thực hiện để truy cập giao diện từ xa của Nhóm sản phẩm Bảng tên trong mã thực hiện tra cứu trên bảng tên chung.

Phương thức tra cứu sử dụng bộ mô tả triển khai để nhận được liên kết đối tượng và neme JNDI.

Đoạn mã 5 hiển thị mô tả triển khai mẫu e với các liên kết neme JNDI được xác định.

Code Snippet 5:

Bộ mô tả triển khai là một tệp XML không tinh vi được sử dụng để định cấu hình ứng dụng trong Đoạn mã 5, ProductCatalogEean được liên kết với JNDI neme 'pro'.

4.3.4 Web Clients

Máy khách web là các thành phần Web khác nhau của ứng dụng có thể truy cập hạt đậu doanh nghiệp thông qua giao diện từ xa hoặc giao diện cục bộ dựa trên các giao diện được xác định bởi hạt đậu doanh nghiệp.

Các máy khách dịch vụ Web gọi các phương thức kinh doanh của đậu Stateless S ession Một máy khách Web có thể truy cập tất cả các phương thức công khai của đậu doanh nghiệp.

4.4 Tiêm các tài nguyên trong doanh nghiệp Beans

 Việc chèn tài nguyên cho phép các nhà phát triển đưa các tài nguyên như cơ sở dữ liệu, trình kết nối, v.v. vào các thành phần được quản lý bởi vùng chứa như thành phần Web và thành phần bean. Các tài nguyên phải được xác định trong không gian tên JNDI để nó có thể được đưa vào thành phần. Javax.annotation.Resource được sử dụng để khai báo một tham chiếu đến một tài nguyên. Chú thích được thêm vào mã dưới dạng @Resource. Việc tiêm tài nguyên có thể là tiêm dựa trên lớp, tiêm dựa trên trường / phương thức.

Chú thích tài nguyên có năm thành phần cụ thể là tên, loại, xác thựcType,

shareable, mappedName và mô tả. Mô tả của các phần tử như sau:

-        trường tên có tên JNDI của tài nguyên đang được truy cập.

-        type ngụ ý loại tài nguyên.

-        Mô tả mô tả tài nguyên.

-        mappedName ngụ ý bất kỳ tên cụ thể nào của hệ thống mà tài nguyên phải có

được lập bản đồ.

-        shareable ngụ ý liệu tài nguyên có thể được chia sẻ với các thành phần khác hay không.

Để sử dụng chèn dựa trên trường, khai báo trường phải được đặt trước chú thích Tài nguyên.

Đối với phương thức chèn dựa trên phương thức, phương thức setter có thể được khai báo trước chú thích @Resource. Phương thức setter phải tuân theo quy ước đặt tên bean; tên phương thức phải bắt đầu bằng 'set'.

Việc chèn tài nguyên dựa trên lớp có thể được thực hiện bằng cách cung cấp chú thích @Resource với các giá trị tên và kiểu thích hợp.

4.5 Xử lý ngoại lệ trong phiên Beans

Ngoại lệ trong Java đề cập đến các điều kiện bất thường phát sinh trong quá trình thực thi ứng dụng. Java cung cấp các cơ chế xử lý ngoại lệ để làm cho ứng dụng trở nên mạnh mẽ. Ngoại lệ là một sự kiện, xảy ra trong quá trình thực thi chương trình làm gián đoạn luồng hướng dẫn bình thường của chương trình.

Một số trường hợp ngoại lệ này là do lỗi người dùng, một số do lỗi lập trình và các trường hợp khác do tài nguyên vật lý bị lỗi theo một cách nào đó.

Xử lý ngoại lệ được thực hiện thông qua các cơ chế như khối try-catch và câu lệnh ném trong mã Java.

Trong trường hợp khối try — catch, mã có khả năng tạo ra một ngoại lệ được bao gồm trong khối try và khối catch bao gồm mã được thực thi để xử lý ngoại lệ xảy ra trong khối try.

Trong một khối mã nhất định nếu có xác suất xảy ra ngoại lệ thì nó có thể được đề cập rõ ràng với câu lệnh ném. Khối catch chịu trách nhiệm xử lý ngoại lệ.

4.5.1 Các loại ngoại lệ

Có ba loại ngoại lệ:

-        Checked exceptions - Ngoại lệ đã kiểm tra là một ngoại lệ thường là lỗi của người dùng hoặc sự cố mà người lập trình không thể lường trước được - các điều kiện không hợp lệ trong các khu vực nằm ngoài sự kiểm soát ngay lập tức của chương trình (đầu vào của người dùng không hợp lệ, sự cố cơ sở dữ liệu, sự cố mạng và tệp vắng mặt).

-         Unchecked / Runtime exceptions - Các ngoại lệ không được kiểm tra xảy ra do lỗi trong logic lập trình, chúng không thể được phát hiện tại thời điểm biên dịch, do đó được gọi là ngoại lệ thời gian chạy.

-        Ngoại lệ thời gian chạy - Các ngoại lệ thời gian chạy xảy ra do logic được triển khai trong ứng dụng không chính xác. Chúng chỉ được phát hiện khi ứng dụng thực thi. Chúng không thể được phát hiện trong thời gian biên dịch ứng dụng.

4.5.2 Ngoại lệ Java EE

-         Theo đặc tả của EJB, một ứng dụng doanh nghiệp có thể có hai loại ngoại lệ - Ngoại lệ ứng dụng và Ngoại lệ hệ thống.

-        Các ngoại lệ của ứng dụng phát sinh do các điều kiện nhất định trong logic nghiệp vụ của ứng dụng.

-        Hệ thống ngoại lệ phát sinh do lỗi trong cơ sở hạ tầng ứng dụng hoặc lỗi kết nối cơ sở dữ liệu.

-        Các ngoại lệ ứng dụng trong trường hợp ứng dụng doanh nghiệp là - CreateException, FinderException và RemoveException.

-        Các ngoại lệ hệ thống thường xảy ra là RemoteException, NamingExceptions, SQLException, v.v.

-        Một EJBException được ném ra khi một ngoại lệ Ứng dụng hoặc ngoại lệ Hệ thống xảy ra.

CreateException : Được nâng lên khi việc khởi tạo một đối tượng hoặc bean không thành công.

FinderException: Nâng lên khi ứng dụng không thể tìm thấy đối tượng.

RemoveException: Nâng lên khi ứng dụng không thể loại bỏ một phiên bản bean không thể bị xóa khỏi vùng chứa.

RemoteException: Nâng lên khi có sự cố mạng và máy khách không thể truy cập vào một obiect từ xa.

NamingException: Được nâng lên khi tên jndi không thể được phân giải cho đối tượng.

SQLException: Tăng lên khi bean không thể nhận được phản hồi từ ứng dụng cơ sở dữ liệu.

lEJBException: Nó có thể được nâng lên khi bean không thể phản hồi các ứng dụng khách một cách thích hợp.

4.6 Exception Handling in Enterprise Applications

Trong các ứng dụng doanh nghiệp, việc xử lý ngoại lệ có thể được thực hiện bởi vùng chứa hoặc thông qua enterprise Beans. Cả ngoại lệ ứng dụng và ngoại lệ hệ thống đều có thể được xử lý bằng cách thùng chứa hoặc một bean.

4.6.1 Handling Exceptions Through a Container (Xử lý các ngoại lệ thông qua một vùng chứa)

Các ngoại lệ ứng dụng có thể được đưa ra bởi các phương thức bean doanh nghiệp được gọi bởi khách hàng hoặc các enterprise beans. Khi một ngoại lệ được ném, giao dịch trong đó ngoại lệ được ném không cần phải được cuộn lại. Thay vào đó, ngoại lệ được ném được chuyển vào bean người gọi hoặc máy khách. Các ứng dụng doanh nghiệp không khôi phục các hành động đã thực hiện. Ngoại lệ được ném ra được trả về quay lại người gọi và sau đó, vùng chứa tiếp tục thực thi mã xử lý ngoại lệ.

Bất cứ khi nào một vùng chứa gặp phải các ngoại lệ của hệ thống, thì nó sẽ thực hiện các hoạt động sau:

-        Đầu tiên vùng chứa ghi lại ngoại lệ hệ thống.

-        Sau đó, nó sẽ phân bổ tất cả các tài nguyên được phân bổ và thực hiện tất cả các hoạt động dọn dẹp trên cá thể bean.

-        Xóa cá thể bean khỏi bộ nhớ đã gây ra ngoại lệ hệ thống.

-        Phương thức gọi được thông báo về ngoại lệ hệ thống bằng cách ném một ngoại lệ như javax.ejb.EJBException, javax.EJBJ'IoSuchEZJBI-Ixception, và như thế.

4.6.2 Handling exceptions though beans

Các ngoại lệ có thể được xử lý bằng cách viết mã rõ ràng để xử lý ngoại lệ. Nếu các ngoại lệ được xử lý thông qua các lớp bean sau đó bean cố gắng khôi phục từ ứng dụng. Nếu ứng dụng có thể được khôi phục thì mã khôi phục sẽ được gọi. Nếu ngoại lệ thì không có thể phục hồi sau đó giao dịch được khôi phục.

Code Snippet 6:

Các ngoại lệ thời gian chạy có thể là ngoại lệ ứng dụng và ngoại lệ hệ thống. Bean có thể xử lý các ngoại lệ của ứng dụng bằng cách chuyển hướng đến mã xử lý ngoại lệ trong bean. Đó là một lựa chọn thiết kế tốt để xử lý các ngoại lệ khác với các ngoại lệ ứng dụng thông qua vùng chứa. Bất cứ khi nào một ngoại lệ ứng dụng được ném ra, bean sẽ xử lý chúng theo những cách sau:

-        Nếu mã xử lý ngoại lệ cho ngoại lệ ứng dụng được xác định thì mã xử lý ngoại lệ sẽ được thực thi.

-        Nếu ngoại lệ của ứng dụng không thể khôi phục được, thì lớp bean sẽ ném một ngoại lệ và thoát.

-        Nếu ngoại lệ gây ra mất tính toàn vẹn của dữ liệu thì giao dịch sẽ được khôi phục.Các ngoại lệ hệ thống như EJBException và RuntimeException không được xử lý thông qua các phương thức bean. Chúng thường được xử lý thông qua thùng chứa.


 4.7 Exception Logging

Ứng dụng ghi nhật ký các ngoại lệ để nhà phát triển phân tích thêm và khắc phục nguyên nhân của ngoại lệ. Các ngoại lệ có thể được ghi ở nhiều cấp - Ghi nhật ký cấp thành phần, ghi nhật ký cấp trung bình và ghi nhật ký cấp cao nhất.

 

Ghi nhật ký cấp thành phần của các ngoại lệ đề cập đến ghi nhật ký ngoại lệ tại mỗi thành phần của ứng dụng. Bất cứ khi nào, một thành phần ném một ngoại lệ, nó cũng tạo một mục nhập vào nhật ký ngoại lệ. Cơ chế ghi nhật ký ngoại lệ này yêu cầu mã ghi nhật ký được viết cho từng thành phần. Trong trường hợp ghi nhật ký ngoại lệ cấp trung bình, nhật ký ngoại lệ được duy trì ở một vị trí chung cho các thành phần khác nhau, nơi có đủ thông tin về tất cả các thành phần, chẳng hạn như một vùng chứa. Ghi nhật ký cấp trung gian không có thông tin về toàn bộ ứng dụng mà là một tập hợp con của các thành phần ứng dụng.

 

Nhật ký ngoại lệ cũng có thể được duy trì ở cấp cao nhất, điều này đề cập đến nhật ký ngoại lệ của ứng dụng. Ghi nhật ký cấp cao nhất của các ngoại lệ có thông tin về tất cả các ngoại lệ được đưa vào ứng dụng. Các bản ghi ngoại lệ như vậy rất hữu ích để đánh giá hiệu suất của toàn bộ ứng dụng.

 

Code Snippet 7 thể hiện việc ghi ngoại lệ trong các ứng dụng doanh nghiệp.

Code Snippet 7:








09 tháng 6, 2021

tháng 6 09, 2021

 

Spring Data Access

1.1.1 Truy cập dữ liệu với spring

- Spring Framework cung cấp hỗ trợ lập trình để truy cập và thao tác dữ liệu trong

cơ sở dữ liệu.


1.1.2 Hỗ trợ Spring transaction

Đối với các ứng dụng hướng RDBMS, quản lý   là một hoạt động quan trọng để đảm bảo tính toàn vẹn và nhất quán của dữ liệu. Một giao dịch cơ sở dữ liệu phải có bốn thuộc tính chính:

 

- Atomicity: Các sửa đổi cơ sở dữ liệu phải tuân theo quy tắc tất cả hoặc không có gì. Một giao dịch liên quan đến một số hoạt động cấp thấp. Theo thuộc tính này, một giao dịch phải

được coi như một đơn vị atomicify, nghĩa là, tất cả các hoạt động của nó đều được thực thi hoặc nếu không, không được thực hiện. Không được có trạng thái nào trong cơ sở dữ liệu nơi giao dịch là một phần hoàn thành.

- Consistency: Cơ sở dữ liệu phải duy trì ở trạng thái nhất quán trước khi bắt đầu giao dịch và sau khi hoàn thành thành công / không thành công. Do một số lỗi giao dịch, đôi khi cơ sở dữ liệu có thể được cập nhật một phần, có nghĩa là sẽ có sự không nhất quán. Điều này cần được tránh bằng cách thực hiện các biện pháp thích hợp.

- Isolation: Mỗi transaction không biết về các transaction khác đang thực hiện đồng thời trong hệ thống. Điều này là cần thiết để duy trì hiệu suất cũng như tính nhất quán giữa các transaction trong cơ sở dữ liệu.

- Durability: Khi transaction được hoàn tất thành công trong cơ sở dữ liệu và nhận được thông báo, transaction phải luôn tồn tại trong cơ sở dữ liệu và không được hoàn tác ngay cả khi hệ thống bị lỗi và khởi động lại.

Những đặc điểm này thường được viết tắt là ACID.

- Spring Framework cung cấp khả năng transaction cho các đối tượng Java cũ (POJO). do đó, đóng vai trò thay thế cho các transaction Enterprise JavaBeans (EJB). EJB là một phần mềm phía máy chủ được quản lý giúp các nhà phát triển tạo các ứng dụng doanh nghiệp theo mô-đun. EJB là một trong số các API Java.


1.2.1 Spring Framework cung cấp tính năng quản lý giao dịch toàn diện mang lại những ưu điểm sau:

- Hỗ trợ quản lý transaction khai báo, là sự phân chia ranh giới transaction không theo chương trình. Điều này cho phép tách biệt quản lý giao dịch khỏi mã doanh nghiệp. Nói cách đơn giản, thông qua quản lý transaction khai báo, các nhà phát triển có thể quản lý transaction với sự trợ giúp của cấu hình thay vì mã hóa cứng trong mã nguồn của họ. Quản lý transaction khai báo được ưu tiên hơn quản lý transaction theo chương trình mặc dù nó kém linh hoạt hơn so với quản lý transaction sau đó cho phép các nhà phát triển kiểm soát các transaction thông qua mã của họ. Quản lý giao dịch khai báo có thể được mô-đun hóa với cách tiếp cận AOP. Quản lý giao dịch khai báo Spring Framework có thể được áp dụng cho bất kỳ lớp nào, không chỉ các lớp đặc biệt như EJB.

- Hỗ trợ API đơn giản hơn để quản lý transaction theo chương trình so với các API giao dịch phức tạp như JTA. Chìa khóa của sự trừu tượng hóa giao dịch Spring được xác định bởi giao diện org.springframework.transaction.PlatformTransactionManager.

- Cung cấp cho các nhà phát triển mô hình lập trình nhất quán trên một số API giao dịch, chẳng hạn như API giao dịch Java (JTA), JDBC, Hibernate, Java Persistence API (JPA). và Đối tượng dữ liệu Java (JDO). Điều này làm giảm nhu cầu sử dụng các mô hình lập trình cục bộ và toàn cầu khác nhau.

- Tích hợp tốt với các abstract truy cập dữ liệu của Spring.


1.2.2 Hỗ trợ DAO

- Đối tượng Truy cập Dữ liệu (DAO) là một đối tượng, thực hiện một số hoạt động dữ liệu cụ thể mà không tiết lộ chi tiết của cơ sở dữ liệu cho người dùng. Sự cô lập này tách giao diện công khai của DAO khỏi việc triển khai nó. Giao diện công khai có thể bao gồm các phương thức truy cập dữ liệu mà ứng dụng cần cho các đối tượng và kiểu dữ liệu dành riêng cho miền. Việc triển khai bao gồm cách các đối tượng miền cụ thể và nhu cầu kiểu dữ liệu được đáp ứng với một lược đồ cơ sở dữ liệu và DBMS cụ thể.

- Spring cung cấp một khung DAO chứa các giao diện, các lớp tiện ích và các lớp trừu tượng. Các nhà phát triển có lựa chọn sử dụng cấu hình dựa trên XML hoặc cấu hình dựa trên chú thích để liên kết các lớp tùy chỉnh với khuôn khổ Spring DAO. Công cụ thứ hai giúp ứng dụng Spring dễ dàng hoạt động với các công nghệ truy cập dữ liệu khác nhau, chẳng hạn như Hibernate, JDBC, JdbcTemplate, JPA và JDO. Trong trường hợp, ứng dụng Spring sử dụng kết hợp các công nghệ truy cập dữ liệu, cấu hình nhấn mạnh vào việc kết hợp lỏng lẻo giữa các lớp tùy chỉnh và khung công tác. Điều này cho phép các nhà phát triển dễ dàng chuyển đổi giữa hai. Ngoài ra, việc mở rộng các lớp này trong ứng dụng Spring của họ cho phép các nhà phát triển viết mã chung mà không tạo ra lỗi cụ thể cho từng công nghệ truy cập dữ liệu có trong ứng dụng.

+ JdbcDaoSupport: Nó là một siêu lớp cho các đối tượng truy cập dữ liệu JDBC và yêu cầu một cá thể DataSource sẽ được cung cấp.

+ HibernateDaoSupport: Nó là một siêu lớp dành cho các đối tượng truy cập dữ liệu Hibernate và yêu cầu cung cấp một phiên bản SessionFactory.

+ JdoDaoSupport: Nó là một siêu lớp cho các đối tượng truy cập dữ liệu JDO và yêu cầu cung cấp một cá thể PersistenceManagerFactory.

+ JpaDaoSupport: Nó là một siêu lớp dành cho các đối tượng truy cập dữ liệu JPA và yêu cầu cung cấp một cá thể EntityManagerFactory.

- Spring cung cấp một bản dịch thuận tiện và dễ dàng từ các ngoại lệ, chẳng hạn như SQLException (dành riêng cho một công nghệ) sang hệ thống phân cấp lớp ngoại lệ của riêng nó.


1.3.1 DAO Design Pattern

- DAO Design Pattern được xây dựng dựa trên các nguyên tắc thiết kế trừu tượng và đóng gói để bảo vệ ứng dụng khỏi bất kỳ thay đổi nào mà nhà phát triển chọn thực hiện trong cơ sở dữ liệu và công nghệ của họ. Hãy xem xét một ví dụ trong đó ứng dụng MVC xác thực người dùng bằng thông tin đăng nhập từ cơ sở dữ liệu tại chỗ. Do xu hướng thay đổi, các nhà phát triển hiện đã nâng cấp lên cơ sở dữ liệu dựa trên đám mây. Bình thường. điều này có nghĩa là toàn bộ ứng dụng của họ sẽ bị ảnh hưởng bởi thay đổi nhỏ này. Tuy nhiên, nếu ứng dụng của họ được phát triển bằng cách sử dụng mẫu thiết kế DAO, nó sẽ dễ dàng và an toàn vì các thay đổi chỉ cần thực hiện đối với lớp truy cập dữ liệu, giữ nguyên lớp xem.

- DAO pattern có các thành phần sau:

+ Giao diện đối tượng truy cập dữ liệu: Xác định các hoạt động tiêu chuẩn được thực hiện trên một đối tượng mô hình.

+ Lớp concrete truy cập dữ liệu: Triển khai giao diện DAO và chịu trách nhiệm lấy dữ liệu từ nguồn dữ liệu (cơ sở dữ liệu / XML hoặc bất kỳ cơ chế lưu trữ nào khác).

+ Đối tượng Mô hình hoặc Đối tượng Giá trị: Đề cập đến một POJO đơn giản có chứa các phương thức get / set để lưu trữ dữ liệu, được truy xuất bằng cách sử dụng lớp DAO.

* Ví dụ: một nhà phát triển có thể tạo một chương trình sử dụng mẫu DAO và hiển thị tên và số lượng nhân viên của một công ty.

- Tại đây, nhà phát triển có thể tạo một đối tượng Nhân viên hoạt động như một Mô hình hoặc Đối tượng Giá trị. EmployeeDao là Giao diện Đối tượng Truy cập Dữ liệu. Employeedaolmpl là một lớp cụ thể triển khai Giao diện đối tượng truy cập dữ liệu. DaoPatternDemo, lớp, sẽ sử dụng EmployeeDao để chứng minh việc sử dụng mẫu Đối tượng Truy cập Dữ liệu.


1.3.2 JDBC

- Các nhà phát triển có thể sử dụng JDBC để thực hiện truy cập cơ sở dữ liệu trong kiến ​​trúc hai tầng cũng như ba tầng.



- Ngược lại với kiến ​​trúc hai tầng, trong kiến ​​trúc ba tầng. một ứng dụng và một nguồn dữ liệu giao tiếp với nhau thông qua một tầng giữa (tầng dịch vụ).

- Ứng dụng sẽ gửi các lệnh đến tầng giữa trước tiên và sau đó các lệnh này được gửi đến nguồn dữ liệu.

- Nguồn dữ liệu cũng xử lý các lệnh và gửi kết quả trở lại tầng giữa trước tiên và sau đó các kết quả này được gửi trở lại ứng dụng.

- Để xây dựng một ứng dụng JDBC, các nhà phát triển cần thực hiện các bước sau:

+ Nhập gói chứa các lớp JDBC cần thiết để lập trình cơ sở dữ liệu.

+ Đăng ký trình điều khiển JDBC để mở kênh liên lạc với cơ sở dữ liệu.

+ Mở kết nối để tạo đối tượng Kết nối.

+ Thực thi một truy vấn bằng cách sử dụng một đối tượng kiểu Statement hoặc PreparedStatement để gửi một câu lệnh cơ sở dữ liệu.

+ Trích xuất dữ liệu từ tập hợp kết quả để tìm nạp dữ liệu từ cơ sở dữ liệu.

+ Đóng tất cả các tài nguyên cơ sở dữ liệu để làm sạch môi trường.


1.4.1 Spring JDBC Packages

- Spring Framework JDBC giúp làm việc với JDBC trong các ứng dụng Spring dễ dàng hơn. Spring Framework cung cấp một số lớp dựng sẵn cho JDBC có thể được mở rộng. Thông dụng và phổ biến nhất là lớp JdbcTemplate. Lớp này giúp quản lý các hoạt động vận hành cấp thấp, chẳng hạn như mở và đóng kết nối, chuẩn bị và thực thi các câu lệnh SQL, xử lý các ngoại lệ của quy trình, v.v.

- Các lớp Spring JDBC có bốn gói sau:

+ core: Gói này có các lớp cho chức năng cốt lõi của JDBC. Một số lớp quan trọng bao gồm NamedParameterJdbcTemplate. JdbcTemplate, SimpleJdbclnsert. và SimpleJdbcCall.

+ Data sources: Gói này có các lớp tiện ích để truy cập nguồn dữ liệu. Ngoài ra, gói này bao gồm các triển khai nguồn dữ liệu khác nhau có thể được sử dụng để kiểm tra mã JDBC ngoài vùng chứa Java EE.

+ Object: Gói này có các lớp hỗ trợ hoạt động cơ sở dữ liệu như truy vấn và cập nhật. Nó cho phép thực hiện các truy vấn và trả về kết quả như một đối tượng nghiệp vụ.

+ support: Gói này có các lớp hỗ trợ cho các lớp khác được định nghĩa trong gói lõi và gói đối tượng.


1.5.1 Sử dụng JDBC với Spring

- Các nhà phát triển có thể sử dụng JDBC với Spring Framework bằng cách thực hiện các bước sau:

1. Tạo một nguồn dữ liệu trong cơ sở dữ liệu. Ví dụ, người dùng có thể tạo một cơ sở dữ liệu và một bảng trong MYSQL. Một cách dễ dàng để làm điều này là sử dụng XAMPP, một giải pháp máy chủ Web đa nền tảng mã nguồn mở miễn phí. Tải xuống phần mềm từ https: www.apachefriends.orgldownload.html và cài đặt nó. Khởi chạy nó và đảm bảo Apache và MYSQL đang chạy. Tạo cơ sở dữ liệu MYSQL và bảng thông qua giao diện Web.

2. Tạo một dự án Java bằng cách sử dụng STS và một gói trong thư mục src trong dự án đã tạo.

3. Bao gồm các thư viện Spring bắt buộc bằng cách sử dụng tùy chọn Thêm JAR bên ngoài.

4. Tải xuống và thêm các thư viện mới nhất cụ thể của Spring JDBC mysql-connector-javajar, org.springframework.jdbc.jar và org.springframework.transaction.jar vào dự án.

5. Tạo giao diện DAO và xác định tất cả các phương thức được yêu cầu.

6. Tạo các lớp Java cần thiết khác và tệp cấu hình Beans có tiêu đề Beans.xml, trong thư mục src.

7. Tạo nội dung của tất cả các tệp Java và tệp Cấu hình Bean và chạy ứng dụng.


1.5.2 Sử dụng Lớp JdbcTemplate

- Sử dụng lớp JdbcTemplate trong một ứng dụng loại bỏ nhu cầu viết mã cho các hoạt động vận hành. Sau khi sử dụng lớp này trong một ứng dụng, các nhà phát triển chỉ cần xác định các tham số kết nối và chỉ định câu lệnh SQL.

- Lớp JdbcTemplate thực hiện các chức năng sau:

+ Thực thi các truy vấn SQL

+ Cập nhật báo cáo

+ gọi Stores procedure

+ Thực hiện lặp qua ResultSets

+ Trích xuất các giá trị tham số trả về

- Ngoài ra, lớp JdbcTemplate giúp bắt các ngoại lệ trong các ứng dụng và ánh xạ chúng tới các danh mục phân cấp ngoại lệ tương ứng được xác định trong gói org.springframework.dao.

- Lớp JdbcTemplate cung cấp các phương thức sau:

+ public int update(String query): Giúp chèn, cập nhật và xóa bản ghi.

+ public int update(String query, Object... args): Giúp chèn, cập nhật và xóa các bản ghi bằng PreparedStatement bằng given arguments.

+ public void execute(String query): Giúp thực hiện truy vấn DDL.

+ public T execute(String sql, EparedStatementCallback action): Giúp thực hiện truy vấn bằng cách sử dụng lệnh gọi lại PreparedStatement.

+ public T query (String sql, ResultSetExtractor rse): Giúp tìm nạp các bản ghi bằng ResultSetExtractor.

+ public List query(String sql, RowMapper rse): Giúp tìm nạp các bản ghi bằng RowMapper.


1.6.1 Truy cập dữ liệu MySQL với ORM

- MySQL là một Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL). SQL là một trong những ngôn ngữ phổ biến nhất để thêm, truy cập và quản lý nội dung trong cơ sở dữ liệu. Spring Framework cung cấp hỗ trợ lập trình với cơ sở dữ liệu MySQL.

- Các chương trình Spring có thể sử dụng một số mô hình lập trình để xử lý dữ liệu. Ánh xạ quan hệ đối tượng (ORM) là một trong số đó. MySQL có thể được kết hợp với ORM thông qua Spring Framework.


1.6.2 Giới thiệu ORM

- Nói một cách dễ hiểu, ORM là một kỹ thuật lập trình dựa trên nguyên tắc OO và giúp chuyển đổi dữ liệu giữa các hệ thống kiểu không tương thích hoặc xung đột trong cơ sở dữ liệu quan hệ, kho lưu trữ XML, các nguồn dữ liệu khác và ngôn ngữ OOP.

- Thư viện ORM được viết bằng cùng một ngôn ngữ có thể được sử dụng để dễ dàng giao tiếp và tương tác với một đối tượng. ORM cũng cung cấp khả năng kết hợp công nghệ và khả năng hiện đại mà không thực hiện bất kỳ thay đổi nào đối với mã của ứng dụng.

- ORM cung cấp những ưu điểm sau:

+ Tiết kiệm rất nhiều nỗ lực bảo trì vì mô hình dữ liệu được lưu trữ tại một nơi, giúp cập nhật, bảo trì và sử dụng lại mã dễ dàng hơn.

+ Sẽ linh hoạt hơn để sử dụng vì nó phù hợp với cách viết mã tự nhiên, tóm tắt hệ thống cơ sở dữ liệu. Các nhà phát triển có thể thay đổi nó theo yêu cầu và mô hình bị ràng buộc yếu với phần còn lại của ứng dụng, vì vậy có thể được thay đổi hoặc sử dụng ở bất kỳ nơi nào khác.


1.6.3 Giới thiệu Hibernate

- Hibernate là một giải pháp ORM hiệu suất cao và mạnh mẽ được tạo ra bởi Gavin King vào năm 2001 cho các ứng dụng Java. Hibernate ánh xạ các lớp Java tới các bảng cơ sở dữ liệu và kiểu dữ liệu Java sang kiểu dữ liệu SQL và cung cấp các phương tiện truy xuất và truy xuất dữ liệu để giảm số lượng các tác vụ lập trình liên quan đến độ bền dữ liệu phổ biến cho các nhà phát triển. Một trong những điều tốt nhất của việc sử dụng Hibernate là nó không cần bất kỳ máy chủ ứng dụng nào để hoạt động.

- Hibernate thay thế các truy cập cơ sở dữ liệu trực tiếp và liên tục bằng các chức năng xử lý đối tượng cấp cao.

- Ngoài ra, Hibernate cung cấp những lợi thế sau:

+ Ánh xạ các lớp Java tới các bảng cơ sở dữ liệu bằng cách sử dụng XML mà không cần viết mã.

+ Cung cấp các APls đơn giản để lưu trữ và truy xuất các đối tượng Java đến và đi từ cơ sở dữ liệu.

+ Cung cấp tính độc lập của mã bằng cách cho phép chỉ thay đổi các thuộc tính tệp XML nếu có thay đổi trong cơ sở dữ liệu hoặc trong bất kỳ bảng nào. Cung cấp tính độc lập của mã bằng cách cho phép chỉ thay đổi các thuộc tính tệp XML nếu có thay đổi trong cơ sở dữ liệu hoặc trong bất kỳ bảng nào.

+ Thao tác các liên kết phức tạp của các đối tượng cơ sở dữ liệu.

+ Hỗ trợ các chiến lược tìm nạp thông minh giúp giảm thiểu truy cập cơ sở dữ liệu.

+ Hibernate hỗ trợ hầu hết mọi cơ sở dữ liệu có trình điều khiển JDBC, chẳng hạn như HSQL Database Engine, DBZ / NT, MySQL, PostgreSQL, FrontBase, Oracle, v.v. Ngoài ra, nó hỗ trợ nhiều công nghệ, chẳng hạn như XDocIet Spring, J2EE, các trình cắm thêm Eclipse và Maven.

- Kiến trúc Hibernate có các đối tượng sau:

+ Configuration: Đối tượng Cấu hình thường chỉ được tạo một lần trong quá trình khởi tạo ứng dụng. Đối tượng này cung cấp hai thành phần khóa sau:

            * Database Connection

            * Class Mapping Setup

+ SessionFactory: Đối tượng cấu hình tạo đối tượng SessionFactory để cấu hình Hibernate cho ứng dụng bằng cách sử dụng tệp cấu hình được cung cấp.

+ Session: Đối tượng Session được sử dụng để thiết lập kết nối vật lý với cơ sở dữ liệu.

+Transaction: Đây là một đối tượng tùy chọn vì các ứng dụng Hibernate có thể quản lý các giao dịch trong mã ứng dụng của riêng chúng.

+ Query: Đối tượng Truy vấn sử dụng chuỗi SQL hoặc Hibernate Query Language (HQL) để truy xuất dữ liệu từ cơ sở dữ liệu và tạo các đối tượng.

+ Criteria: Đối tượng Criteria được sử dụng để tạo và thực thi các truy vấn tiêu chí hướng đối tượng để truy xuất các đối tượng.


1.6.4 Tích hợp Hibernate với Spring Framework

- Các nhà phát triển có thể tích hợp một ứng dụng Hibernate với Spring Framework. Trong khuôn khổ Hibernate, họ cần cung cấp tất cả thông tin cơ sở dữ liệu trong tệp hibernate.cfg.xml. Trong khi đó, khi tích hợp ứng dụng Hibernate với Spring, họ không cần tạo tệp hibernate.cfg.xml mà chỉ cần cung cấp tất cả thông tin trong tệp applicationContext.xml.