JAVA/SpringBoot26 [김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 7. @Inheritance, @DiscriminatorColumn, @DiscriminatorValue 고급매핑 - 상속관계 매핑 @Inheritance, @DiscriminatorColumn, @DiscriminatorValue • @Inheritance(strategy=InheritanceType.XXX) • JOINED: 조인 전략 => 각 테이블로 생성해 기본키로 연관관계 ==> 부모 객체의 id를 참조하는 각 테이블이 생성됨. (정석) • 장점 • 테이블 정규화 • 외래 키 참조 무결성 제약조건 활용가능 • 저장공간 효율화 • 단점 • 조회시 조인을 많이 사용, 성능 저하 • 조회 쿼리가 복잡함 • 데이터 저장시 INSERT SQL 2번 호출 • SINGLE_TABLE: 단일 테이블 전략 => 한 테이블에 컬럼을 몰아넣어 생성한다. • 장점 • 조인이 필요 없으므로 일반적으로 조회 성능이 빠름 •.. 2023. 10. 26. [김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 6. @ManyToOne, @OneToMany, @OneToOne, @ManyToMany 다대일 [N:1] (@ManyToOne) • 가장 많이 사용하는 연관관계 • 외래 키가 있는 쪽이 연관관계의 주인 • 다대일의 반대는 일대다 • 양쪽을 서로 참조하도록 개발 일대다 [1:N] (@OneToMany) • 일대다 단방향은 일대다(1:N)에서 일(1)이 연관관계의 주인 • 테이블 일대다 관계는 항상 다(N) 쪽에 외래 키가 있음 • 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하는 특이한 구조 • @JoinColumn을 꼭 사용해야 함. 그렇지 않으면 조인 테이블 방식을 사용함(중간에 테이블을 하나 추가함) - 일대다 단방향 매핑의 단점 • 엔티티가 관리하는 외래 키가 다른 테이블에 있음 • 연관관계 관리를 위해 추가로 UPDATE SQL 실행 • 일대다 단방향 매핑보다는 다대일.. 2023. 10. 17. [김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 5. 연관관계 매핑 기초 - 양방향 연관관계와 연관관계의 주인 양방향 매핑 엔티티 정의@ManyToOne @OneToMany @OneToMany @ManyToOne @OneToOne @OneToOne @ManyToMany @ManyToMany ===> 양방향 관계라는 표현은 이해하기 쉽게 표현한 것이다. 실제로는 단방향 관계 2개를 선언한 것. 연관관계의 주인==> DB의 외래키(FK:FOREIGN KEY) 기준으로 주인을 정한다. 주인: @XXXXXXXX @JoinColumn(name = 'DB 컬럼명') 종속: @XXXXXXXX(mappedBy == '주인 엔티티에 선언된 종속 필드명') (추가설명내용) TEAM을 주인으로 설정하는 것도 가능하지만 성능 이슈가 있어 사용하지 말라 설명합니다. 1) MEMBER 엔티티를 주인으로 했을때 -> MEMBER 테이블에는.. 2023. 10. 17. [김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 5. 연관관계 매핑 기초 - 단방향 연관관계 연관관계가 필요한 이유와 단방향 연관관계 객체를 테이블에 맞추어 모델링 @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; // 객체를 테이블설계에 맞춘 모델링 @Column(name = "TEAM_ID") private Long teamId; 조회할 때는? ==> 식별자로 다시 조회, 객체 지향적인 방법이 아니다. 결론) 객체 지향 모델링 @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; // 객체.. 2023. 10. 15. [김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 4. 엔티티 매핑 1~3 객체와 테이블 매핑 데이터베이스 스키마 자동 생성 • DDL을 애플리케이션 실행 시점에 자동 생성 • 테이블 중심 -> 객체 중심 • 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 • 이렇게 생성된 DDL은 개발 장비에서만 사용 • 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용 DDL 생성 기능 • 제약조건 추가: 회원 이름은 필수, 10자 초과X -> @Column(nullable = false, length = 10) • 유니크 제약조건 추가 -> @Table(uniqueConstraints = {@UniqueConstraint( name = "NAME_AGE_UNIQUE", columnNames = {"NAME", "AGE"} )}) • DDL 생성 기.. 2023. 10. 13. [김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 3. 영속성 관리 (내부 동작 방식) JPA에서 가장 중요한 2가지 • 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) • 영속성 컨텍스트 영속성 컨텍스트 • JPA를 이해하는데 가장 중요한 용어 • “엔티티를 영구 저장하는 환경”이라는 뜻 • EntityManager.persist(entity) 엔티티의 생명주기 • 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 • 영속 (managed) 영속성 컨텍스트에 관리되는 상태 • 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 • 삭제 (removed) 삭제된 상태 영속성 컨텍스트의 이점 • 1차 캐시 • 동일성(identity) 보장 • 트랜잭션을 지원하는 쓰기 지연 (transactional wr.. 2023. 10. 11. [김영한] 자바 ORM 표준 JPA 프로그래밍 - 섹션 0~2(핵심내용 정리) [2023-10-10] JPA에 대해 자세하게 공부하고싶어 [김영한] 자바 ORM 표준 JPA 프로그래밍 - 기본편 인프런 강좌 수강시작 섹션 0~2 핵심내용 정리 JPA? - Java Persistence API - 자바 진영의 ORM 기술 표준 ORM? - Object-relational mapping(객체 관계 매핑) - 객체는 객체대로 설계 - 관계형 데이터베이스는 관계형 데이터베이스대로 설계 - ORM 프레임워크가 중간에서 매핑 - 대중적인 언어에는 대부분 ORM 기술이 존재 JPA 소개 1. EJB - 엔티티 빈(자바 표준) 2. JPA(자바 표준) -> 하이버네이트 (오픈 소스) JPA를 왜 사용해야 하는가? - SQL 중심적인 개발에서 객체 중심으로 개발 - 생산성 (기억할것) 수정: da.. 2023. 10. 11. 이전 1 2 3 4 다음