강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

혁뚱혁뚱님의 프로필 이미지
혁뚱혁뚱

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 서비스 개발

회원가입 로직 질문입니다.

작성

·

349

0

```java

 public Long join(Member member) {
        validateDuplicateMember(member);
        memberRepository.save(member);
        return member.getId();
 }

```

회원 가입 로직을 위에 보이시는 구현처럼 구현하셨는데

```java

public Long save(Member member){
em.persist(member);
return member.getId();
}

```

save로직은 리턴값을 getId로 리턴해주는 로직이 있어 

 

```java

public Long join(Member member) {
validateDuplicateMember(member);
return memberRepository.save(member);
}

```

저는 save를 호출하고 리턴받은 getID를 그대로 리턴해 주었습니다. 

 

해당 방법을 사용하지 않은 이유는 getId를 리턴해준다 라는 의미를  명시적으로 하기위해서 저렇게 표현을 해주신 건가요??

 

항상 좋은 강의 감사합니다.

퀴즈

JPA에서 SQL과 JPQL 쿼리의 주요 차이점은 무엇인가요?

성능 최적화 방식

데이터 타입 지원 범위

테이블 기반 vs 엔티티 객체 기반

파라미터 바인딩 방식

답변 1

2

안녕하세요. 혁뚱혁뚱님, 공식 서포터즈 OMG입니다.

 public Long join(Member member) {
        validateDuplicateMember(member);
        memberRepository.save(member);
        return member.getId();
 }

해당 코드의 경우 join의 반환 값은 파라미터로 받은 member의 id를 반환하기 때문에 save()의 반환 값이 무엇이든 혹은 있던 없던(void 인지 아닌지) 상관이 없습니다.

반면

public Long join(Member member) {
validateDuplicateMember(member);
return memberRepository.save(member);
}

위의 코드의 경우 save의 반환이 무엇인지 확실히 하기 위해서는 코드를 봐야 알 수 있습니다.

첫번째 방식은 내가 작성한 코드를 나중에 다시 보거나 혹은 내가 개발한 코드를 다른 사람이 봤을 때 개발 의도를 명확히 알 수 있다는 장점이 있습니다.

감사합니다.

혁뚱혁뚱님의 프로필 이미지
혁뚱혁뚱

작성한 질문수

질문하기