Bài báo ban đầu có vẻ ổn đối với tôi. Tuy nhiên, dựa trên các nhận xét, có vẻ như một số nhận xét liên quan đến Java enums có thể làm rõ một số điều.
Enum type trong Java là một lớp theo định nghĩa, nhưng nhiều lập trình viên có xu hướng quên điều này, bởi vì họ thích liên hệ nó với "danh sách các giá trị được phép" như trong một số ngôn ngữ khác. Nó còn hơn thế nữa.
Vì vậy, để tránh những câu lệnh switch đó, có thể hợp lý khi đặt một số mã và phương thức bổ sung trong lớp enum. Hầu như không bao giờ cần tạo một "lớp thực giống enum" riêng biệt.
Cũng nên xem xét điểm của tài liệu - bạn có muốn ghi lại ý nghĩa thực sự của enum của bạn trong cơ sở dữ liệu không? Trong mã nguồn phản ánh các giá trị (kiểu enum của bạn) hay trong một số tài liệu bên ngoài? Cá nhân tôi thích mã nguồn hơn.
Nếu bạn muốn trình bày các giá trị enum dưới dạng số nguyên trong cơ sở dữ liệu do tốc độ hoặc lý do nào đó, thì ánh xạ đó cũng phải nằm trong enum Java. Bạn sẽ nhận được ánh xạ tên chuỗi theo mặc định và tôi đã hài lòng với điều đó. Có một số thứ tự được liên kết với mỗi giá trị enum, nhưng việc sử dụng trực tiếp số đó làm ánh xạ giữa mã và cơ sở dữ liệu không sáng sủa lắm, vì số thứ tự đó sẽ thay đổi nếu ai đó sắp xếp lại các giá trị trong mã nguồn. Hoặc thêm các giá trị enum bổ sung vào giữa các giá trị hiện có. Hoặc loại bỏ một số giá trị.
(Tất nhiên, nếu ai đó thay đổi tên của enum trong mã nguồn, ánh xạ chuỗi mặc định cũng trở nên sai lệch, nhưng điều đó ít có khả năng xảy ra vô tình hơn. Và bạn có thể dễ dàng bảo vệ khỏi điều đó nếu cần bằng cách kiểm tra thời gian chạy và kiểm tra các ràng buộc trong cơ sở dữ liệu như đã đề xuất ở đây.)