본문 바로가기

Spring/SpringBoot

(12)
SpringBoot- @Transactional 트랜잭션 트랜잭션 과정에서는 어떠한 동작이 완료되기 전까지 방해가 존재해서는 안된다. 예를 들어서 송금을 하는 일련의 트랜잭션이 있다고 하자. 그 과정은 송금자의 계좌에서 돈이 감소하고, 수신인의 계좌에선 돈이 증가해야한다. 만일 송금자의 계좌의 돈만 감소하고 수신인의 돈은 증가하지 않는 상황은 발생해서는 안된다는 것이다. @Transactional 스프링에서는 @Transactional 어노테이션을 지원한다. 이를 클래스 단위에 붙이면(클래스 선언위에 어노테이션을 사용하면) 해당 클래스의 메소드 모두 트랜잭션을 보장한다. 메소드 개별적으로도 사용이 가능한데 @Transactional에는 readOnly 설정을 할 수 있는데, 만일 어떠한 엔티티의 조회와 같이 데이터의 변경이 필요하지 않은 메소드에 re..
SpringBoot- 테스트 케이스 작성 예시 Member.class package jpabook.jpashop; import lombok.Getter; import lombok.Setter; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; } MemberRepository.class package jpabook.jpashop..
SpringBoot- EntityManager 생성법 @PersistenceContext 어노테이션 기존의 EntityManagerFactory로 EntityManger를 생성해서 트랜잭션을 시작해야 했지만 SpringBoot에서는 build.gradle의 dependencies에 "implementation 'org.springframework.boot:spring-boot-starter-data-jpa'" 를 추가함으로써 @PersistenceContext 어노테이션의 사용이 가능하다. 사용 예시는 다음과 같다 MemberRepository.class package jpabook.jpashop; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager;..
SpringBoot- 기본 스프링 부트 설정 설정 스프링 부트 스타터(https://start.spring.io/)에서 설정 설치 라이브러리: thymeleaf, lombok, spring web, springboot devtool, spring data jpa, (h2 data base: DB는 원하는 걸로) 주의점