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.






Chúng tôi là nhóm CODEDY Team.Là một nhóm lập trình gồm 6 thành viên.
Không có nhận xét nào:
Đăng nhận xét