객체 최초로 persist 할때는 엔티티가 된 복사본 반환하지 않고 원본이 그 자체로 엔티티가 되잖아
댓글 7
자세한 이유는 모르겠다만, 머지하면 어차피 디비에서 다시 읽어와야하잖아
그럼 굳이 기존 객체를 재사용 해서 얻을게 없는데
김대기(waitkim)2023-02-28 17:44
답글
jpa 레포지토리 save 구현 보니까 엔티티에 new 플래그 넣어놓고 얘가 새로 들어오는 애면 persist하고 아니면 merge하더라구
그래서 레포.save(객체) 하면 객체가 detach일때는 원래 객체랑 달라진다는건데 내가 기대했던 동작이랑 조금 달라서 물어봄
구글 보니까 보통 객체 = 레포.save(객체) 이렇게 안하고 그냥 레포.save(객체) 이렇게 하는거같아서
익명(118.235)2023-02-28 18:07
답글
보통 객체 = 레포.save(객체)로 하는데?
중의적으로 동작하는걸 왜 굳이 리턴값 안씀?
김대기(waitkim)2023-02-28 18:18
답글
아 그래?? jpa 처음 배워서 몰랏슴.. ㅠㅠ
익명(118.235)2023-02-28 18:46
답글
이건 jpa 문제가 아니야
값 전달해서 내부에서 수정시키능거 안티패턴임
메서드는 인자 -> 응답이 이상적인 형태
자세한 이유는 모르겠다만, 머지하면 어차피 디비에서 다시 읽어와야하잖아 그럼 굳이 기존 객체를 재사용 해서 얻을게 없는데
jpa 레포지토리 save 구현 보니까 엔티티에 new 플래그 넣어놓고 얘가 새로 들어오는 애면 persist하고 아니면 merge하더라구 그래서 레포.save(객체) 하면 객체가 detach일때는 원래 객체랑 달라진다는건데 내가 기대했던 동작이랑 조금 달라서 물어봄 구글 보니까 보통 객체 = 레포.save(객체) 이렇게 안하고 그냥 레포.save(객체) 이렇게 하는거같아서
보통 객체 = 레포.save(객체)로 하는데? 중의적으로 동작하는걸 왜 굳이 리턴값 안씀?
아 그래?? jpa 처음 배워서 몰랏슴.. ㅠㅠ
이건 jpa 문제가 아니야 값 전달해서 내부에서 수정시키능거 안티패턴임 메서드는 인자 -> 응답이 이상적인 형태
isNew도 굳이 객체를 반환하는 이유가 뭐겠냐?
아하.. ㄱㅅㄱㅅ