Mặc dù có thể là một câu hỏi tầm thường, tôi luôn tự hỏi về điều này.DAO/kho lưu trữ: Giá trị trả lại thực tế tốt sau khi chèn/cập nhật
Thông thường, sau khi chèn vào db, có vẻ thực tế phổ biến để trả lại id của pháp nhân kinh doanh.
@Override
public Long createUser(UserEntity user) {
em.merge(user);
em.flush();
return user.getId();
}
Có lý do thuyết phục để trả lại id thay vì tham chiếu đối tượng doanh nghiệp không?
Tương tự, tôi đã thấy update
trả lại void
, trong khi đó cũng có thể là id/Người dùng.
Nếu tôi đã viết DAO/Repository để người khác sử dụng, giá trị trả lại được thông báo (nếu có) là gì và tại sao?
hợp nhất rời khỏi thực thể được truyền tách ra, sao chép trạng thái đó thành một thực thể được quản lý và trả về thực thể được quản lý. Trả lại ID là vô dụng: người gọi đã biết nó vì nó đã truyền nó trong thực thể. Những gì người gọi cần là thực thể được quản lý được tạo hoặc cập nhật. –
@JBNizet Cảm ơn điều đó có ý nghĩa. – Trace
Đúng, trọng tâm là ở đây trên thực tế là lệnh hợp nhất trả về đối tượng thực thể đã hợp nhất. Theo tôi thì đó là cách thực hành tốt nhất. Chỉ cần trả về đối tượng UserEntity được trả về bởi lệnh merge. Lý do cho điều này là nó thường là một thực hành tốt không phải để thay đổi một đối tượng thông qua như một tham số. Vì vậy, bạn có lẽ nên mong đợi phương pháp hợp nhất không thay đổi đối tượng được truyền. Và luôn luôn trở về cùng một đối tượng không thay đổi gì (hoặc một phần của nó), đã được truyền cho phương pháp của bạn có thể không có mục đích. – Frank