Wing Pointer - Text Select
[JPA] 엔티티 매니저는 엔티티를 관리하는 매니저
·
Backend/Spring Boot
엔티티 매니저에 대해 설명해 주세요. 프로젝트에서 Spring Data JPA를 활용해 Repository를 구현했는데, 이때 Repository는 내부적으로 `EntityManager`를 자동 주입받아 사용한다. 따라서 개발자가 직접 `EntityManager`를 생성하거나 주입하지 않아도, Spring Data JPA의 기본 구현체인 `SimpleJpaRepository`가 `EntityManager`를 통해 영속성 컨텍스트와 상호작용하는 작업을 수행한다. 처음에는 `EntityManager`라는 이름만 듣고, JPA에서 엔티티 객체를 관리하는 하나의 싱글톤 객체일 것이라고 생각했다. 하지만 실제로는 요청(트랜잭션) 단위로 생성되는 객체이며, 싱글톤으로 관리되는 것은 그 상위의 EntityManage..
[JPA] ddl-auto 옵션의 동작과 사용 방법
·
Backend/Spring Boot
오늘의 주제는 두둥. JPA의 `ddl-auto` 옵션은각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요? `ddl-auto` 옵션은 DDL 동작 방식에 대해서 정의하는 걸로 알고 있는데 Spring Boot 프로젝트에 Flyway DB 마이그레이션 툴을 도입할 때 이 옵션 설정해서 문제를 해결했던 경험이 있다. 처음에는 `ddl-auto=update`로 설정한 상태에서 Flyway를 적용했고 앱 실행 시 Flyway가 먼저 수행되기 때문에 Hibernate가 스키마를 덮어쓰는 문제가 발생했다. 그래서 Flyway를 스키마 마이그레이션의 단일 진입점으로 쓰고 Hibernate가 스키마를 건드리지 않도록(Flyway가 스키마를 만들면 그 엔티티와 스키마를 검증만 함) `ddl-auto=none` 설정..
[Spring Data JPA] 새로운 Entity를 판단하는 방법
·
Backend/Spring Boot
매일메일 서비스를 구독하여 매일 개발 지식을 정리하는 습관을 가져보려고 한다. 처음 받은 메일 주제는 다음과 같다. Spring Data JPA에서새로운 Entity인지 판단하는 방법은 무엇일까요? 이제껏 Spring Boot 사용해서 프로젝트를 해왔었는데 ORM으로 Spring Data JPA를 사용해 왔다. 왜냐하면 일단 전반적인 트렌드를 따라서 선택한 것도 있고 무엇보다 구현해야 할 코드 수가 줄어 구현 편의성에 이점이 있기 때문에 선택한 것이 크다. 어노테이션으로 간편하게 DB 연동하고 CRUD 작업을 할 수 있어서(심지어 쿼리 작성도 필요 없음) 편하게 백엔드를 구축할 수 있었다. 먼저 새로운 Entity인지 판별이 되어야 그에 따라 정상적으로 생성이나 수정이 수행될 것 같은데 내부 작동 방식에..