Avatar
0
Cường Nguyễn Hữu Beginner
Tối ưu truy vấn trong JPA
FetchType.EAGER và FetchType.LAZY trong JPA. Để tăng hiệu năng thì em hay dùng FetchType.LAZY trong Entity. Nhưng khi phải lấy ra các đối tượng liên quan thì mỗi lần .get...() lại tạo ra 1 câu truy vấn mới. Có cách nào ngoài criteria query và native query để nó truy vấn 1 lần không ạ, 2 cách kia viết dài quá
  • Answer
Remain: 5
1 Answer
Avatar
monkey Beginner
monkey Beginner
anh đang hiểu là em dùng kiểu này nhỉ?

class User {
  long userId,
  List orders;
}

Cách này chỉ dùng cho các cơ sở dữ liệu nhỏ thôi em ạ, nếu nó lên hàng triệu bản ghi, mỗi lần em gọi getOrders() phát là tèo luôn vì dữ liệu quá lớn.

Trong thế giới hiện đại ngày này, ví dụ dự án blockchain của anh lên đến hàng chục triệu, trăm triệu bản ghi thì cách này không ổn.

Em cần phải tổ chức dữ liệu ở dạng flat:

class User {
  long userId
}

class Order {
  long orderId
}

Sau đó truy vấn dữ liệu Order theo pagination, như vậy thì dữ liệu có hàng tỉ cũng không đáng ngại em ạ.

  • 2
  • Reply