본문 바로가기

전체 글147

[JPA] 다양한 연관관계 매핑 연관관계 주인 테이블 : 외래키 하나 객체 : 참조가 두군데 (A→B, B→A) 연관관계 매핑 다대일 N:1 @ManyToOne 일대다 1:N @OneToMany 일(1)이 연관관계 주인 다(N) 쪽에 외래키가 존재 연관관계 관리를 위해 추가로 UPDATE SQL 실행된다. 즉, 1:N 매핑보다 N:1 양방향 매핑을 사용하자. @OneToMany(mappedBy = "team") private List members = new ArrayList(); 일대일 1:1 @OneToOne 주 테이블이나 대상 테이블 중에 외래키를 선택할 수 있다. 반대편은 mappedBy 매핑하기 // Member @OneToOne @JoinColumn(name = "LOCKER_ID") private Locker locker;.. 2022. 7. 2.
[JPA] 연관관계 매핑 기초 1. 단방향 연관관계 Member(N)와 Team(1) 회원 ManyToOne JoinColumn(name = “TEAM_ID”) 2. 양방향 연관관계와 연관관계의 주인 그렇다면, Team에서 Member 호출은? Team에서, List members를 어떻게 호출할 수 있을까. Team에 List members 를 OneToMany로 추가한다. @OneToMany(mappedBy = "team") private List members = new ArrayList(); DB상 테이블은 변하지 않는다. 1. 연관관계의 주인 = 외래키 관리자 주인(N) @JoinColumn(name = "TEAM_ID") : 외래키를 가짐 주인 : ManyToOne, OneToOne 주인X(1) : mappedBy 속성으로.. 2022. 7. 2.
[JPA] 엔티티 매핑 1. 객체와 테이블 매핑 @Entity @Table @Entity : JPA가 관리, 엔티티라 함 주의 기본 생성자 필수 파라미터없음 public protected final 클래스, enum, interface, inner 클래스 사용 불가 저장할 필드에 final 사용불가 (변경가능하기 때문) @Table : 엔티티와 매핑할 테이블 지정 name : 매핑할 이름 catalog : DB 카탈로그 매핑 schema : DB 스키마 매핑 uniqueConstraints(DDL) : DDL 생성시 유니크 제약조건 생성 2. 데이버베이스 스키마 자동생성 DDL을 애플리케이션 실행시점에 자동 생성 테이블중심 → 객체중심! DB 방언(dialect)을 사용해서 DB에 맞는 DDL 생성 persistence.xml.. 2022. 7. 2.
[JPA] 영속성 관리 - 내부 동작 방식 영속성 컨텍스트 엔티티를 영구 저장하는 환경 JPA를 이용하는데 가장 중요한 용어 EntityManager.persist(entity) 영속성 컨텍스트는 논리적인 개념(눈에 보이지 않는다) 엔티티 매니저를 통해 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속 : 영속성 컨텍스트와 전혀 관계없는 새로운 상태 Member member = new Member("member1", "회원1"); 영속 : 영속성 컨텍스트에 관리되는 상태 em.persist(member); 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태 // 회원 엔티티를 영속성 컨텍스트에서 분리 em.detach(member); 삭제 : 삭제된 상태 em.remove(member) 영속성 컨텍스트의 이점 1차 캐시(영속성 컨텍스트라고 이해해.. 2022. 7. 2.
9장 제네릭스 kotlin in action 책을 통한 공부입니다. 1. 제네릭 타입 파라미터 1. 타입 파라미터 T : 타입파라미터 선언 수신/반환 : 수신객체와 반환타입에 쓰인다. 타입 파라미터 X : 이 변수는 리스트다. 타입 파라미터 사용 : 이 변수는 문자열 리스트다 (명확) → 코틀린에서, 제네릭 타입 인자를 프로그래머가 명시하거나, 컴파일러가 추론할 수 있어야 한다. fun List.slice(indices: IntRange) : List val letters = ('a'...'z').toList() letters.slice(0..2) // 프로그래머가 명시 letters.slice(10..13) // 컴파일러가 타입 인자를 추론. T가 Char 라는 사실을 추론 확장 프로퍼티 선언도 가능하다. val L.. 2022. 7. 2.
[Kotlin] 파라미터와 반환 값으로 람다 사용해보기 1. 고차함수 고차함수 : 다른 함수를 인자로 받거나, 함수를 받환하는 함수. 즉, 코틀린에서는 람다나 함수 참조를 인자로 넘길 수 있거나 람다나 함수 참조를 반환하는 함수이다. 1. 함수 타입 (Int, String) → Unit (파라미터타입 → 반환타입) () → String? null을 반환할 수 있다. (() → Int)? 함수 타입이 null이 될 수 있다. invoke(이름 없이 간편하게 호출될 수 있는 함수)로 호출한다. 2. 인자로 받은 함수 호출 예제1 twoAndThree { a, b -> a + b } // The result is 5 twoAndThree { a, b -> a * b } // The result is 6 예제2 String.filter(predicate: (Char.. 2022. 7. 2.