使用枚举的优点

时间:2016-06-19 12:24:26

标签: java spring spring-mvc enums

我正在经历一个春天的休眠示例 http://websystique.com/spring-security/spring-security-4-remember-me-example-with-hibernate/

嗨,这里作者使用enum进行默认初始化(感谢JB Nizet理解这一点)。但是如果没有这个初始化它就可以正常工作。那么使用这个枚举还有其他任何好处吗?

使用枚举的代码

@Entity
@Table(name="USER_PROFILE")
public class UserProfile {

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id; 

    @Column(name="TYPE", length=15, unique=true, nullable=false)
    private String type = UserProfileType.USER.getUserProfileType();

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }


    @Override
    public int hashCode() {
    //hash code implementaion
    }

    @Override
    public boolean equals(Object obj) {
        //equals implementation
    }

    @Override
    public String toString() {
        return "UserProfile [id=" + id + ",  type=" + type  + "]";
    }


}

枚举实施

public enum UserProfileType {
    USER("USER"),
    DBA("DBA"),
    ADMIN("ADMIN");

    String userProfileType;

    private UserProfileType(String userProfileType){
        this.userProfileType = userProfileType;
    }

    public String getUserProfileType(){
        return userProfileType;
    }

}

(我最初的问题是如何调用getUserProfileType函数以及如何初始化枚举。感谢JB Nizet以前的评论。)

1 个答案:

答案 0 :(得分:0)

填充数据库的数据库脚本包含

INSERT INTO APP_USER_USER_PROFILE (user_id, user_profile_id)
SELECT user.id, profile.id FROM app_user user, user_profile profile
where user.sso_id='sam' and profile.type='ADMIN';

所以Sam有一个UserProfile,这个配置文件的类型是'ADMIN'。

UserProfile实体中的字段type已映射到表type的列user_profile