마리아디비에서 포스그레로 넘어 가보려고 테스트 시작하는 김에 r2dbc 도 도전해보는 중. 처음이니 일단 무조건 돌아가게만 해보자는 각오로 삽질 시작. 삽질 메모 간단하게, 정확한 설명은 추후에 ...
- saveAll 쓸 때는 Flux 타입 리턴 값 지정해주어야 한다고 어디서 보고 그리 했는데 아무 짓을 안한다. repo.saveAll(..).subscribe(); 이런 식으로 subscribe() 해주니 동작은 하는데 이거 왜 되는지는 아직 모름. 'Reactive Relational Database Connectivity'니 subscribe 한 번 쯤 나와주는게 당연한거다라고 자위하고 곧장 고. 뭐 목표는 이해 보다 실행이니(고민보다 고!) 학습은 후에.
- saveAll 시 'Required identifier property not found for ...' 에러 난다는 글 보긴 했는데 이전부터 히스토리 성으로 키값 체크없이 데이터 무조건 insert 하는 구조라 implements Persistable 써왔었기에 구현부 살짝 손봐주는 것으로 문제 통과.
- 클래스명과 테이블명이 달라서 @Table(name = "...") 애노테이션을 사용해왔다. 그런데 실행해보니 애노테이션 안 먹고 클래스명이 그대로 테이블명으로 적용되면서 테이블 못 찾는 문제 발생. 샘플 소스들 비교해보고 수정한 결과 @Table("...") 애노테이션을 써야 정상적으로 테이블명이 적용되었다. 차이는 기존 애노테이션은 java.persistance 에 구현되어 있는거고, 뒤의 것은 org.springframework.data.relational.core.mapping.Table 로 구현된거.
- id 컬럼 값 없다고 계속 에러 나서 처음에는 위 2번과 관련된 문제라 생각하고 매달렸는데 해결 안나서 고생 좀 하다가 문득 3번과 동일한 문제 아닐까 싶어서 애노테이션을 org.springframework.data.relational.core.mapping.Column 으로 바꾸니 깔끔하게 동작.
- db 처리 시간 대략 확인하기 위해 메서드에 스프링의 stopWatch 이용해 수행 시간 찍어주는 코드 삽입 해놨었는데 실행 다 되었는데도 콘솔에 로그가 안 찍힌다. 잠깐 어? 하면서 스크롤 올려보니 DB 인써트 로그 전에 딱 찍혀 있다. r2dbc 너, non blocking 처리해주는 녀석 맞구나 ㅎㅎ
'Lang' 카테고리의 다른 글
r2dbc, DatabaseClient 첫 테스트 (0) | 2021.09.17 |
---|---|
[Python, Rust]ConnectorX - load data from DBs in the fastest and most memory efficient way. (0) | 2021.08.31 |
[Java]spring-cloud-stream mqtt binder (0) | 2021.07.08 |
[Java] FeignClient, no suitable HttpMessageConverter 에러 (1) | 2021.06.11 |
[Java]Pair, Pair.of() (0) | 2021.06.09 |