Java Stack/Persistence
Spring JDBC와 JdbcOperations
Spring JDBC와 JdbcOperations
2023.08.10Spring Data JDBC를 사용할 때, CrudRepository와 자동생성 쿼리 만으로는 커버가 되지 않는 경우가 반드시 생기고, 이 경우 @Query 보다는 JdbcOperations를 쓰는 것이 낫다. (see [Spring Data JDBC] docs) 따라서 CrudRepository를 아래와 같이 Dao로 확장해서 관리하는 것이 좋다. interface MerchantInfoRepository : NfcJdbcRepository @Repository class MerchantInfoDao( private val merchantInfoRepository: MerchantInfoRepository, private val jdbcOperations: NamedParameterJdbcOperat..
[MyBatis] 객체 안의 객체 매핑하기 (ResultMap과 DTO)
[MyBatis] 객체 안의 객체 매핑하기 (ResultMap과 DTO)
2022.03.12객체 안의 객체 매핑하기 https://mybatis.org/mybatis-3/ko/sqlmap-xml.html# - 복잡한 결과매핑 섹션 부터 참조. 읽어 보면 알겠지만, 연관(Association)을 위한 중첩된 Select 는 N+1 Selects problem으로 인해 추천하지 않는다. `` LEFT OUTER JOIN``을 활용한 관계를 위한 내포된 결과(Nested Results) 방법을 사용하는 것을 권장하고 있다 DTO를 사용하면 굳이 객체 안의 객체 매핑 할 필요 없이, DTO에서 flatten해서 받아도 된다. 어차피 쿼리는 `` LEFT OUTER JOIN``을 사용한다면 컬럼을 flatten 해서 가져오게 된다. 따라서 [`` ResultMap - DTO - Model``] 변환의 ..
[MyBatis] Cache
[MyBatis] Cache
2022.03.08간단히 정리하면, MyBatis는 2가지 캐시를 제공한다. local session cache, second level cache second level cache https://idea-sketch.tistory.com/31 mapper namespace 단위로 적용. `` `` 구문. 캐시 설정 파라미터 : 캐시 size, eviction 방식(e.g., LRU), flushInterval 등 session commit 한다고 캐시가 사라지지 않는다. (설정 파라미터에서 눈치 챌 수 있다.) local session cache https://mybatis.org/mybatis-3/java-api.html - Local Cache 항목 참조 https://idea-sketch.tistory.com/30..
redis - java persistence
redis - java persistence
2020.03.10[redis - infra, cli] Java Redis Client는 다음 두 가지 Jedis Lettuce SpringBoot 2.0부터 lettuce가 기본 Client Lettuce is a fully non-blocking Redis client built with netty providing Reactive, Asynchronous and Synchronous Data Access . https://github.com/lettuce-io/lettuce-core/wiki/Connection-Pooling spring-boot-starter-data-redis-reactive 연동 build.gradle.kts ```kt implementation("org.springframework.boot:s..
[Spring] DB 관련 : Mybatis
[Spring] DB 관련 : Mybatis
2020.03.04Mybatis가 쿼리를 처리하는 방식? 스프링에서는 DB 커넥션을 어떻게 처리하는가? 쿼리 하나 날릴 때 마다 Connection을 맺고 끊는건 비효율적이므로, Connection Pool을 구성하여 Connection을 생성해두고, DB를 사용해야 할 때 Pool에서 커넥션을 빌려 쓰고 반납하게 되어 있다. Spring에서 제공하는 Connection Pool 인터페이스가 바로 `` DataSource`` 각 driver vendor들은 자사 규격에 맞게 `` DataSource`` 인터페이스를 구현해서 제공하고 있음!(커넥션 풀 구현체) ojdbc의 `` OracleDataSource`` jdbc의 `` ~~DataSource`` 각 벤더가 만들어 제공하는게 맞는게, Connection object를..