Written By: Nguyễn Đức Thắng (Java 15)
Gmail: duwcsthang2001@gmail.com
Phone : 033.265.2238


Lời Mở Đầu

khi học hoặc tìm hiểu qua về Spring Data JPA thì ta sẽ gặp phải một số trong các việc như :

  1. Khởi tạo , Định nghĩa Entity bằng câu lệnh , viết các câu Query , hoặc là thể hiện mối quan hệ giữa các Entity
  2. Tạo ra nhiều bảng ghi trong một Entity để truy vấn , vì sẽ có những câu truy vấn mà phải trả về kết quả là lớn hơn 5 , 6 bàn ghi để chúng ta kiểm tra độ chính xác của câu truy vấn . …

Các công việc trên tuy đơn giản nhưng tốn ko ít thời gian của chúng ta ví dụ khi bạn có 1 Entity chứa 5 6 thuộc tính và phải nhập đến 8 9 bản ghi mà ko phải lúc nào cũng có thể điền hết dữ liệu hợp lí vào đó được …
Ở phần tiếp theo tôi sẽ thực hiện một số công việc có thể sẽ giúp ích cho bạn trong việc giải quyết các vấn đề trên nhé :'D

Một số tips thông dụng

dưới đây tôi sẽ giới thiệu qua về một số công cụ hoặc cách làm đơn giản để chúng ta có thể tạo ra các bản ghi trong cơ sở dữ liệu hoặc viết ra câu truy vấn đơn giản nhưng mang lại hiệu quả về mặt thời gian cho các bạn nhé

sử dụng Công cụ JPA Buddy

lý do nên sử dụng JPA Buddy

là một trong những plugins mà IDE Intellij khuyến nghị nên sử dụng , công cụ này giúp chúng ta Render ra mọi thử từ tạo Entity , tạo mối quan hệ , tạo Entity Respository , chuyển đổi Entity DTO , … và một số tác dụng khác

Cách cài đặt

Cách 1 : Vào Settings -> Plugins -> Sreach từ khóa JPA Buddy -> Install và Reset IDE
Cách 2 : Import dependency vào file pom để sủ dụng

Các sử dụng

1. - Tạo Entity :

  chọn Package của bạn mong muốn lưu các Entity , chọn New -> chọn JPA Entity sẽ hiện ra bảng sau

a
Ở phần Name : điền tên Entity tương ứng
Ở phần Id : chính là phần chọn kiểu dữ liệu cho khóa chính của bạn
Id generation : ở đây bạn nên chọn Identity (Tự tăng) hoặc Auto (Ngẫu nhiên) điều này khi nhập dữ liệu , trường khóa chính sẽ tự động đc nhập mà không sợ trùng lặp
Sau khi nhập thông tin , JPA Buddy sẽ render ra chúng ta 1 class như sau : a
click thanh cộng cụ ở trên chỗ import của class sẽ hiện ra các button cho chúng ta có thể lựa chọn
a

  • Thêm các thuộc tính cho Entity :
    chọn Add Entity Attribule -> Basic Type để tạo ra thuộc tính + chọn trường dữ liệu cho Entity
    a
    2 . Tạo ra class Repository

click vào button gần cuối thanh công cụ chọn Spring Data Respository

  • a
    -Tạo các mối quan hệ giữa các bảng
    chọn Add Entity Attribule -> Association -> sẽ hiện nên bảng như dưới
    a
    ở đây JPA Buddy sẽ hỗ trợ render cho các Mối quan hệ Many To Many (Nhiều - Nhiều ) , One To One (một - một) và One to Many (một nhiều ) . tùy vào mục đích sử dụng mà chọn cho hợp lí
    3 . Tạo câu lệnh Query
    click Add New Query -> sẽ hiện ra các lựa chọn query cho chúng ta như Find , Get , … sau khi chọn 1 trong những Query sẽ hiện ra bảng sau
    a
    Conditions : ở đây sẽ chọn điều kiện so sánh
    Ở mục Order Attribute : chọn các tiêu chí sắp xếp
    4 . Tạo ra Entity DTO
    đối tượng DTO chúng ta cần tạo ra để khi trả dữ liệu về hoặc công khai đối tượng những không muốn hiện thị nên hết thuộc tính của đối tượng (ví dụ : CCCD , hay Số Điện thoại ) . Ở công cụ JPA Buddy sẽ giúp chúng ta tạo ra Class Entity DTO như sau :
    Cick vào DTOs and Spring Data Projection sẽ hiện ra bảng sau :
    a
    Ở khung dưới chọn các thuộc tính mà bạn muốn public để khởi tạo DTO

Ngoài ra , công cụ này còn hỗ trợ cho chúng ta khá nhiều các tính năng khác , bạn có thể tìm hiểu thêm ở https://www.jpa-buddy.com/documentation/

Sử dụng Faker để khởi tạo dữ liệu

như chúng ta có bàn ở trên , khi chúng ta sử dụng một số câu lệch truy vấn phức tạp , hoặc đơn giản cần tính chính xác thì phải truy vấn vào một database có sẵn các bản ghi đủ lớn để đòi hỏi điều kiện lọc chính xác , tuy nhiên thì việc nhập dữ liệu cho database thì khá là mất thời gian , may mắn thay chúng ta đã có sẵn 1 class chứa các Method đã dạng có thể cung cấp các dữ liệu cho mọi Entity đó là Class Faker

  1. Cách cài đặt
    bạn hãy thêm dependency Faker ở dưới đây vào file pom để có thể sử dụng được class này nhé
  2. Cách sử dụng
<dependency>
			<groupId>com.github.javafaker</groupId>
			<artifactId>javafaker</artifactId>
			<version>1.0.2</version>
		</dependency>

vào trong Class Test ở Project Sping Boot , thêm @Test vào function , ở đây tôi sẽ thêm 30 bản ghi vào 1 Entity Student có các thuộc tính : Id, name , email (thuộc tính id tôi đã để tự tăng )
a

Sau khi chạy function này chúng ta sẽ có được kết quả trong Database của chúng ta
a

sử dụng @DataJpaTest để kiểm tra câu truy vấn

ngoài cách dùng Postman hoặc khi ta chưa tạo Client để xử lí việc gọi và truy vấn dữ liệu , bạn hãy vào trong class Test thêm các Component này để chạy và thử các câu truy vấn nhé . điều này sẽ giúp Project của chúng ta không phải khởi tạo hết các Component và chỉ khởi tạo các Component cần thiết để hoạt động cho quá trình truy vấn

@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Rollback(value = false)

thêm @Test vào function mà bạn muốn test , giờ chúng ta viết câu truy vấn để chạy thôi :D
a

Tổng Kết

trên đây là một số cách khá đơn giản để tối ưu được thời gian viết code cũng như hỗ trợ bạn làm quen khi học về Spring Data JPA , nếu bạn có một số tips hay hoặc nhanh hơn thì hãy chia sẻ ở bên dưới phần bình luận nhé !! xin chào tạm biệt các bạn :D