-
[JPA 2.0] OneToMany 설정하기개발 2014. 9. 30. 10:10반응형
고맙게도 JPA에서 조인을 지원해준다.
일단, USER 테이블, ROLE 테이블이 존재할때 관계를 생각하고...
아래와 같이 정의하면된다. 조인 테이블을 사용할지 안할지는 잘 생각해보고 이용하면 될듯.
@Entity
@Table
public class User implements Serializable {
@Id
@Column(name = "USER_ID")
private String id;
@Column(name = "USER_PASSWORD")
private String password;
@Column(name = "USER_NAME")
private String name;
@Column(name = "USER_EMAIL")
private String email;
@Column(name = "USER_MOBILE")
private String mobile;
/* Role 클래스에 User 멤버명을 지정한다.
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER)
*/
/* 릴레이션 관계가 있는 각 테이블의 컬럼 명을 지정한다.
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name="USER_ID", referencedColumnName="USER_ID")
*/
/* 조인 테이블을 지정하고 릴레이션 관계가 있는 각 테이블의 컬럼을 지정한다.
*/
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name = "AUTHORITIES", joinColumns = { @JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID", referencedColumnName = "ROLE_ID", unique = true) })
private Set<Role> roles;
}
@Entity
@Table(name = "SFT_ROLES")
public class Role extends AbstractDomain implements Serializable {
@Id
@Column(name = "ROLE_ID")
private String id;
@Column(name = "ROLE_NAME")
private String name;
@Column(name = "TARGET_ID")
private String targetId;
@Column(name = "ROLE_TYPE")
private String roleType;
@Column(name = "ROLE_DESC")
private String roleDesc;
@Column(name = "GROUP_ID")
private String groupId;
/* mappedBy 로 지정을 하면 필요함.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "USER_ID")
private User user;
*/
}
조인 테이블은 지정할 수도 있고 자동생성 되도록 놔둬도 된다.
참고로 조인되는 필드의 경우 @Id로 지정된 모든 필드가 조인 테이블에 존재해야한다.
@Entity
@Table
public class Authorities implements Serializable {
@Id
@Column(name = "USER_ID")
private String userId;
@Id
@Column(name = "ROLE_ID")
private String roleId;
}
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER)
반응형'개발' 카테고리의 다른 글
JSON과 Binary (0) 2014.10.05 Cross-Origin Resource Sharing (CORS) (0) 2014.10.05 [Jackson] TypeReference를 이용한 캐스팅 정보전달 (0) 2014.09.17 [Jackson] 따옴표가 붙지 않은 필드 처리 하기 (0) 2014.09.17 [Jackson] NULL 값 표현에 대한 처리 (0) 2014.09.17