- Giới thiệu
- Cài đặt
- JPA Meta Model
- Predicate
Giới thiệu
Trong bài viết trước, tôi đã giới thiệu với các bạn vềCriteria APIcủaHibernate.
- Hibernate là gì?
- Hướng dẫn sử dụng Criteria API trong Hibernate
Trong phần này chúng ta sẽ tìm hiểu một số các phần cần thiết khác trongCriteria API, thứ giúp cho bạn xây dựng query một cách đơn giản hơn.
Trong bài có sử dụng:
- Lombok
Cài đặt
Nhớ thêmspring-boot-starter-data-jpavào dependencies của bạn.
Trong phần này, tôi xàiH2 databaseđể demo. [H2 là dạng memory database, nó sẽ lưu trong ram và khi tắt chương trình nó sẽ mất sạch]
Đặc biệt, chú ýhibernate-jpamodelgen, tôi sẽ giải thích tác dụng của nó trước.
JPA Meta Model
trongbài trướcmọi người cũng biết cách cấu trúc của một câu query trong Criteria API:
Lúc này query của chúng ta sẽ như thế này:
Để ý thì có thể thấy, khi muốn lấy columncityđể kiểm tra, chúng ta đang hardcode bằngString.
Có một số bất lợi khi làm vậy, thứ nhất là bạn phải tự nhớ tên các column mỗi khi gọi, thứ hai là bạn sẽ phải tìm kiếm tất cả các chỗ sử dụng mỗi sửa đổi tên cột.
Cách giải quyết hay nhất là tham chiếu tên các column củaTablevào mộtObjectđể chúng ta có thể gọi tới mỗi khi sử dụng. Khi có sự thay đổi, chỉ cần thay đổi trong đối tượng này là xong. Đối tượng biểu diễn này được gọi làMeta Model.
Và rất may là Hibernate hỗ trợ chúng ta tự động generate ra các Meta Model từ các class@Entity
Ví dụ:
Chúng ta có Class EntityUser
User.java
Thì class Meta Model củaUsersẽ tên làUser_và có cấu trúc như sau:
Để có thể Generate ra các class Meta Model, bạn sẽ cần thêm dependencyhibernate-jpamodelgenvào project của mình.
Khi build jar nó sẽ tự động generate thêm cho bạn
Để có thể sử dụng trong IDE, bạn có thể Config Annotation Processor [Giống với Lombok], để IDE hiểu và tự động generate ra giúp bạn lập trình dễ hơn.
Predicate
Để có thể xây dựng câu truy vấn một cách trọn vẹn, bạn cần biếtPredicate.
Tạm hiểu một cách đơn giản thìPredicatelà một mệnh đề điều kiện trong câu lệnh truy vấn.
Như ví dụ ở dưới đây:
Predicatecó thể liên kết với nhau bằng các phép quan hệand,or,not, v.v..
Ví dụ:
Tới đây bạn đã nắm được cơ bảnCriteria APIvà đã có thể tự sử dụng nó trong đa số các câu lệnh đơn giản.
Trong bài tiếp theo, tôi sẽ hướng dẫn nốt các join bảng nữa thôi là bạn sẽ mas con ông ter.
Nếu có, toàn bộ project / code mẫu được lưu trữ tại GitHub
Đây là một bài viết trong
Nếu bạn phát hiện bài viết có lỗi hoặc outdated, hãy báo lại giúp mình theo email: hoặc qua Nam Hoàng Nguyễn [facebook.com]