inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

플러시

data jpa 공부하다가

211

jiyoon jeon

작성한 질문수 2

0

data jpa 공부를 하다가 영속성 컨텍스트가 이해가 되지않아서 다시 보고있습니다.

제가 Service 클래스에서 Repository.save()를 하고 id값을 가지고 왔습니다.

id는 

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "member_id", nullable = false)
    private Long id;

로 되어있구요.

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class MemberService {

    private final MemberRepository memberRepository;

    @Transactional
    public Long create(MemberRequest memberRequest) {
        Member member = memberRequest.toMember();
        Member savedmember = memberRepository.save(member);
        System.out.println("id = " + savedMember.getId()); // null이 출력 
        return savedMember.getId();
    }
...}

MemberService는 위와 같이 작성하였구요. 

save를 하고 꺼낸 Member의 id값을 리턴해주고싶은데

생각해보니까 save를 할땐 db에 쿼리를 보내기 전이라 null이 리턴하는 건가 ? 싶어서 영속성 컨텍스트를 공부해보는 중인데도 감이 안잡혀서요.

 저런 경우 id를 어떻게 리턴해주면 될까요? ...

혹시 소스코드가 부족하시다고 생각되면 말씀해주시면 감사하겠습니다! 더 첨부해서 올리도록 하겠습니다!!! 

JPA java

답변 1

0

김영한

안녕하세요. jiyoon jeon님

 

JPA는 영속성 컨텍스트에 저장될 때 id가 있다는 것이 보장됩니다.

(id가 없으면 영속성 컨텍스트에 보관될 수 없습니다.)

그러니까 em.persist()를 호출하고 나면 id가 항상 있어야 합니다.

따라서 해당 코드의 id 값도 정상 조회되어야 합니다.

 

다시 한번 확인해보시고, 만약 그래도 문제가 있으면

 

전체 프로젝트를 압축해서 올려주세요.

1. 인프런 질문 링크를 꼭 포함해주세요.

2. 어떻게 실행할 수 있는지 알려주세요.

감사합니다.

 

실무 조언 관련 질문입니다.

0

36

1

H2데이터베이스 파일 생성

0

45

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

47

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

45

1

JPQL 메소드와 락

0

47

1

Delivery @OneToOne

0

54

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

84

2

UnsupportedOperationException 발생

0

80

3

H2 Database 연결이 안됩니다.

0

86

2

연관관계 매핑 질문드립니다.

0

77

2

h2데이터베이스 실행오류

0

103

2

persistence.xml

0

100

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

74

1

영속성 컨텍스트

0

59

1

JPA 프록시

0

86

1

Native Query와 MyBatis

0

60

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

81

1

임베디드 타입 예시 코드 관련 질문

0

110

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

89

3

인텔리제이 패키지 커서 단축키 질문

0

100

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

133

1

양방향 연관관계 시 연관관계 주인을 설정하는 이유

0

67

1

임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.

0

95

1

데이터베이스가 초기화되는 것 같아요

1

172

2