アクセスが制限されている通常のユーザーやフルアクセスの管理者など、さまざまな役割/権限を持つユーザーを定義する場合のベストプラクティスは何ですか?
私のユーザークラスは次のようになります。
@Entity
@Table(name = "users")
public class User {
@Id
@Column(name = "userID")
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private Long userID;
public Long getUserID() {
return userID;
}
@ManyToOne(fetch = FetchType.LAZY)
@Column(nullable = false)
private Role role;
@Column(nullable = false)
private boolean isActive;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String password;
@Column
@Temporal(TemporalType.TIMESTAMP)
private Calendar lastLoggedIn;
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Calendar createdDate;
@Version
private Integer version;
}
私の役割クラスは次のとおりです。
@Entity
@Table(name = "roles")
public class Role {
@Id
@Column(name = "roleID")
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private Long roleID;
@Column(nullable = false)
private String roleName;
@Column(nullable = false)
private String rolePermissions;
}
私のアプリケーションがユーザーとそのロールのリストを取得する必要があるとしましょう。ユーザーのインスタンスはロールのインスタンス(またはプロキシ)への参照を保持する必要がありますか?アプリケーションが特定のロールのすべてのユーザーを検索する必要がある場合、ロールにはユーザーのリストが必要ですか?この関係を設計および実装するための、試行錯誤された真の方法は何ですか?
また、JPAで正しくマッピングを行っていますか?