🍀Spring/JPA

연관관계 매핑시 고려할 점 3가지다중성다대일 : @ManyToOne일대다 : @OneToMany일대일 : @OneToOne다대다 : @ManyToMany => 다대다는 실무에서 사용하면 안된다. 단방향, 양방향- 테이블외래키 하나로 양쪽 Join이 가능하다. 사실상 방향이라는 개념이 없다. - 객체참조용 필드가 있는 쪽에서 참조 대상으로만 참조가 가능하다.한 쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향이다. 연관관계의 주인테이블은 외래 키(FK) 하나로 두 테이블의 연관관계를 맺고 있다.하지만, 객체의 양방향 관계는 A->B, B->A 처럼 참조가 2군데에서 필요하다. => 둘중 테이블의 FK를 관리할 곳이 필요하다. 연관관계의 주인 : 외래 키를 관리하는 참조주인의 반대편 : 외래 키에 영향을 ..
연관관계의 주인테이블은 외래 키 하나로 두 테이블의 연관관계를 관리한다. 그러나 객체는 양방향으로 사용시 각 개체가 서로를 참조해야 한다. 즉, 참조가 두번 필요하다. 객체를 테이블에 매핑할 때에 두 객체중 어떤 객체로 외래 키를 관리해야 하는지에 대한 고민이 생긴다. 여기서 외래 키를 관리하게 되는 객체를 연관관계의 주인이라 부른다.   연관관계의 주인을 정하는 법연관관계의 주인을 정할 때는, 테이블의 외래 키가 있는 곳으로 정해야 합니다.그리고 데이터베이스 테이블의 다대 일, 일대 다 관계에서는 항상 다 쪽이 외래 키를 가집니다.데이터베이스는 컬렉션을 담을 수 없기에, 일 쪽에서 외래 키를 가지는 것이 불가능합니다.  양방향 매핑 시 주의할 점양방향 매핑 시 연관관계의 주인을 지정해주어야 합니다. 지..
방향(Direction) : 단방향, 양방향다중성(Multiplicity)  : 다대일 (N:1) , 일대다 (1:N) , 일대일 (1:1) , 다대다 (N:M)연관관계의 주인(Owner) : 객체 양방향 연관관계는 관리 주인이 필요    객체를 테이블에 맞추어 모델링 (참조 대신에 외래 키를 그대로 사용) @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; … } @Entity public clas..
@Id데이터베이스 테이블의 기본 키(PK)와 객체의 필드를 매핑시켜주는 어노테이션 @Id만 사용할 경우 기본 키를 직접 할당해 주어야 하며, 데이터가 생성해주는 값을 사용하려면 @GeneratedValue를 사용한다.  @GeneratedValue기본 키를 자동 생성해주는 어노테이션 속성으로는 startegy가 있으며, 이를 통해 자동 생성 전략을 지정할 수 있음. IDENTITY@GeneratedValue(strategy = GenerationType.IDENTITY) 기본 키 생성을 데이터베이스에 위임하는 전략 주로 MySQL, PostgreSQL, SQL Server에서 사용합니다.예를 들어 MySQL의 AUTO_INCREMENT 기능은 데이터베이스가 기본 키를 자동으로 생성해줍니다.IDENTITY..
@매핑 어노테이션 정리  @Column@Column은 객체 필드를 테이블의 컬럼에 매핑시켜주는 어노테이션이다.   @Enumerated자바 enum 타입을 매핑할 때 사용 (ORDINAL 사용 X!!)  -> 만약 enum 클래스에 USER, ADMIN만 있었다면 DB에는 USER 0 , ADMIN 1로 저장되지만새로 클래스를 수정해 GUEST, USER, ADMIN으로 변경한다면 전에 있던 DB는 그대로 유지되어GUEST와 USER가 0으로 겹쳐버리는 경우가 발생한다.  @Temporal참고: LocalDate, LocalDateTime을 사용할 때는 생략 가능(최신 하이버네이트 지원)   @Lob데이터베이스 BLOB, CLOB 타입과 매핑• @Lob에는 지정할 수 있는 속성이 없다.• 매핑하는 필드 ..
엔티티 매핑 소개객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn @Entity@Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수  주의사항기본 생성자 필수 (파라미터가 없는 public 또는 protected 생성자)final 클래스, enum, interface, inner 클래스 사용X저장할 필드에 final 사용Ximport jakarta.persistence.Entity;import jakarta.persistence.Id;@Entitypublic class Member { @Id private ..
말동말동현
'🍀Spring/JPA' 카테고리의 글 목록