BangMaple's Blog. Nơi sẻ chia kiến thức!

Lập trình ứng dụng Java sử dụng JPA truy cập cơ sở dữ liệu SQL Server

Không có nhận xét nào


Xin chào các bạn.

Trong bài viết này, mình sẽ hướng dẫn các bạn truy cập cơ sở dữ liệu bằng cách lập trình ứng dụng Java sử dụng công nghệ JPA.

Tại sao sử dụng JPA?

- Từ xưa giờ, chúng ta muốn truy cập cơ sở dữ liệu thì dùng JDBC (Java DataBase Connectivity) và việc thực hiện các phương thức đóng-mở kết nối, sử dụng nhiều class và sẽ làm cho code của chúng ta cồng kềnh và khó bảo trì sau này.

- Việc triển khai và bảo trì code Java và SQL đã phải gặp rất nhiều khó khăn trong việc chuyển giao giữa các Database, công việc bảo trì code cũng cần phải kiểm tra lại ứng dụng -> Tốn rất nhiều công sức và chi phí.
Nguồn: gpcoder
- JPA (Java Persistence API) được phát triển trên ORM (Object-Relational Mapping) giúp chúng ta bỏ đi những rào cản trên và làm cho code dễ bảo trì và kiểm tra hơn!

Cụ thể ở đây là một ứng dụng Java Console cơ bản truy cập đến cơ sở dữ liệu SQL Server bằng việc sử dụng công nghệ EclipseLink JPA trên công cụ lập trình NetBeans IDE.

Chức năng CRUD (Create - Read - Update - Delete) sẽ được bao quát trong bài viết này!

- Những thứ cần chuẩn bị:

  • Java JDK 8 trở lên.
  • NetBeans IDE 8.0 trở lên.
  • Thư viện kết nối cơ sở dữ liệu (sqljdbc4-4.0.jar).
  • SQL Server 2008 trở lên đã được cài đặt sẵn.
Đầu tiên, khởi chạy công cụ NetBeans IDE.
(Hình 1) Tạo một project mới sử dụng Java with Ant với Java Application
(Hình 2) Mình đặt tên cho project là DemoJPA (bạn có để đặt tuỳ ý)
Nhấn Finish để tạo project Java Application trong công cụ NetBeans IDE.
(Hình 3) Trên cửa sổ Projects, chuột phải vào Libraries chọn "Add JAR/Folder" để thêm thư viện
Mình sẽ cần phải thêm thư viện sqljdbc4-4.0.jar (nếu bạn không có, bạn có thể tìm kiếm và tải xuống trên Google).

Vậy mục đích thêm thư viện đó để làm gì? Thư viện đó sẽ đóng vai trò là cầu nối giúp kết nối cơ sở dữ liệu với ứng dụng Java của chúng ta.
(Hình 4) Đây sẽ là cửa sổ sau khi thêm thư viện hoàn tất
Để có thể thực hiện các chức năng CRUD thì đương nhiên việc đầu tiên của chúng ta là kết nối đến cơ sở dữ liệu, tạo một Database và thêm một Table.

Để làm được điều này, bạn cần chọn tab Services. Sau đó nhấn chuột phải vào dòng Database và chọn New Connection...

(Hình 5) Tạo một kết nối mới đến cơ sở dữ liệu
Trong cửa sổ New Connection Wizard ở trong dòng Driver thì các bạn chọn dòng New Driver...
(Hình 6) Khởi tạo kết nối sử dụng driver (thư viện)
Chúng ta sẽ nhận thấy có thông báo Driver File is missing. Việc cần làm là thêm thư viện sqljdbc4-4.0.jar cho nó bằng cách chọn nút Add và thêm vào.
(Hình 7) Thêm tập tin thư viện đã tải về
Sau đó mình sẽ đặt tên cho kết nối này là Microsoft SQL Server 4.0 và nhấn OK sau đó nhấn Next trong cửa sổ kế.

(Hình 8) Đặt tên cho kết nối
Để có thể thực hiện như hình 9, bạn cần phải tìm hiểu "Mở port 1433 cho MS SQL Server" và "Bật mixed authentication SQL Server".

Trong mục host bạn hãy gõ địa chỉ IP của SQL Server bạn muốn kết nối tới, nếu bạn cài đặt MSSQL Server ngay trên máy bạn thì bạn chỉ cần gõ localhost, mình kết nối thông qua máy khác nên mình sẽ gõ IP khác.

Hãy để mục Port là 1433. Đặt tên cho mục Database là master.
Phần User Name thì bạn đặt là sa có nghĩa là system admin.
Phần Password đặt theo như cách bạn đặt từ trước theo tài khoản sa.

Sau khi hoàn tất, hãy nhấn nút Test Connection để xác thực kết nối, nếu thành công thì cửa sổ sẽ hiện Connection Succeeded và nhấn nút Next.
(Hình 9) Kết nối thử nghiệm thành công đến cơ sở dữ liệu
Trong mục Select schema hãy chọn dbo và nhấn nút Finish.
(Hình 10) Lựa chọn schema phù hợp
Nếu cuối cùng cửa sổ hiện như thế này là bạn đã tạo một kết nối thành công đến cơ sở dữ liệu!
(Hình 11) Một kết nối đến CSDL đã được tạo thành công
Chúng ta cần phải tạo một cơ sở dữ liệu riêng và sau đó sẽ tạo một bảng (Table) bằng cách sử dụng các lệnh SQL (bạn có thể Google để học thêm lệnh SQL).

(Hình 12) Execute Command.
Chọn Execute Command để thực thi các lệnh SQL.

(Hình 13) Tạo một cơ sở dữ liệu có tên là Schools
Sau khi cửa sổ truy vấn lệnh SQL được xuất hiện, mình sẽ tạo một cơ sở dữ liệu mới có tên là Schools bằng lệnh CREATE DATABASE Schools và sau đó nhấn biểu tượng Run SQL để thực thi truy vấn này!
(Hình 13) Thực thi truy vấn
Cơ sở dữ liệu chúng ta mong muốn đã được tạo, để sử dụng thường xuyên cơ sở dữ liệu này. Bạn cần phải chuột phải vào cơ sở dữ liệu muốn đánh dấu là quan trọng và sau đó chọn Mark as important là cơ sở dữ liệu của bạn sẽ được đưa lên đầu.
(Hình 14) Đánh dấu quan trọng cho cơ sở dữ liệu
Sau đó quay lại bảng gõ lệnh truy vấn, gõ lệnh USE Schools và nhấn nút Run selection bên cạnh nút Run SQL và gõ tiếp lệnh tạo một bảng Students như hình dưới và sau đó thực thi.
(Hình 15) Thực thi lệnh SQL để tạo bảng Students
Để kiểm chứng cơ sở dữ liệu chúng ta có hoạt động bình thường hay không thì hãy thử thêm một dữ liệu đúng đắn vào bảng.
(Hình 16) Thử thêm dữ liệu cho bảng Students
Nếu đã thành công thì hãy quay lại tab Projects và chuột phải vào Project DemoJPA đã tạo trước đó và chọn New > Other...
(Hình 17) Thêm mới một class định sẵn
Sau đó chọn mục Persistence và chọn kiểu tệp tin là Entity Classes from Database và nhấn nút Next.
(Hình 18) Tạo một class
Chúng ta cần phải tạo một đối tượng tương ứng với bảng trong cơ sở dữ liệu, nên chúng ta phải ánh xạ nó thông qua kết nối database. Chọn New Database Connection... và thực hiện thao tác kết nối đến cơ sở dữ liệu Schools mà đã tạo trước đó theo hình 7-8-9-10.
(Hình 19) Ánh xạ bảng với đối tượng cần tạo
Kết nối đến cơ sở dữ liệu thành công, chúng ta cần phải thêm bảng Students từ bên trái qua nên chúng ta chọn nút Add > để thêm và nhấn Next!
(Hình 20) Chọn một bảng có sẵn trong CSDL
Ở cửa sổ kế tiếp, hãy nhấn Next. Nếu bạn muốn tìm hiểu sâu hơn thì hãy Google với những từ khoá trong hình.
(Hình 21) Thiết lập Entity Class
Hãy để mặc định đối với lựa chọn ánh xạ và nhấn Finish để hoàn tất tạo một Entity Class.
(Hình 22) Thiết lập tuỳ chọn ánh xạ cho Entity Class
Chúng ta sẽ thấy có thêm các tệp tin persistence.xml, Students.java và các thư viện EclipseLink JPA được thêm vào Project. Nhấp đôi vào class Students để xem cấu trúc của nó.
(Hình 23) Cấu trúc của một Project sau khi generate JPA Entity Classes
Đừng sợ nếu bạn gặp nhiều cái lạ, nếu bạn đã học lập trình hướng đối tượng với Java thì đây chính là một đối tượng thông thường không hơn không kém. Hãy để ý đến @NamedQueries, nó sẽ giúp chúng ta nhiều việc rất nhẹ nhàng!
(Hình 24) Cấu trúc của đối tượng Students
Để có thể thực hiện các thao tác CRUD thì chúng ta cần một class để quản lí các Students, hãy tạo một class mới! Tạo một Java Class thông thường với tên là StudentsManager và nhấn Finish.
(Hình 25) Tạo một Java Class
(Hình 26) Tạo một Java Class - 2
Áp dụng interface Serializable vào class của chúng ta và chuột phải chọn mục Insert Code sau đó chọn Use Entity Manager để tạo những phương thức quản lí Entity của chúng ta.
(Hình 27) Use Entity Manager
Một phương thức thêm đã được tạo, để có thể sử dụng sửa/xoá/tìm kiếm thì chúng ta cần phải đẩy EntityManagerFactory làm biến dùng chung.
(Hình 28) Phương thức persist được sinh ra
(Hình 29) Biến emf được đặt làm thuộc tính của class StudentsManager
Mình sẽ làm thêm phương thức tìm Students dựa trên ID như hình 30. Tham số thứ 2 mà phương thức find của biến EntityManager nhận vào là khoá chính của một bảng trong cơ sở dữ liệu và chúng ta sẽ có một Students có đầy đủ các thuộc tính.

(Hình 30) Phương thức tìm kiếm dựa trên ID
Đã tìm kiếm dựa trên ID thì chúng ta làm luôn tìm kiếm tất cả và trả về một danh sách các Students.
(Hình 31) Xây dựng phương thức trả về danh sách các Students
(Hình 32) Xây dựng phương thức xoá Students dựa trên ID

(Hình 33) Xây dựng phương thức cập nhật tuổi Students dựa trên ID
Ở hình 34, mình có sử dụng biến tham số partName để đặt giá trị cho biến đấy, cùng với hình 31 hãy tham khảo trong class Students ở phần @NamedQueries nếu bạn muốn tìm hiểu thêm.
(Hình 34) Xây dựng phương thức trả về danh sách các Students có trùng phần tên/tên

Mình đã hoàn tất tạo phương thức CRUD hữu dùng nhất cho các bạn, các bạn có thể tuỳ biến theo ý thích và không giới hạn tư duy!

Mình sẽ thử nghiệm các phương thức này trong class có chứa phương thức main của mình.

(Hình 35) Thử nghiệm các phương thức vừa tạo trong main
Kết quả thu được trong output hoàn toàn đúng như những gì chúng ta đã lập trình!

(Hình 36) Output
Đừng giới hạn bản thân mình với những phương thức mình cho sẵn, hãy tạo thêm những phương thức tuyệt vời khác nữa.

Bạn hãy nên ngâm cứu thêm và JDBC (Java DataBase Connectivity), JPA (Java Persistence API) nếu muốn tìm hiểu nhiều cái mới hơn.

Từ đó có thể nghiên cứu thêm về ORM Framework khác như là Hibernate thay vì EclipseLink JPA.


Chúc các bạn học tốt!


Không có nhận xét nào :

Đăng nhận xét