JPA 엔티티 매핑
카테고리 없음2024. 1. 27. 23:28JPA 엔티티 매핑

영속성 컨텍스트는 모든 객체가 아닌 DB 테이블과 연결되는 객체인 엔티티만 관리한다. 오늘은 엔티티를 사용하는 방법과 Spring을 사용하지 않고 순수 자바에서의 JPA 세팅 방법에 대해 정리해보겠다. JPA 세팅 Hibernate Dependency 원하는 버전의 JPA 의존성을 추가해준다. META-INF 폴더 하위에 persistence.xml을 생성해서 하이버네이트 설정을 적용할 수 있다. 이때 설정 정보에 있는 persistence-unit의 name을 통해 EntityManagerFactory 생성 시 적용할 persistence 설정을 주입할 수 있다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); 스키..

JPA 동작 과정
카테고리 없음2024. 1. 26. 22:01JPA 동작 과정

영속성 컨텍스트 JPA의 내부 동작을 이해하기 위해서는 가장 먼저 영속성 컨텍스트가 무엇인지에 대해 알아야한다. 영속성 컨텍스트는 객체를 관리하고 최종적으로 쿼리를 생성해서 DB에 전달하는 논리 영역이며, EntityManager가 작업을 처리하는 동안 사용되는 메모리 영역이다. EntityManager는 JPA 스펙의 EntityManagerFactory를 통해 생성할 수 있고, 생성된 EntityManager를 통해서 DB에 저장할 객체인 엔티티를 관리할 수 있다. 이때 EntityManger는 영속성 컨텍스트에 올라간 엔티티만 관리하기 때문에 관리할 엔티티를 꼭 영속해주어야하며, 영속 방법은 perist() 메서드를 호출하는 방법이 있으며, find()를 통해 조회된 엔티티도 1차 캐시에 저장되여 ..

JPA란 무엇인가?
카테고리 없음2024. 1. 26. 15:12JPA란 무엇인가?

JPA Java Persistence Application Programming Interface의 약자로 java에서 객체를 DB에 저장하기 위한 프로그래밍 명세라고 이해하면 된다. JPA는 Java 진영의 ORM 표준으로 인터페이스이기 때문에 실제 구현된 것이 아닌 어떻게 구현되어야 하는지가 명세되어있을 뿐이다. 따라서 실제 사용을 위해서는 JPA의 구현체를 사용해야하는데 보편적으로 가장 많이 쓰이는 구현체가 바로 Hibernate이다. ORM Object Relactional Mapping의 약자로 객체를 관계적으로 매핑하는 기술로 객체와 관계형 데이터베이스의 패러다임 불일치 문제를 해결하고 기존의 매퍼 방식(JDBC Template, MyBatis 등 직접 SQL을 작성하는 방식) 보다 더 객체지..

data.sql 파일로 테스트 데이터 적용하기
카테고리 없음2024. 1. 22. 19:57data.sql 파일로 테스트 데이터 적용하기

spring boot 실행 시 data.sql로 데이터 세팅하기 schema.sql, data.sql 파일을 resource 디렉토리의 루트 경로에 작성하면 ScriptUtils에 의해 sql script를 실행하게된다. 기본 이름은 schema, data이지만 @Sql을 사용하면 다른 이름의 .sql 파일을 지정해줄 수 있다. 위 과정이 스프링 부트 2.4 버전까지는 하이버네이트의 ddl-auto 설정대로 테이블을 생성하게 된 후 실행되었다. 하지만 2.5 버전부터 스크립트가 먼저 실행된 후 JPA ddl-auto가 실행된다. 그렇기 때문에 ddl-auto가 create로 되어있어 data.sql로 insert한 데이터가 다 지워지게 될 수 있다. 이런 경우 defer-datasource-initial..

image