대머리개발자

[R2DBC] 바인딩 본문

개발이야기/DataBase

[R2DBC] 바인딩

대머리개발자 2023. 9. 13. 13:57
728x90

https://r2dbc.io/

 

R2DBC

R2DBC 0.8.1.RELEASE: A standard API for reactive programming using SQL databases.

r2dbc.io

R2DBC를 계속 JPA 처럼 생각 하는데... 전혀 연관성이 없는 친구다.

 

기본적으로 PK와 createDate는 DB에서 자동으로 설정한다.

seq                   bigint  primary key auto_increment,
..
createDate            datetime default current_timestamp(),

 

save() 이후 return 받는 T<User> 객체는 DB에서 별도로 설정된 Value가 바인딩이 안 된다....ㅅㅂ

userRepository.save(user)
//.map(User::toProto)                            //------------(1) 
.then(getAndSaveUser(user.getId()))              //------------(2)
.onErrorMap(e -> new DefinedException(e.getMessage()));

해서 DTO로 단순 변경(1)이 아니라 DB에서 조회 하는 방법(2)으로 진행 ---> OK

 

 

전혀 연광성이 없는 친구지만 혹시 테스트 해보았다. (코틀린 + JPA)

  fun save(lottoDto: LottoDto):Lotto{
        return lottoRepository.save(modelMapper.map(lottoDto, Lotto::class.java))
}

{
    "id": 4,
    ....
    "userId": "abcd",
    "regDt": null
}

JPA의 경우도 날짜는 바인딩이 되지 않는다.

But PK(ID) 값은 또 정상 바인딩...

 

혼돈의 카오스!!!

 

나름 정리 하자면 객체의 불변성 위한 처리라고 머리를 이해시키고 넘어가자.. 할일이 많으니.ㅠ

 

최대한 PK(auto_increament)를 제외하고 미리미리 미리뽕 하자.

 

728x90

'개발이야기 > DataBase' 카테고리의 다른 글

mysql json type  (1) 2024.01.05
게시판 코드에서...고민s  (0) 2023.10.24
R2DBC ...불행의 시작...(2)  (0) 2023.06.09
R2DBC ...불행의 시작...  (1) 2023.04.12
R2DBC 동적 쿼리는...쥐쥐s  (0) 2023.04.05