休止状態で新しいシステムを設計する予定です。たとえば、マッピングを使用して休止状態のクラスを作成した場合
@Entity
@Table(name="user")
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer userid;
private String username;
private String password;
@OneToOne
private Role userrole;
.....
}
役割クラスを追加
@Entity
public class Role {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String roleName;
...
}
この場合、ユーザーをデータベースに追加するたびに、db からロール オブジェクトを取得し、ユーザー オブジェクトに追加して保存する必要があります。このようなマッピングを他の複雑な設計クラスに定義すると、関連するマップされたクラスを db から取得する必要があります。これはdbへの余分な負荷のように感じます。効率的にそれを行う方法はありますか?
休止状態のマッピングなしで行う別の計画があります
@Entity
@Table(name="user")
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer userid;
private String username;
private String password;
private Integer roleid;
....
}
この場合、id をユーザー オブジェクトに追加して保存するだけです。ただし、db クラスはマップされません。すべてのクラスに対してそれを行うと、db内にマッピングせずにdbテーブルが作成されます。ロール名を取得するためにこれを行うと、ロールを取得するために別のSQLを作成する必要があります。
したがって、オブジェクトを保存する最初のアプローチでは、オブジェクトを取得して保存し、2 番目のアプローチでは、2 つのオブジェクトを取得するために 2 つの SQL を作成する必要があります。これはそれを実装する良い方法ですか?
これらの 2 つの設定のうち、効率的で使いやすいのはどれでしょうか。推奨される方法について何か議論してください。