SQL 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다. 많
ORM(Object-relational Mapping) > 어플리케이션 설계는 객체 지향적으로 설계한다. 관계형 데이터베이스 또한 외래키를 활용해 설계한다. 서로 다른 두 패러다임의 불일치를 해소를 위해 ORM 기술을 사용한다. JPA(Java Persistenc
엔티티 매니저를 생성하는 비용이 크다따라서, 프로그램마다 하나의 팩토리만 생성한다.보통 커넥션 풀을 같이 생성한다.팩토리에서 매니저를 생성한다.여러 쓰레드가 동시에 접근해도 안전하다.(thread-safe)Entity를 관리하는 관리자이다.생성하는 비용이 크지 않다.여
논리적인 개념으로서, Entity Manager를 생성할 때 만들어진다.Entity를 영구히 저장하는 환경을 말한다.Entity Manager를 통해서만 접근이 가능하다.Entity Manager는 영속성 컨텍스트에 Entity를 관리한다.em.persist()는 DB
식별자 값은 DB의 기본 키 값과 매핑되어 있다.영속성 컨텍스트는 Entity를 식별자 값으로 구분한다.따라서 영속 상태의 Entity는 식별자 값이 무조건 있어야 한다.또한, 영속성 컨텍스트에 데이터를 저장, 조회하는 모든 기준은 DB의 기본 키이다.JPA는 트랜젝션
flush는 영속성 컨텍스트의 변경 내용을 DB와 동기화한다.변경감지 동작해서, 스냅샷으로부터 영속성 컨텍스트의 모든 엔티티를 비교한다.변경사항에 대한 Update 쿼리를 SQL 저장소에 저장한다.쓰기 지연 SQL 저장소의 쿼리를 DB에 반영한다.엔티티 매니저에서 직접
영속성 컨텍스트에 영속되어있다가 분리되는 것이다.특정 엔티티 객체를 영속성 컨텍스트로부터 분리시킨다.1차 캐시, 쓰기 지연 SQL 저장소에 해당 엔티티와 관련된 정보가 제거영속성 컨텍스트의 모든 엔티티의 정보를 초기화한다.모든 엔티티들은 준영속 상태가 되므로, 영속 상
객체와 테이블 매핑 : @Entity, @Table기본 키 매핑 : @Id필드와 컬럼 매핑 : @Column연관 관계 매핑 : @ManyToOne, @JoinColumn테이블과 매핑할 클래스를 지정한다.JPA는 엔티티 객체를 생성할 때, 기본 생성자를 사용한다.그래서
직접 할당 : 기본 키를 어플리케이션에서 @Id로 직접 할당한다. 자동 생성 IDENTITY : 기본 키 생성을 DB에 위임한다. SEQUENCE : DB 시퀀스를 사용해서 기본 키를 할당한다. TABLE : 키 생성 테이블을 사용한다. DB마다 기본 키를
**객체는 참조를 통해서 관계를 맺고 테이블은 외래키를 통해서 관계를 맺는다.** 키워드 정리 방향 단방향과 양방향이 있다. 객체 관계에서만 존재한다. 테이블 관계는 모두 양방향이다. 다중성 다대일, 일대다, 일대일, 다대다 다중성이 있다. 연관관계의 주인 객체의
다중성을 나타내는, 다대일 관계를 매핑하는 어노테이션으로 작성 필수외래 키를 매핑할 때 사용한다.name 속성은 매핑할 외래 키 이름을 지정한다.생략하는 경우에는 필드명(team) + \_ + 참조하는 테이블의 컬럼명(TEAM_ID)=> team_TEAM_ID로 테이블
1. 엔티티 - 연관 관게 매핑 (1) 다중성 연관 관계가 있는 두 엔티티가 일대일, 일대다, 다대다 관계인지 파악해야 한다. 보통 다대일, 일대다를 가장 많이 사용하고, 다대다 관계는 거의 사용하지 않는다. (2) 단방향, 역방향 테이블은 외래 키를 사용해서 양방향
DB에서의 상속의 표현 DB에는 객체 관계에서의 상속 개념이 없다. 대신에Super-Type Sub-Type Relationship 이라는 모델링 기법이 유사하다. ORM 기술에서 말하는 상속 관계 매핑이란, 객체의 상속 구조와 Super-Type Sub-Type R
✅ 외래키가 기본키에 포함되는지에 따라 나뉨 ✅ 식별관계 > 부모테이블(1:N에서 1인 엔티티)의 PK를 N의 엔티티가 내려받아서 PK + FK로 사용 그러니까 FK가 PK(=식별자)로도 쓰이고 있다~ 비식별 관계 > 부모 테이블의(1:N에서 1인 엔티티)의 PK를 N의 엔티티의 외래키로 사용하는 방법 그러니까 FK가 PK(=식별자)로 안 쓰이고 있...
복합 키를 갖는 부모 클래스 구성 1. @IdClass 사용 > DB에 맞춘 방법 식별자 클래스(ParentId.class) 생성 equals와 hashCode를 오버라이딩하여 구현 주의점 식별자 클래스의 속성명과 그걸 사용하는 엔티티에서의 속성명이 같아야
비즈니스 로직은 변한다. 기본 키를 비즈니스 로직과 연관된 자연 키로 설정하면 영향을 받는다.반면에 자연 키는 비즈니스 로직과는 아무 상관이 없다. 즉, 비즈니스가 확장되어도 변경할 이유가 없다.또한, JPA는 GeneratedValue를 통해서 간편하게 대리 키를 관