ORM Object Relational Mapping 객체와 관계형 데이터베이스를 매핑 ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 해결해줌 객체 측면에서 정교한 객체 모델링 가능 매핑 방법만 ORM 프레임워크에 알려주면 됨 > 예시
엔티티를 영구 저장하는 환경 \- 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저느 영속성 컨텍스트에 엔티티를 보관하고 관리함비영속 : 영속성 컨텍스트와 전혀 관계가 없는 상태엔티티 객체를 생성만 한 순수한 객체 상태이며 아직 저장하지 않아 영속성 컨텍스트
데이터의 생성, 수정되는 시간은 글을 작성했을 때, 댓글을 작성했을 때 등 자주 활용되는데 각각 Entity의 생성, 수정 시간을 매번 작성하는 건 효율적이지 않음 \- Spring Data JPA에선 시간에 대해 자동으로 값을 넣어주는 기능인 JPA Auditing
Spring Data JPA에서 메서드 이름으로 SQL을 생성할 수 있는 기능JPA Repository 인터페이스에서 해당 인터페이스와 매핑되어있는 테이블에 요청하고자 하는 SQL을 메서드 이름을 사용하여 선언 가능SimpleJpaRepository 클래스가 생성될 때
엔티티들은 대부분 다른 엔티티와 연관관계를 갖는다. ex.주문 엔티티 : 어떤 상품을 주문했는지 알기 위해 상품 엔티티와 연관 관계가 있음방향(Direction) : 방향은 객체 관계에만 존재하고 테이블에선 항상 양방향이다. \- 단방향 : 두 엔티티 관계가 둘 중
1:1 관계를 맺어주는 역할을 하는 annotationEntity에서 외래키의 주인은 일반적으로 N(다)의 관계인 Entity이지만 1:1관계에서는 외래 키의 주인을 직접 지정해야 함외래키 주인만이 외래키를 등록, 수정, 삭제할 수 있고 주인이 아닌 쪽은 오직 외래키를

초기 어플리케이션의 데이터를 데이터베이스에 저장 변천사 \- JDBC API 직접 사용MyBatis or JDBC Template (Mapper) 사용=> 이에 따른 문제점은 CRUD 용 SQL 반복 작성하는 것이 불가피 하다는 것: 비생산적객체 모델링, 객체지향의

JPA: 자바 진영의 ORM 기술 표준, 애플리케이션과 JDBC 사이에서 동작함 \- 객체와 관계형 DB를 매핑함 -> 패러다임 불일치 문제 해결 객체를 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 됨\-> ORM 프레임워크가 적절한 INSERT SQL 생

개발 코드는 크게 세가지 부분으로 나뉜다.1\. 엔티티 매니저 설정2\. 트랜잭션 관리3\. 비즈니스 로직가장 먼저 엔티티 매니저 팩토리 생성해야 한다.엔티티 매니저 팩토리 설정 코드내부 동작 순서a. METE-INF/persistence.xml에서 이름이 jpaboo
엔티티 매니저는 트랜잭션을 커밋하기 직전까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 INSERT SQL 을 차곡차곡 모아둔다. 그 후 트랜잭션을 커밋할 때 모아둔 쿼리를 데이터베이스에 보내는데 이것을 트랜잭션을 지원하는 쓰기 지연이라고 한다.코드에서
JPA의 대표 annotation객체와 테이블 매핑: @Entity, @Table기본 키 매핑: @Id필드와 컬럼 매핑: @Column연관관계 매핑: @ManyToOne, @JoinColumnJPA를 사용해 테이블과 매핑할 클래스에 붙여줘야 한다. Entity 사용 시
용어방향: 단방향, 양방향이 있다. 두 개의 테이블이 존재할 때 둘 중 한 쪽만 참조하는 것을 단방향 관계라고 한다. 반대로 두 테이블이 서로 모두 참조하는 것을 양방향 관계라고 한다. 이러한 방향은 객체 관계에만 존재하고, 테이블 관계는 항상 양방향이다. 다중성: 다