Tình huống khá phổ biến trong các ứng dụng của chúng tôi là một số thực thể phải được đại diện bởi một enum: ví dụ: loại, danh mục, trạng thái và những thứ tương tự.Làm thế nào để xử lý trùng lặp giữa java enum và bảng cơ sở dữ liệu?
Thông thường, có các điều kiện hoặc luồng trong mã sử dụng các giá trị để quyết định giữa hành động này hoặc hành động khác, vì vậy giá trị phải được "biết" theo cách nào đó cho ứng dụng (tức là nó phải có khả năng tham khảo cho một cá thể cụ thể để quyết định thay vì tham chiếu toàn bộ lớp). Đó là lý do tại sao chúng tôi sử dụng enums thay vì chỉ là một lớp học bình thường.
Vấn đề là các thực thể này cũng cần phải được lưu trữ (hoặc ít nhất được tham chiếu) trong cơ sở dữ liệu, dưới dạng các trường của các thực thể khác. Chúng ta thường tạo một bảng cho mỗi thực thể, để có khả năng kiểm tra tính toàn vẹn tham chiếu trong các cột này, và cũng có nghĩa là dữ liệu có nghĩa "chỉ" trong cơ sở dữ liệu mà không cần tham khảo enum để tìm hiểu ý nghĩa của từng id .
Lý tưởng nhất, dữ liệu cho các thực thể này phải được điền từ dữ liệu trong enum, nhưng ngày nay chúng tôi có các giá trị được nhân bản trong các tập lệnh khởi tạo db.
Nó trở nên phức tạp hơn một chút khi sử dụng ORM như Hibernate.
Tôi muốn biết cách người khác xử lý loại tình huống này.
Tôi không hoàn toàn thoải mái với ý tưởng có một sự trùng lặp giữa một bảng enum và một bảng cơ sở dữ liệu, nhưng tôi vẫn chưa tìm được giải pháp tốt hơn.
Điều này đã được hỏi nhiều lần trước đây - nhìn vào các liên kết "có liên quan" ở phía bên tay phải –