Khi bạn có một thực thể, chẳng hạn như UserEntity, ai là tài sản id
có nguồn gốc từ khóa chính của nó trong db - bạn có nên cung cấp phương thức setter như setId()
không?ID của đối tượng là đối số hàm tạo hoặc thông qua phương thức setter?
Một số lập luận chống lại:
- mở cửa để ghi đè bất ngờ có thể xảy ra UserEntities khác trong db
- hai (hoặc nhiều hơn) UserEntities thể tồn tại bất cứ lúc nào với cùng
id
nhưng khác nhau thuộc tính . (Nếu tôi kéo 3 thành viên khác nhau từ db và thiết lậpid
giá trị của họ với cùng)
Một số lập luận cho:
- nếu tôi không CÓ để nhanh chóng UserEntity với một
id
trong hàm tạo (vì nó có phương thức setter), tôi có thể sử dụng các phương thức của đối tượng UserEntity với các giá trị người dùng tạm thời/giả/mới ... mà không cần phải duy trì nó trước.
Cung cấp setter (và không bắt buộc id
trong hàm tạo) hoặc bắt buộc id
trong hàm tạo và xóa trình thiết lập?
Cảm ơn câu trả lời! Khi lớp persistence đặt danh tính, nó có nên thông qua constructor hay thông qua một setter không? Liệu thực thể có thể được khởi tạo mà không có danh tính? – johnnietheblack
Nó phải thông qua một setter hoặc thông qua sự phản ánh tùy thuộc vào ngôn ngữ. Và cần phải biết ngay rằng khi một thực thể thoáng qua trở nên dai dẳng, các đặc điểm bình đẳng của nó có thể thay đổi trong khi đối tượng vẫn còn trong bộ nhớ nếu ví dụ mã băm có nguồn gốc từ danh tính. – eulerfx