본문 바로가기

JPA3

JPA를 사용해야하는 이유 모락 프로젝트를 진행하면서 JPA를 사용했지만, 사용해야 하는 이유에 대해서 생각을 정리해보지 못했다. 단순히 SQL을 직접 작성하지 않아도 되기 때문에 사용했다고 생각해왔다. JPA를 왜 사용해야 할까? 여러 가지 이유들이 있다. 1. SQL을 직접 작성하지 않아도 된다. JPA는 실행 시점에 자동으로 SQL을 만들어서 실행하므로 직접 작성하지 않아도 된다. 그렇다면 SQL을 직접 작성한다면 어떤 문제가 발생할까? 첫 번째로 SQL에 의존적인 개발을 하게 된다. 현재 모락 테이블은 아래와 같다. 더보기 모락 테이블 스키마 CREATE TABLE member ( `id` BIGINT NOT NULL AUTO_INCREMENT, `oauth_id` VARCHAR(255) NOT NULL UNIQUE, `n.. 2022. 11. 8.
테스트를 통해 JPA Entity 영속성에 대해 알아보자 (2) 예시로 사용된 코드는 깃허브를 통해 확인할 수 있습니다. 1편에 이어서 작성하는 글입니다. 이 글에서는 EntityManager의 merge 메서드에 대해 다룹니다. 학습을 진행하면서 이미 id 필드가 존재하는 Entity를 save 하면 어떻게 될까? 에 대한 의문이 생겼습니다. 이에 대해서 테스트를 진행하고, 헷갈리는 부분에 대해 정리해볼 수 있었습니다. 테스트는 아래의 Member Entity를 이용하여 진행하였습니다. 1. 이미 저장된 id를 가지는 Entity를 또 save 하면 어떻게 될까? 이에 대해 다음과 같은 테스트를 작성해보았습니다. 멤버1을 저장하고 멤버 1의 id를 이용해 멤버 2를 저장하였습니다. 이때 멤버 2를 저장하였지만, 저장된 결과로 반환된 저장된_멤버 2와는 다른 객체로 .. 2022. 8. 29.
테스트를 통해 JPA Entity 영속성에 대해 알아보자 (1) 예시로 사용된 코드는 깃허브를 통해 확인할 수 있습니다. 모락 프로젝트를 진행하면서 다양한 상황에서 영속성이 어떻게 적용되는지에 대해 정확하게 알지 못하고 JPA를 사용해왔습니다. 따라서 테스트를 통해 영속성에 대한 학습을 진행해보았고 헷갈리는 부분에 대해 정리해볼 수 있었습니다. 1편에서는 EntityManager의 persist 메서드에 대해, 2편에서는 merge 메서드에 대해 다룰 예정입니다. 테스트는 아래의 Member Entity를 이용하여 진행하였습니다. 1. save 하려는 Entity 객체와 save 후 반환되는 Entity 객체는 동일한 객체일까? 다음의 테스트를 통해 살펴보겠습니다. 위의 테스트는 통과합니다. save 하려고 만든 멤버 객체와 save 후 반환되는 저장된_멤버 객체가 .. 2022. 8. 29.