본문 바로가기

Spring/스프링 기본 원리5

[Spring DB] HikariCP는 왜 다른 CP보다 훨씬 빠를까? 2022.09.06 - [Spring/DB Migrator] - [DB Migrator] Spring Boot에 2개 이상의 DataSource 붙이기 [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로의 리팩토링 taler.tistory.com 과거 포스팅인 위의 멀티 데이터소스 글을 다시 돌아보며 보강작업을 하던 중 그래서 왜 HikariCP가더 빠른지에 대해서 궁금해졌다.. 2022. 11. 24.
[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.
[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.
[Spring DataSource] Connection Pool, DataSource 란? 웹 애플리케이션을 개발한다고 할 때 데이터베이스는 거의 필수적이다. 데이터베이스에 데이터를 넣고, 특정 데이터를 읽어오기 위해서는 먼저 데이터베이스에 연결되어있어야 한다. SpringBoot로 프로젝트를 구성한다면 그냥 application.yml에 메타정보를 등록하면 알아서 해주니까 데이터베이스에 어떤 과정을 거쳐서 연결되는지 알 수가 없다. spring: datasource: hikari: driver-class-name: org.postgresql.Driver jdbc-url: "jdbc:postgresql://127.0.0.1:5433/testdb" username: root password: root . 하지만 Spring의 properties 파일이나 yml 파일로 설정을 구성할 때도 위와 같.. 2022. 9. 7.