| 고급 매핑 :상속 관계 매핑 :@MappedSuperclass :복합 키와 식별 관계 매핑 :조인 테이블 :엔티티 하나에 여러 테이블 매핑 || 상속 관계 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현 시 선택할 수 있는 방법 1. 각각의 테이블로 변환 : 각각을 모두 테이블로 만들고 조회 시 조인 사용 2. 통합 테이블로 변환 : 테이블을 하나만 사용해서 통합 3. 서브타입 테이블로 변환 : 서브 타입마다 하나의 테이블 생성 ||| 조인 전략 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용 12345678910111213141516171819202122232425262728293031323334353637383940..
| 다양한 연관관계 매핑 || 다대일 데이터베이트 테이블의 일(1), 다(N) 관계에서 외래 키는 항상 다(N) 쪽에 존재 ||| 다대일 단방향 [N:1] > 회원 엔티티1234567891011121314151617@Entitypublic class Member { @Id @GeneratedValue @colum(name = "MEMBER_ID") private Long id; private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; // Getter, Setter .. }cs > 팀 엔티티12345678910111213@Entitypublic class Team { @Id @GeneratedValue @Col..
| 연관관계 매핑 객체의 참조와 테이블의 외래 키를 매핑 방향 (Direction) : 단방향, 양방향방향은 객체관계에만 존재하고 테이블 관계는 항상 양방향다중성 (Multiplicity) : 다대일, 일대다, 일대일, 다대다연관관계의 주인 (owner) || 단방향 연관관계 객체 연관관계 : 단방향 관계 Member Team id Team team username id name 테이블 연관관계 : 양방향 관계 MemberTeam id Team team username id name List members ㅇ 객체 연관관계 vs 테이블 연관관계- 객체는 참조(주소)로 연관관계 ㄴ 연관 데이터 조회 시 .get() (참조) 사용 => 단방향ㄴ 객체 그래프 탐색- 테이블은 외래 키로 연관관계ㄴ 연관 데이터 ..
| 엔티티와 매핑 객체와 테이블 매핑 : @Entity, @Table기본 키 매핑 : @Id필드와 컬럼 매핑 : @Column연관관계 매핑 : @ManyToOne, @JoinColumn 12345678910111213141516171819202122232425262728293031323334353637383940414243@Entity// name과 age Column에 unique 제약조건 추가@Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint( name = "NAME_AGE_UNIQUE", columnNames = {"NAME", "AGE"} )})public class Member { // 기본키 매핑 @Id @Column(name = "ID..
| 영속성 || 영속성 컨텍스트(persistence context) - 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리- 엔티티 매니저를 생성할 때 하나 만들어짐 -> 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있고, 영속성 컨텍스트를 관리할 수 있음- 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 DB에 반영 == .flush()- 영속 상태의 엔티티는 모두 영속성 컨텍스트의 내부 캐시(1차 캐시)에 저장- 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스와 같은 역할 - 조회한 엔티티만 영속석 컨텍스트가 관리 (임베디드 타입, 단순 필드는 X) || 장점 1차 캐시동일성 보장트랜잭션을 지원하는 쓰기 ..
| JPA(Java Persistence API) || JPA 요약 - 객체 모델과 관계형 데이터베이스 모델의 지향하는 패러다임 불일치를 해결- 반복되는 SQL 작성과 JDBC API 사용을 해결- SQL에 의존적인 개발을 해결 --> JPA는 엔티티 중심의 개발 (DB에 대한 처리는 JPA가)- 개발자는 데이터 중심인 관계형 데이터베이스를 사용해도 객체지향 애플리케이션 개발에 집중 - 자바 ORM 기술에 대한 API 표준 명세* ORM(Object-Relational Mapping): 객체와 관계형 데이터베이스를 매핑한다는 의미 (패러다임의 불일치 해결)- JPA는 애플리케이션과 JDBC 사이에서 동작 [애플리케이션 [JPA [JDBC API]]] [DB]- SQL을 개발자 대신 생성해서 DB에 전달-..
#. Problemhttps://www.acmicpc.net/problem/14503* The copyright in this matter is in BOJ #. Resolution Process 1. Read and understand problem 2. Redefine the problem + abstract 3. Create solution plan (select Algorithm, Data structure) 4. Prove the plan (check performance time and usage memory) 5. Carry out the plan 6. Look back on the plan and find a way to improve it #. Solve 시간복잡도는 O(50^2)으로 아..
#. Problemhttps://www.acmicpc.net/problem/11559* The copyright in this matter is in BOJ #. Resolution Process 1. Read and understand problem 2. Redefine the problem + abstract 3. Create solution plan (select Algorithm, Data structure) 4. Prove the plan (check performance time and usage memory) 5. Carry out the plan 6. Look back on the plan and find a way to improve it #. Solve 알고리즘을 활용한 문제도 중요하지..