Thường hữu ích khi có một trường trong DAO có giá trị đến từ kiểu liệt kê Java. Một ví dụ điển hình là một DAO đăng nhập nơi bạn thường có một trường đặc trưng cho người dùng là "BÌNH THƯỜNG" hoặc "QUẢN TRỊ VIÊN". Trong Hibernate, tôi sẽ sử dụng 2 đối tượng sau để thể hiện mối quan hệ này theo cách an toàn (semi-) typeafe:
class User {
String username;
String passwd;
UserType type;
}
class UserType {
private enum Type {ADMIN, NORMAL};
private String type;
//Setters/Getters for Hibernate
public void setType(String type);
public String getType();
//Setters/Getters for user
public void setUserType(UserType.Type t);
public UserType.Type getUserType();
public static UserType fromType(UserType.Type t);
}
Điều này hoạt động, nhưng tôi thấy lớp UserType không phù hợp và đòi hỏi quá nhiều sự quan liêu chỉ để lưu trữ một vài giá trị. Tốt nhất, Hibernate nên hỗ trợ trực tiếp các trường enum và sẽ tạo thêm một bảng để lưu trữ các giá trị kiểu liệt kê.
Câu hỏi của tôi là: Có cách nào để ánh xạ trực tiếp một lớp liệt kê trong Hibernate không? Nếu không, mô hình của tôi để biểu diễn các bảng liệt kê có đủ tốt hay tôi đang thiếu thứ gì đó? Người ta sử dụng những mẫu nào khác?