Tôi có một singleton được lưu giữ trong cơ sở dữ liệu. Các thực thể tồn tại khác nên có tham chiếu đến singleton này. Làm thế nào nó có thể đạt được với Hibernate?Hibernate/persistence và singleton pattern
tôi đã kết thúc với một cái gì đó không-chưa-làm việc như thế này, giả mạo ID duy nhất của singleton:
@Entity
@Subselect("select '1' as ID")
class Singleton {
@Id
@Column(name="ID")
private Long getId() { return 1l; }
private void setId(Long id) { }
}
@Entity
@Table(name="ENT")
class MyEnt {
// TODO: how to annotate so that table ENT doesn't need foreign key column
Singleton s;
}
Vấn đề là tôi không muốn có một cột với khóa ngoại trong thực thể tham khảo Singleton - bởi vì singleton chỉ là một và chúng tôi không cần ID của nó ...
Có lẽ tôi đang suy nghĩ một cách sai lầm? Có lẽ nó là vấn đề kiến trúc sai? Bạn đã giải quyết vấn đề tương tự?
Có nhưng những gì nếu bạn cần phải khởi động lại bình đựng chất hay bạn có nhiều container? Làm thế nào để lưu trạng thái hiện tại của singleton? Hoặc thay đổi nó trong tất cả các thùng chứa? – ElderMael
Tôi có nghĩa là có đối tượng đó theo cách được thiết kế. Tất cả tôi đang cố gắng để nói rằng tôi không thấy bất kỳ lý do nào để ánh xạ điều này trong các thực thể khác. Tải đối tượng một lần và giữ trong bối cảnh ứng dụng. Nếu bạn tình cờ khởi động lại vùng chứa, hãy tải lại. –
1. Vì dữ liệu có thể thay đổi trong cơ sở dữ liệu (webapp có nhiều nút hơn) 2. vì thực thể cần singleton trong các phương thức logic nghiệp vụ của nó. Và tôi không muốn đặt nó vào "thủ công". Nó có thể được thực hiện bởi dịch vụ DAO cho các thực thể được nạp bởi dịch vụ DAO này, nhưng phải làm gì với các thực thể, được nạp gián tiếp (được tham chiếu bởi thực thể gốc)? – Jakub