SpringBoot 기본 동작 방식

먹어보고·2023년 3월 31일
0

SpringBootApplication 하위에 있는 모든 걸 ComponentScan을 해서 자동으로 빈 등록

@PersistenceContext -> Spring entitiy manager를 주입을 해줌 (EntitiyManager 에 자동으로 주입)

@PersistenceUnit -> EntityManagerFactory 직접 주입 가능

@Service -> component scan으로 대상이 되어서 빈으로 등록

javax와 spring annotation 이 있지만,
spring annotation의 옵션이 다수이므로 추천
@Transcational -> Data 변경 시 꼭 필요함
readOnly = true -> 조회 시 성능 최적화(데이터 변경 X)

@Autowired
단점이 있다. (바꿀 수 없음)
setter Injection으로 주입도 가능.
-> public void setMemberRepository{this.memberRespository = memberRepository;}
@RequiredArgsConstructor (가장 나은 방법-> lombok이 있을때 사용 가능)
-> final 변수만 생성자를 만들어줌

//스프링부트 테스트
RunWith(SpringRunner.class)
@SpringBootTest <- Autowired 지원
@Transactional <- 기본 Rollback , 데이터 변경이 있을 경우 사용

Test 케이스는
Given
When
Then 으로 나눠서 작성하는걸 추천

CASCADE 범위 :
라이프사이클에서 동일하게 관리할 경우.
다른 것들이 쓰지 않는 Private할 경우.
공통 혹은 여러개 쓸 경우 CASCADE 사용 X

JPA 더티체킹(변경력 감지):
변경된 사항들에 맞게 update 쿼리가 나간다.

Test(데이터변경이 있을 경우, 외부 DB를 사용하지 않고 자바에 메모리 디비 사용)
디렉터리
main
test 로 나뉨

0개의 댓글