2017-01-09 2 views
0

현재 일대 다 관계가있는 테이블로 작업하고 있으며 최대 절전 모드를 사용하여이 모든 것을 구현하려고합니다.여러 일대 다 관계에 대한 올바른 최대 절전 구현

예를 들어

, 세 개의 테이블 내가있는 한 :

제품, 사용자, 그룹

그룹

제품이 하나에 또한 사용자와의 일대 다 관계에있다 많은 사용자와의 관계

사용자가 Product와 Group 모두와 다 대일 관계에 있으므로 Users.java의 현재 구현이 두 개의 ManyToOne 주석을 포함하여 올바른 구현 방법이 될까요?

또한 getToThone 주석을 get 메소드 (이 경우 getProduct() 및 getGroup() 위) 바로 위에 쓰거나 클래스 변수 바로 위에 쓰는 것이 더 낫습니까?

@Entity 
@Table(name = "users") 
public class Users { 
    @Id 
    @Column(name = "id") 
    @GeneratedValue 
    private int id; 

    @ManyToOne 
    @JoinColumn(name = "product_id") 
    private Product product; 

    @ManyToOne 
    @JoinColumn(name = "group_id") 
    private Group group; 

    @Column(name = "user_name") 
    private String userName; 


    public Users(){} 

    public Users(Product product, Group group, String userName) { 
     this.product = product; 
     this.group = group; 
     this.userName = userName; 
    } 

    public int getId() { 
     return id; 
    } 

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

    public product getProduct() { 
     return product; 
    } 

    public Group getGroup(){ 
     return group; 
    } 

    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

} 

감사합니다. 사용자 이후

답변

1

는 Users.java 내 현재의 구현이 ManyToOne 주석을 포함하여 구현의 올바른 방법이 될 것입니다, 제품 및 두 그룹 다 대일 관계에?

그렇습니다. 기본 ManyToOne 매핑을 원할 경우 올바른 방법이며 클래스에 둘 이상의 ManyToOne 매핑을 포함 할 수 있습니다.
Cascading 또는 FetchType이 필요하거나 다른 클래스 (targetEntity)가 정의되어야하는 경우 추가해야합니다. 또한

, 그것은 바로 get 메소드 위의 ManyToOne 주석을 작성하는 것이 좋습니다 (getProduct (이상,이 경우에는)과 getGroup 위()) 또는 바로 클래스 변수 위를 기록하는?

주로 개체를 저장하기 전에 일부 처리를 수행할지 여부에 따라 달라집니다.
개체의 값이 null 인 경우 DB에 기본값을 보내는 것과 같습니다.

개인적으로 클래스 변수에 최대 절전 모드 주석을 사용하는 것이 좋습니다. Here은 이것을 명확하게 설명하는 링크입니다.

당신이 취하는 어떤 접근 방식이든, 최대 절전 모드는 다른 필드에 대해 선택해야하는 스캔을 결정하기 위해 @Id 주석이 정의 된 곳 (메소드 또는 가변 레벨에서)을 찾습니다.

Spring documentation에 제공된 몇 가지 세부 정보를 붙여 넣는 것은 동일한 질문이지만 다소 봄을 다루는 것입니다.

방법 및 필드 레벨 사출 클래스 내에 필드 또는 방법에 적용 할 수

의존성 주입 (예 @PersistenceUnit 등 및 @PersistenceContext)를 나타내는 특수

따라서 표현 "메소드/필드 레벨 주사 ". 필드 수준의 주석은 간결하고 사용하기 쉽고 메서드 수준에서는 주입 된 종속성을 처리 할 수 ​​있습니다. 두 경우 모두 회원 공개 여부 (공개, 보호, 비공개)가 과 관련이 없습니다.

관련 문제