JPA
Spring Boot에 MySQL Replication datasource 설정하기(관련 property 병합하기)
Spring Boot에 MySQL Replication datasource 설정하기(관련 property 병합하기)
2024.02.23프로젝트에 DB Replication을 적용할 일이 생겼는데요. 여러 블로그 글을 참고하여 Spring Boot에 적용해보았던 내용을 기록해보고자 합니다. 이미 Spring Boot에 DB Replication을 적용하는 방법에 대해 자세하게 알려주는 글들이 많아서 의미가 있을지는 모르겠습니다만 약간 다른 방식으로 적용한 부분도 있어서 '지나가다가 참고해봐야지'하는 생각으로 봐주시면 좋을 것 같습니다. 환경은 kotiln에 Spring Boot 3버전이고 DB는 MySQL을 사용하였습니다. 1. 필요한 gradle 설정 plugins { // noarg, allOpen kotlin("plugin.jpa").version("1.9.20") } noArg { annotation("jakarta.persist..
[JPA] Transactional과 쓰기지연 쿼리에 대한 간단한 이슈 정리(updatedAt 관련)
[JPA] Transactional과 쓰기지연 쿼리에 대한 간단한 이슈 정리(updatedAt 관련)
2022.12.23JPA를 사용하면서 마주했던 이슈에 대해서 기록하고자 블로그에 정리하게 되었습니다. A Entity가 있고 B Entity가 있는데 A Entity에 대한 내용을 수정하고 A Entity의 필드 값들을 B Entity에 담아서 DB에 insert 요청을 하기 위한 save 작업을 하는 내용이었습니다. 코드 상으로 보면 다음과 같습니다. @Transactional fun saveHistoryAfterCafeInfoUpdated(cafeId: Long, request: UpdateDto) { // 대상 cafe 조회 val cafe = cafeRepository.findByIdOrNull(cafeid) ?: throw RuntimeException("cafe not found") // cafe 내용 변경 c..
[JPA] Hibernate dialect와 H2 데이터베이스 호환 이슈
[JPA] Hibernate dialect와 H2 데이터베이스 호환 이슈
2022.11.22김영한님 JPA 강의 듣다가 hibernate.dialect내용을 바꿔서 코드 실행을 하는 부분이 있었는데 이 과정에 겪었던 에러 이슈와 처리했던 내용을 기억하고자 이 곳에 기록하게 되었습니다. 📌 문제 상황 jpa 관련 설정은 위의 내용과 같습니다. h2 database를 사용했기 때문에 h2 driver와 db dialect(방언)는 H2Dialect로 하였습니다. 이렇게 설정하고 jpa 코드 실행하면 아무 문제 없이 잘 수행합니다. 여기서 oracle 쿼리는 어떻게 적용이 되는지 보기 위해 dialect 설정을 Oracle12Dialect로 변경했는데요. 여기서 문제가 발생합니다. ddl-auto를 create로 설정한 상황에서 코드 실행하면 JPA Entity 내용대로 drop, create 순으..
[JPA] 변경감지 개념과 @Transactional 위치에 따른 변경감지 사용
[JPA] 변경감지 개념과 @Transactional 위치에 따른 변경감지 사용
2022.02.15데이터 변경 로직에서 JPA 변경감지 기능을 자주 접할 수 있는데요. JPA 변경감지에 대해서 짤막한 정리와 함께 @Transactional과 같이 사용할 때 어떠한 점을 유의해야 되는지에 대해서 정리해보고자 합니다. 📌 데이터 변경을 위한 기본 로직 DB 테이블에 저장되어 있는 데이터의 정보를 수정하기 위해 update 하는 로직을 개발하고자 한다면 다음과 같은 논리적 절차를 거치게 될 것입니다. 트랜잭션 시작 변경하고자 하는 데이터의 id(주로 primary key)를 통한 where 조회 조회한 데이터에 수정할 내용들로 교체 update 처리 트랜잭션 커밋 물론 DB 콘솔 상에서는 변경할 데이터의 id를 가지고 있다면 update 쿼리하나로 바로 수정하면 됩니다. 하지만 어플리케이션단에서는 변경할 ..
[JUnit] 단위, 통합 테스트 한꺼번에 진행하기 (SpringBootTest, WebMvcTest)
[JUnit] 단위, 통합 테스트 한꺼번에 진행하기 (SpringBootTest, WebMvcTest)
2022.01.25JPA 관련 테스트 어플리케이션을 개발하다가 JUnit을 사용하여 간단한 테스트 코드를 작성하게 되었습니다. 매번 어플리케이션 실행 후 Postman으로 api 확인하는 것도 귀찮더라구요. 개발 진행 후에 실제로 api가 잘 작동하는지 수시로, 빠르게 확인해보고자 JUnit을 도입하게 되었습니다. 여기서는 간단한 예시를 가지고 Controller 단의 단위테스트를 위한 구성과 Service에서 실제 DB까지 잘 적용이 되는지 확인해보고자 Service 단에서는 통합테스트로 구성하면서 겪은 내용들을 기록하고자 합니다. 📌 1. 기본적인 구성 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' impleme..