2009-03-27 18 views
10

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.

+1

Đ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 –

Trả lời

2

Hãy thử câu trả lời cho câu hỏi này: Ways to save enums in database

+0

Đó là một câu hỏi rất giống, tôi chưa từng tìm thấy nó trước đây. Tuy nhiên, có vẻ như không có giải pháp dễ dàng, vì không có câu trả lời nào có vẻ giải quyết được vấn đề. – Sam

1

Tôi có cùng một vấn đề đối với JPA tôi/Hibernate ứng dụng. Những gì tôi làm là tự động tạo mục enum trong cơ sở dữ liệu khi chúng gặp phải. Trong này là nó tự động điền khi cần thiết.

Các vấn đề liên quan