목록Spring/JPA (11)
에러 안나게 해주세요
연관관계 매핑시 고려사항 3가지 - 다중성 - 단방향, 양방향 - 연관관계의 주인 다중성 - 다대일 : @ManyToOne - 일대다 : @OneToMany - 일대일 : @OneToOne - 다대다 : @ManyToMany JPA에서 나오는 애노테이션은 전부 DB의 관점. 애매 할 때는 반대쪽으로 생각해 볼 것 ex) 회원과 팀의 관계 단방향, 양방향 테이블 - 외래키 하나로 양쪽 조인 가능 - 사실 방향이라는 개념이 없음 객체 - 참조용 필드가 있는 쪽으로만 참조 가능 - 한쪽만 참조하면 단방향 - 양쪽이 서로 참조하면 양방향 연관관계의 주인 - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 - 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데 - 객체 양방향 관계는 참조가 2군데 있..
양방향 매핑시 가장 많이 하는 실수 ( 연관관계의 주인에 값을 입력하지 않음 ) Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setName("member1"); //역방향(주인이 아닌 방향)만 연관관계 설정 team.getMembers().add(member); em.persist(member); 양방향 연관관계 주의 - 실습 - 순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하자. Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.se..

- mappedBy = JPA의 멘탈붕괴 난이도 - mappedBy는 처음에는 이해하기 어렵다. - 객체와 테이블간에 연관관계를 맺는 차이를 이해해야 한다. 객체와 테이블이 관계를 맺는 차이 - 객체 연관관계 = 2개 >> 회원 -> 팀 연관관계 1개 (단방향) >> 팀 -> 회원 연관관계 1개 (단방향) - 테이블 연관관계 = 1개 >> 회원 팀의 연관관계 1개 (양방향) 객체의 양방향 관계 - 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 방향 관계 2개다. - 객체를 양방향으로 참조하려면, 단방향 연관관계를 2개 만들어야 한다. - A -> B (a.getB()) class A { B b; } - B -> A (b.getA()) class B { A a; } - 테이블은 외래 키 하나로..

목표 - 객체와 테이블 연관관계의 차이를 이해 - 객체의 참조와 테이블의 외래 키를 매핑 - 용어 이해 >> 방향(Direction) : 단방향 , 양방향 >> 다중성(Multiplicity) : 다대일(N:1),일대다(1:N),일대일(1:1),다대다(N:M) 이해 >> 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 필요 객체 지향 모델링 (객체 연관관계 사용) @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; // @Column(name = "TEAM_ID") // private ..
@Id private String id; - 직접 할당 : @Id만 사용 - 자동 생성(@GenerateValue) >> DENTITY: 데이터베이스에 위임, MYSQL >> SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE :: @SequenceGenerator 필요 >> TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용 :: @TableGenerator 필요 >> AUTO: 방언에 따라 자동 지정, 기본값 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private String id; IDENTITY 전략 - 특징 - 기본 키 생성을 데이터베이스에 위임 - 주로 MySQL, PostgreSQL, SQL Server, DB2에..
필드와 컬럼 매핑 요구사항 추가 1. 회원은 일반 회원과 관리자로 구분해야 한다. 2. 회원 가입일과 수정일이 있어야 한다. 3. 회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제한이 없다. 매핑 어노테이션 정리 hibernate.hbm2ddl.auto 어노테이션 설명 @Column 컬럼 매핑 @Temporal 날짜 타입 매핑 @Enumerated enum 타입 매핑 @Lob BLOB, CLOB 매핑 @Transient 특정 필드를 컬럼에 매핑하지 않음(매핑 무시) @Column 속성 설명 기본값 name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름 insertable, updatable 등록, 변경 가능 여부 TRUE nullable(DDL) null 값의 허용 여부를 설정한다. ..
객체랑 관계형 데이터베이스를 어떻게 매핑해서 쓸지, 매핑이 정말 중요하다. 목차 - 객체와 테이블 매핑 - 데이터베이스 스키마 자동 생성 - 필드와 컬럼 매핑 - 기본 키 매핑 - 실전 예제 - 1. 요구사항 분석과 기본 매핑 엔티티 매핑 소개 - 객체와 테이블 매핑 : @Entity, @Table - 필드와 컬럼 매핑: @Column - 기본 키 매핑 : @Id - 연관관계 매핑 : @ManyToOne,@JoinColumn 객체와 테이블 매핑 @Entity - @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. - JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 - 주의 >> 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) >> fianl 클래스,..
JPA에서 가장 중요한 2가지 - 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) - 영속성 컨텍스트 엔티티 매니저 ? 영속성 컨텍스트 ? - JPA를 이해하는데 가장 중요한 용어 - '엔티티를 영구 저장하는 환경' 이라는 뜻 - EntityManager.persist(entity); 엔티티의 생명주기 - 비영속 (new/transient) >> 영속성 컨테긋트와 전혀 관계가 없는 새로운 상태 - 영속 (managed) >> 영속성 컨텍스트에 관리되는 상태 - 준영속 (detached) >> 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제 (removed) >> 삭제된 상태 영속성 컨텍스트의 이점 - 1차 캐시 - 동일성(identity) 보장 - 트랜잭션을 지원..