자바 ORM 표준 JPA 프로그래밍 - 기본편 프록시와 연관관계 관리 프록시 기초 em.find() vs em.getReference() em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 객체의 초기화 Member member = em.getReference(Member.class, "id1"); member.getName(); // target.getName()프록시 특징(이해해야 함) 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨(이론상) 프록시 객체는 실제 객제의 참조(target)를 보관..
자바 ORM 표준 JPA 프로그래밍 - 기본편 고급 매핑 상속관계 매핑 관계형 데이터베이스는 상속 관계가 없다. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하낟. 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 → 조인 전략 통합테이블로 변환 → 단일 테이블 전략 서브타입 테이블로 변환 → 구현 클래스마다 테이블 전략 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED: 조인전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 @Discriminator(name="DTYPE")..
자바 ORM 표준 JPA 프로그래밍 - 기본편 다양한 연관관계 매핑 연관관계 매핑시 고려사항 다중성 다대일: @ManyToOne 일대다: @OneToMany 일대일: @OneToOne 다대다: @ManyToMany(실무에서 사용하지 않는다.) 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 방향이라는 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A→B, B→A처럼 참조가 두군데 객체 양방향 관계는 참조가 두군데 있음. 둘중 테이블의 외래키를 관리할 곳을 지정해야함 연관관계의 주인: 외래 키를 관리하는 참조 주인의 반대편: 외래키에 영향을 주지 않..
자바 ORM 표준 JPA 프로그래밍 - 기본편 연관관계 매핑 기초 연관관계 용어 방향(Direction): 단방향, 양방향 다중성(Multiplicity): 다대일, 일대다, 일대일, 다대다 연관관걔의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요 객체를 테이블에 맞추어 데이터중심으로 모델링 했을 시 문제점 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. 객체는 참조를 사용해서 연관된 객체를 찾는다. 테이블과 객체 사이에는 이런 큰 간격이 있다. 단방향 매핑 @Entity public class Member { private Long id; @Column(name = "USERNAME") private String name; private int age; @ManyToOne @..
자바 ORM 표준 JPA 프로그래밍 - 기본편 엔티티 매핑(중요) 엔티티 매핑 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn 등 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수 이다. 주의 사항 기본 생성자 필수(파라미터가 없는 public or protected 생성자) final 클래스, enum, interface, inner 클래스 X 저장할 필드에 final 사용 X 속성: name JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그래도 사용 캍은 ..
- Total
- Today
- Yesterday
- 템플릿 메서드 패턴
- HTTP body
- effetive java
- 팀즈
- 맥북 키보드 딜레이
- http header
- javascript
- 맥 팀즈 캐시 삭제
- 포트충돌
- 디자인패턴
- 맥 포트 죽이기
- 이펙티브 자바
- Design Pattern
- 팀즈 느려짐
- frontend
- ORM
- Vue.js
- Mackbook
- 코딩테스트
- 알고리즘
- SOLID원칙
- vue
- Spring
- 코테
- 프로그래머스
- JPA
- ES6
- java
- Backend
- http
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |