개발하는 쿠키
article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 09. 값 타입 (+ 값 타입 컬렉션 최적화 방법)
Coding/computer science 2023. 10. 26. 15:47

기본값 타입 값 타입: 식별자가 없고, 숫자 또는 문자 속성만 있다. int, double, Integer, String... 같은 자료형을 값 타입이라고 한다. 임베디드 타입(복합 값 타입) 기존에 있는 값 타입(int, String)이 아니라 새로운 값 타입을 개발자가 직접 정의해서 사용할 수 있다. 이렇게 새롭게 만든 값 타입을 엔티티 클래스 내부에서 사용할 수 있는데 이를 임베디드 타입, 복합 값 타입이라고 한다. 임베디드 타입을 사용하면 엔티티 클래스를 깔끔하게 만들 수 있다. Member 클래스 내부에 (id, name, startDate, endDate, city, street, zipcode)를 모두 쓰지 않고 (id, name, workPeriod, homeAddress) 만 썼다. 그리..

article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 08. 프록시와 연관관계 관리
Coding/computer science 2023. 10. 19. 16:41

프록시 프록시 객체: 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체다. 프록시 객체를 만들어서 조회하기 위해서는 아래와 같이 사용하면 된다. Member member = em.getReference(Member.class, "member1"); 프록시 클래스는 실제 클래스를 상속받아서 만들어진다. 프록시 객체는 실제 클래스의 참조를 보관하고 있기 때문에 프록시 객체의 메소드를 호출하면 실제 객체의 메소드를 호출하게 된다. 프록시 객체의 특징 - 처음 한 번만 초기화된다. (초기화: 영속성컨텍스트에 DB에서 가져온 엔티티 저장하는 작업) - 영속성 컨텍스트에 이미 찾는 엔티티가 있으면 em.getReference()를 호출해도 실제 엔티티를 반환한다. 프록시 객체는 PK를 보관하고..

article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 07. 고급 매핑
Coding/computer science 2023. 10. 5. 10:56

이번 장에서는 - 상속 관계 매핑 - @MappedSuperclass - 복합키와 식별 관계 매핑 - 조인 컬럼 vs 조인 테이블 - 엔티티 하나에 여러 테이블 매핑 에 대해 공부한다. 상속 관계 매핑 슈퍼타입-서브타입 논리모델을 실제 테이블로 구현하기 위한 방법 1. 각각의 테이블로 변환: 모두 테이블로 만들고, 테이블끼리 조인하는 전략 2. 통합 테이블로 변환: 단일 테이블만 사용하는 전략 3. 서브타입 테이블로 변환: 서브 클래스마다 테이블을 생성하는 전략 조인 전략 엔티티 각각을 테이블로 만들고 테이블끼리의 조인을 사용해서 조회한다. 슈퍼타입의 DTYPE 컬럼을 이용해서 서브타입 종류를 구분한다. // 슈퍼타입 @Entity @Inheritance(strategy = InheritanceType...

article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 06. 다양한 연관관계 매핑
Coding/computer science 2023. 9. 18. 10:54

엔티티의 연관관계를 매핑할 때는 다음을 고려해야 한다. - 다중성 (다대일, 일대다, 일대일, 다대다) - 단방향, 양방향 - 연관관계의 주인: 5장에서 연관관계의 주인인 테이블에서 외래키를 관리할 수 있었다. 관계에서 왼쪽에 있는 엔티티가 연관관계의 주인이다. ex) 다대일 -> 다가 주인 일대다 -> 일이 주인 다대일 다대일 단방향 vs 다대일 양방향 위 그림에서 실선은 연관관계의 주인이고, 점선은 연관관계의 주인이 아니다. Member 가 연관관계의 주인이고, Team 은 연관관계의 주인이 아니다. 다대일 단방향 다대일 단방향은 회원 엔티티에만 매핑 관련 코드를 넣으면 된다. 다대일 양방향도 같은 회원 엔티티를 사용한다. @Entity public class Member { .... @ManyToO..

article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 05. 연관관계 매핑 기초
Coding/computer science 2023. 9. 12. 00:39

단방향 연관관계 회원테이블과 팀 테이블이 있다. 회원은 하나의 팀에만 속할 수 있고, 1개의 팀에는 여러 명의 회원이 있다. Member : Team = 다 : 1 관계이다. Member가 다고, Team이 1이다. 객체 연관관계 회원 객체, 팀 객체는 단방향 관계다. Member.team : Member 객체에서 Team객체는 참조 가능하다. Team.member : Team객체에서 Member객체는 참조할 수 없다. 테이블 연관관계 회원 테이블, 팀 테이블은 양방향 관계다. 회원 테이블의 TEAM_ID로 팀 테이블 조인 가능하다. MEMBER JOIN TEAM, TEAM JOIN MEMBER 가 가능하므로 양방향 관계이다. 객체 연관관계와 테이블 연관관계의 가장 큰 차이 객체는 클래스에 다른 클래스 ..

article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 04. 엔티티 매핑
Coding/computer science 2023. 9. 6. 01:31

- 객체와 테이블 매핑: @Entity, @Table - 기본 키 매핑: @Id - 필드와 컬럼 매핑: @Column - 연관관계 매핑: @ManyToOne, @JoinColumn @Entity JPA가 관리하는 클래스라는 의미이므로 필수로 붙여야 한다. 기본 생성자는 필수다. final class, enum class, interface, inner class 에는 사용할 수 없다. 지정할 필드에 final을 사용하면 안된다. @Table 엔티티와 매핑할 테이블을 지정한다. 다양한 매핑 사용 필드의 자료형마다 적절한 JPA어노테이션을 사용할 수 있다. @Entity @Table(name="MEMBER") pulblic class Member { @Id @Column(name = "ID") private..

article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 03. 영속성 관리
Coding/computer science 2023. 8. 29. 23:56

엔티티 매니저: 엔티티를 저장, 수정, 삭제 조회하는 일을 처리한다. 엔티티를 저장하는 가상의 데이터베이스로 생각하면 된다. 엔티티 매니저 팩토리와 엔티티 매니저 데이터베이스를 1개만 사용하는 경우 EntityManagerFactory도 1개만 생성한다. // 공장 만들기, 비용이 많이 든다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook"); persistence.xml에 있는 정보를 바탕으로 DB Driver, user name, password, jdbc url을 설정해서 EntityManagerFactory를 만든다. 이후 필요할 때마다 엔티티 매니저를 생성한다. // 공장에서 엔티티 매니저 생성 비용이 거의 ..

article thumbnail
자바 ORM 표준 JPA 프로그래밍 | 02. JPA 시작
Coding/computer science 2023. 8. 22. 06:12

책과는 다르게 Intellij, Gradle 설정을 사용했습니다. Intellij 프로젝트 만들기 File > New > Project 를 통해 새로운 프로젝트를 만든다. Spring Initializr Generator를 클릭한 후 원하는 프로젝트 이름과 저장소를 정하고, Next를 누른다. Lombok, Spring Boot Dev Tools, Spring Data JPA Depentency를 선택 후 Create를 누른다. Intellij 에 H2 데이터베이스 연결 설정하기 Intellij 오른쪽 탭에서 Database > + > Data Source > H2 를 선택한다. H2데이터베이스 서버가 없으면 설치하라는 메시지가 나온다. Download를 클릭해서 설치하면 된다. build.gradle파..

반응형