다른 테이블에 FK가 포함 된 테이블 계정이 있습니다.
옵션 1 : 내가) (저장 호출 할 때마다하는 다른 테이블의 ID, 다음 업데이트 자체를 검색하기 위해 만든 조인Spring Data JPA를 사용하여 엔티티를 업데이트하는 올바른 방법은 무엇입니까?
@Override
@Transactional(readOnly = false)
public Account changePassword(Account existingAccount, String newPassword){
existingAccount.setPassword(newPassword);
return accountDAO.save(existingAccount);
}
이 방법.
모든 필드는 암호 변경만으로도 여기에서 업데이트됩니다.
편집 :는 나는 내가 매개 변수 (existingAccount)로 개체를 전달 해요 때문에 이루어지고 조인 알아 냈어. 대신 changePassword 메서드에서 찾으면 잘 동작합니다 (조인 없음). 문제는, 유효성 검사를 위해이 엔티티가 컨트롤러에 필요하므로 같은 데이터베이스 호출을 2 번 호출하는 것이 무의미하다는 것입니다.
옵션 2 :
@Modifying
@Query("UPDATE Account SET password=(:pass) WHERE username=(:username)")
public void changePassword(@Param("username")String username, @Param("pass")String pass);
이 방법은 @query 내에서만 정의 업데이트가 실행됩니다.
성능면에서는 옵션 2가 좋지만 옵션 1에서는 jpa와 비슷한 느낌이 듭니다. 어떤 제안도 감사합니다.
당신은 추가하는 것도 정말이없는 Account''의 코드와'AccountRepository' 인터페이스 –
를 추가해야합니다. 옵션 1은 서비스 계층 코드이며 저장소에는 아무 것도없고 옵션 2는 저장소 인터페이스 코드입니다. 서비스 계층은 단지 그것을 호출하고 그 것이다. – Sikor