📚 더티 체킹이란?엔티티의 변경 사항을 자동으로 감지해 데이터베이스에 반영하는 기능이다. 📚 더티 체킹의 작동 원리엔티티를 조회할 때, 엔티티 객체의 필드 값이 변경되면 JPA가 이것을 감지한다. JPA는 엔티티의 원본 상태와 현재 상태를 비교해 트랜잭션 커밋 시점에 데이터베이스에 반영한다. 더티 체킹에 의해 변경된 엔티티에 한해서만 UPDATE 쿼리가 나가기 때문에 불필요한 DB 작업을 줄여준다는 이점이 있다. 📚 더티 체킹은 어떤 HTTP 메서드에서 일어날까?엔티티의 변경 사항을 감지해 DB에 반영하는 것이기에 PutMapping에서 일어난다. 📚 더티 체킹의 단점은?많은 엔티티를 한꺼번에 처리할 때에는 성능 저하가 발생할 수 있다. 더티 체킹은 기본적으로 하나의 트랜잭션 내에 있는 모..
🧑💻 이번 포스팅에서는 벌크 연산을 했을 때 발생하는 문제점과 이를 어떻게 해결할 수 있는지에 대해 알아보고자 한다. ✏️ 벌크 연산 대량의 데이터를 한 번에 처리하는 것을 의미 📚 Spring Data JPA에서의 벌크성 수정 쿼리어떠한 벌크 연산을 해 DB를 업데이트했다고 가정해 보겠다. JPA는 데이터 조회 시 영속성 컨텍스트(1차 캐시)에서 데이터를 먼저 찾고 해당 데이터가 없다면 DB를 조회하게 되는 메커니즘이다. 하지만, 벌크 연산을 하면 영속성 컨텍스트를 무시하고 DB에 바로 쿼리를 날리고, 영속성 컨텍스트는 해당 동작을 인지하지 못한다. 때문에, 벌크 연산 이후 데이터를 조회한다면 1차 캐시에서 가져오기 때문에 수정된 데이터를 DB에서 가져오지 못해 데이터 불일치가 일어나게 된다...

🧑💻 이번 포스팅에서는 Bean에 대해 이야기해보고자 한다. 사실 Bean은 객체이지만, 단순히 이렇게 말하면 이해하기 어려울 것이다. 좀 더 정확히 이야기하자면 Spring 컨테이너에서 관리하는 객체만을 Bean이라고 부른다. 우리가 Controller, Service, Repository 클래스에 @Controller, @Service, @Repository를 붙여줌으로써 Spring 컨테이너에게 이들을 Bean으로 등록해 달라고 요청을 하고 있는 것이다. 📚 Spring 컨테이너와 BeanSpring 컨테이너가 Bean을 관리해줌으로써 우리는 Bean 생성, 의존성 주입, Bean 생명주기 관리 등의 편의성을 얻을 수 있다. 애플리케이션이 시작되면 Spring 컨테이너가 초기화되는데, 이 ..
🧑💻 이번 포스팅에서는 Transactional 어노테이션에 대해 다루어보고자 한다.Service 코드에서 @Transactional이 붙은 메서드를 보았다.@Servicepublic class ProjectService { private final ProjectRepository projectRepository; public ProjectService(ProjectRepository projectRepository) { this.projectRepository = projectRepository; } @Transactional public Project createProject(ProjectRequestDto projectRequestDto) { ..
🧑💻 이번에 Spring Boot 공부를 시작했다. 해당 Spring 진영에 요청이 들어왔을 때 프레임워크 내부에서 어떻게 동작하는지 궁금해 알아보고 이해한 대로 정리해보고자 한다. 📚Spring Framework & Spring Boot 이에 대해 이야기하기 전, Spring Framework와 Spring Boot의 차이를 간략하게 이야기하겠다. Spring Framework는 Java 기반 웹 프레임워크이고, Spring Framework위에 구축된 Spring Boot는 Spring Framework에는 없는 개발에 필요한 초기 설정이나 Spring Framework와는 다르게 내장 웹 서버가 있어 더 빠르게 개발 및 테스트가 가능한 것이라 보면 된다. 📚 내장 웹 서버가 있으면 왜 개발 및 테..