Ví dụ: có cột số nguyên trong bảng cơ sở dữ liệu. Sau đó, trong mô hình java, nó có thể được ánh xạ cả hai dạng nguyên thủy int và Số nguyên. Câu hỏi của tôi là sự khác biệt giữa int và Integer trong trường hợp này là gì? Và mối quan tâm hiệu suất? Cảm ơn!Sự khác biệt giữa lớp nguyên thủy và lớp bao bọc trong ánh xạ cột JPA (Hibernate) là gì?
6
A
Trả lời
6
Tôi có xu hướng tránh sử dụng nguyên thủy. Điều này đặc biệt đúng đối với thuộc tính Id. Điều này làm cho nó có thể phát hiện một giá trị chưa được thiết lập bằng cách kiểm tra cho null
. Nếu sử dụng Java 5 trở lên, auto-boxing sẽ lấy đi nỗi đau (và không phải là mối quan tâm về hiệu năng). Nhưng cũng cho các thuộc tính khác. Như được chỉ ra bởi @skaffman, các nguyên thủy không phù hợp với các cột không có giá trị và tôi thích mã linh hoạt nhất có thể.
3
Bạn đã đề cập đến sự khác biệt - Integer
có thể là null
, int
không thể. Vì vậy, nếu cột cơ sở dữ liệu của bạn là nullable, thì bạn nên sử dụng Integer
.
Về hiệu suất, tôi sẽ không lo lắng về điều đó. Các máy ảo hiện đại rất tốt ở loại điều đó.
tất nhiên, tôi biết rằng nó sẽ xảy ra một ngoại lệ khi int nguyên thủy đáp ứng giá trị null trong cơ sở dữ liệu. –