[스프링부트와 JPA활용1] - 스타트

박준수·2022년 11월 14일
0

@GenerateValue

  • @Id : 데이터베이스 테이블의 기본 키(PK)와 객체의 필드를 매핑시켜주는 어노테이션입니다.
    • @Id만 사용할 경우 기본 키를 직접 할당해 주어야 합니다.
    • 기본 키를 직접 할당하는 대신 데이터베이스가 생성해주는 값을 사용하려면 @GeneratedValue를 사용하면된다.

@GenerateValue : 기본 키를 자동 생성해주는 어노테이션이다.

  • IDENTITY, SEQUENCE, TABLE 전략이 있다.

Reference : @GenerateValue

@PersistenceContext

  • 영속성 컨텍스트 : 엔티티를 영구 저장하는 환경

Reference : 영속성 컨텍스트

@Transactional

트랜잭션 : 모든 작업들이 성공적으로 완료되어야 작업 묵음의 결과를 적용하고, 어떤 작업에서 오류가 발생했을 때는 이전에 있던 모든 작업들이 성공적이었더라도 없었던 일처럼 완전히 되돌리는 것이다.

데이터베이스를 다룰 때 트랜잭션을 적용하면 데이터 추가, 갱신, 삭제 등으로 이루어진 작업을 처리하던 중 오류가 발생했을 때 모든 작업들을 원상태로 되돌릴 수 있다. 모든 작업들이 최종적으로 데이터베이스에 반영하도록 한다.

스프링에서 @Transactional을 이용하여 트랜잭션 처리 하는 방법
=> DB와 관련된, 트랜잭션이 필요한 서비스 클래스 혹은 메서드에 @Transactional 어노테이션을 달아주면된다. @Transactional이 붙은 메서드는 메서드가 포함하고 있는 작업 중에 하나라도 실패할 경우 전체 작업을 취소한다.

결론 : 일련의 작업들을 묶어서 하나의 단위로 처리하고 싶다면 @Transactional을 활용하자.

Reference : @Transactional


영속성 컨텍스트에서 식별자가 같으면 같은 엔티티로 인식한다.

profile
방구석개발자

0개의 댓글