본문 바로가기

분류 전체보기26

[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] 테스트주도개발 시작하기 2022.09.21 - [Spring/DB Migrator] - [DB Migrator] SpringBoot 동적으로 MongoRepository 생성 및 등록하기 [DB Migrator] SpringBoot 동적으로 MongoRepository 생성 및 등록하기 2022.09.20 - [Spring/DB Migrator] - [DB Migrator] SpringBoot 동적으로 JpaRepository 생성 및 등록하기 [DB Migrator] SpringBoot 동적으로 JpaRepository 생성 및 등록하기 설명은 싸다(?) 코드를 보여줘라 h.. taler.tistory.com 이전 글의 말미에서 앞으로의 프로젝트 로드맵을 언급했다. 다시 가져와보자면 아래와 같다. 작업 분산 로직 구성하기 테.. 2022. 10. 3.
Failed to load driver class org.postgresql.Driver in either of HikariConfig class loader or Thread context classloader 에러 잘 돌아가던 DB 설정이 갑자기 안돌아갔다. 기존의 잘돌아가던 코드에 변경을 준 것은 아니라는 점을 토대로 버전에 변경이 생겼나 살펴봤다. 우선 에러 전문: Caused by: java.lang.RuntimeException: Failed to load driver class org.postgresql.Driver in either of HikariConfig class loader or Thread context classloader 간단히 요점을 말하자면 build 파일이 깨져서 발생한 문제였다. 근거는 build.gradle에 따로 버전을 명시하지 않았다는 점 (지원하지 않는 버전일 확률이 낮다.), rebuild를 수행한 이력이 없는 점(이 또한 갑자기 버전이 꼬일 리 없음을 의미한다)이 있었다... 2022. 10. 2.
[DB Migrator] SpringBoot 동적으로 MongoRepository 생성 및 등록하기 2022.09.20 - [Spring/DB Migrator] - [DB Migrator] SpringBoot 동적으로 JpaRepository 생성 및 등록하기 [DB Migrator] SpringBoot 동적으로 JpaRepository 생성 및 등록하기 DB Migrator는 사용자의 편의를 최대한 봐주면서 Data Migration이 진행되는 것을 목표로 한다. 처음 인턴 했던 스타트업의 기술 블로그에도 작성했듯 목표로 했던 기능 중 첫 번째 편의성 기능은 Reposit taler.tistory.com 이번에도 이전 글과 거의 같은 Spring 프로젝트 빌드 이후에 동적으로 Repository Interface를 등록하고, 이를 사용할 수 있도록 하는 것이 목표이다. 하지만, MongoReposit.. 2022. 9. 21.
[DB Migrator] SpringBoot 동적으로 JpaRepository 생성 및 등록하기 DB Migrator는 사용자의 편의를 최대한 봐주면서 Data Migration이 진행되는 것을 목표로 한다. 처음 인턴 했던 스타트업의 기술 블로그에도 작성했듯 목표로 했던 기능 중 첫 번째 편의성 기능은 Repository를 자동으로 생성하는 것이다. 그 이유는 생각보다 간단한데, 사용하는 Repository method가 기본적으로 findAll과 save 뿐이었다. 그래서 모든 Repository 코드가 아래와 같았다. 원래 업무로 맡았던 DB의 Entity만 해도 60개가량 됐는데, 해당 코드들에 대해서 모두 이런 텅 빈 Repository 코드를 일일이 써주는 것은 정말 비효율적이라고 생각했다. 심지어 만약 내가 findAll이나 save가 아닌 다른 method를 통해서 데이터 읽기 및 저.. 2022. 9. 20.
[Spring DB] Hikari DataSource로 이해하는 DataSource - 1. Connection Pool 생성하기 이전 포스팅: 2022.09.07 - [Spring/스프링 기본 원리] - [Spring DataSource] Connection Pool, DataSource 란? DataSource는 메타데이터를 통해서 Connection Pool을 생성하고, 해당 ConnectionPool과 상호작용해서 사용자에게 여러 인터페이스를 제공한다는 것은 알겠다. 하지만 어떻게 하는 지는 알 수 없다. 그렇게 크게 알 필요가 있을 것 같지는 않지만 그냥 궁금해서 한 번 파해쳐봤다. 지금부터는 그래서 DataSource가 어떻게, 어떤 과정을 거쳐서 제 역할들을 하고 있는지 HikariDataSource 코드를 사용해서 한 번 알아보자. Recall: DataSource 생성 위 코드는 DataSource Bean을 직접 .. 2022. 9. 7.