Spring Framework/JPA 6

[JPA] 4. EntityLifeCycle

디렉토리 구조 및 공통 클래스 작성하기1. 디렉토리 구조2. EntityManagerGenerator 클래스 작성하기package org.example.section03.entity;public class EntityManagerGenerator { private static EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpatest"); private EntityManagerGenerator() {} public static EntityManager getInstance() { return factory.createEntityManager(); }}3. Menu 클래스 생성하기packa..

[JPA] 2. Persistence Context - EntityManager 생성하기

Persistence Context1. EntityManager엔터티 매니저는 엔터티를 저장하는 메모리 상의 데이터베이스로, 엔터티 저장, 수정, 삭제, 조회 등 엔터티와 관련된 모든 일을 한다.EntityManagerFactory를 통해 만들어진다.엔터티 매니저는 스레드 세이프하지 않기 때문에 동시성 문제가 발생할 수 있어 스레드 간 공유를 하면 안되고,따라서 web의 경우 일반적으로 request scope와 일치시킨다. (하나의 요청을 하나의 엔터티 매니저를 통해 관리)이와 비슷하게 MyBatis에서 sqlSession도 스레드 세이프하지 않기 때문에 하나의 요청 당 하나의 sqlSession을 만들었다.2. EntityManagerFactory엔터티 매니저를 생성할 수 있는 기능을 제공한다.스레드..

[JPA] 1. 개요 및 개발환경 구축

JPA 개요1. JPA란?Java 진영의 ORM(Object Relational Mapping) 기술 표준으로 ORM 기술을 사용하기 위한 표준 인터페이스의 모임이다.JDBC에서 JDBC가 인터페이스고 그 구현체가 Driver였던 것처럼 JPA는 인터페이스, Hibernate는 그 구현체라 생각하면 된다.ORM은 자바 객체와 DB 테이블을 매핑하고 자바 객체 간의 관계를 토대로 SQL을 생성 및 실행할 수 있다.2. JPA의 특징- 영속성 컨텍스트가 엔티티(DB와 매핑되는 자바 객체)를 생명주기를 통해 관리한다.- DBMS별로 Dialect를 제공한다.  (JPA 내부에서 사용하는 SQL 문법인 JPQL을 구동시키면 사용하는 DB별 SQL 구문을 JPA 쪽에서 알아서 만들어준다.) - native SQL..