본문 바로가기

JPA4

[JPA] 특정 Table의 원소 개수 가져오기 crudRepository를 확장하는 repository (JpaRepository, MongoRepository 등)을 사용하고 있으며, 해당 repository가 매핑하는 table에 포함된 record 개수를 가져오고 싶을 때는 `count()` 메소드를 사용하면 된다. ... long userCount = userRepository.count(); ... 해당 인터페이스를 통해 나가는 쿼리는 통상적으로 record 개수를 찾을 때 이용하는 select count(*) 쿼리가 나가며, 실행 시간에는 거의 영향을 주지 않는 수준이다. 10만개의 Entity에 대해서 평균적으로 94ms 정도의 시간이 걸린다. 여기서도 신기했던 게, 동시에 날아간 4개의 쿼리는 94ms의 시간이 걸렸지만, 뒤늦게 혼자 .. 2022. 10. 17.
[Spring-data-mongo] Mongo Entity 목록 식별하기 Jpa를 사용하는 대부분의 RDB들에 매핑되는 Entity의 정보를 식별하기 쉽다. 단지 EntityManager의 MetaModel을 호출하고, 해당 모델에서 Entity들의 정보를 가져오기만 하면 된다. 반면 MongoDB에 매핑되는, @Document 어노테이션이 붙은 Entity들의 정보를 식별하기 위해서는 MongoMappingContext를 사용해 getPersistentEntities() 메소드를 사용함으로써 MongoPersistentEntity들의 정보를 가져올 수 있다. ... private final MongoMappingContext mmc; ... Collection> mongoEntityList = new HashSet(mmc.getPersistentEntities()); ..... 2022. 10. 8.
[DB Migrator] Spring Boot에 2개 이상의 DataSource 붙이기 2022.08.30 - [Spring] - [DB Migrator] Spring Boot와 함께하는 DB Migrator 프로젝트 - 1 [DB Migrator] Spring Boot와 함께하는 DB Migrator 프로젝트 - 1 이전에 인턴십을 진행했던 회사에서는 Spring에서 NestJS로의 리팩토링을 담당했었다. 해당 팀에 스프링 개발자가 없어 유지보수에 어려움을 겪던 것이 그 이유. 인턴십 기간 동안 생소한 Typescript taler.tistory.com 이전 글을 보면 알 수 있듯, MongoDB의 데이터를 Postgres로 옮기는 작업을 수행하고자 했고, 이를 Spring-data-mongo, Spring-data-jpa의 도움을 받아 진행하고자 했다. 즉, Spring에 2개 이상의 .. 2022. 9. 6.
[DB Migrator] Spring Boot와 함께하는 DB Migrator 프로젝트 이전에 인턴십을 진행했던 회사에서는 Spring에서 NestJS로의 리팩토링을 담당했었다. 해당 팀에 스프링 개발자가 없어 유지보수에 어려움을 겪던 것이 그 이유. 인턴십 기간 동안 생소한 Typescript를 배우며 결과적으로 총 4개의 API에 대한 리팩토링을 완료했다. 포팅을 할 때 테스트코드는 따로 작성하지 않았는데, 때문인지 약간은 빠른 속도로 포팅이 끝나 인턴십 기간이 총 5일정도 남았다. (주말 포함 7일) 새로운 API를 포팅하기엔 너무 부족한 시간이라 DB migration을 한 번 담당해보기로 했다. 본격적으로 프로젝트에 대한 설명을 시작해보자. 1. 요구사항 당시 Legacy 코드는 NoSQL인 MongoDB를 사용하고 있었다. MongoDB는 검색 등을 빠르게 하기 위해 사용하면 효.. 2022. 8. 30.