Java & kotlin 기반으로 Spring 을 개발하시는 분들은 너무나 익숙한 그림일텐데요 오늘은 Application과 JPA 단에 대해서 깊이 알아보는 시간보다는 DataSource를 통해서 어떻게 DataBase와 통신하는지에 대해 알아보기 위한 게시글입니다 ㅎㅎ 2021.06.19 기준으로 spring-jdbc 제일 최신 버젼인 5.3.8 을 기반으로 알아보도록 하겠습니다 DataSource란? 먼저 우리는 DataSource가 무엇인지 알아야됩니다 DataSource가 무엇일까요? 개발을 조금 해보았거나, 가벼운 토이 프로젝트로 DataBase와 연결하는 작업을 진행할 때 아래와 같은 설정을 해보신 경험이 있으실 겁니다 바로 Application DataBase 간의 Connection을 맺..
목차 Kotlin Spring Batch 목차 개념정리 Job & Step / Scope? Reader Writer Processor 개념정리 Spring Batch에서 가장 중요한 요소 3개는 바로 Job Step Reader / Writer / Processor 3개가 존재합니다 Job & Step / Scope? Job은 Spring Batch 실행시에 Job Name을 지정해서 실행할 수 있으며 --job.name=addressChangeJob 와 같이 런타임에 어떠한 Job을 실행할 것인지 결정할 수 있습니다 Step 같은 경우에는 실제로 Job에서 어떠한 과정을 가지고 흐를 것인지 결정하게 하는 요소인데요. 가장 중요한 요소는 바로 @Scope(value = "job", proxyMode = ..
Spring Context on Test 오늘은 Spring Context와 Junit의 Life Cycle에 대해 알아보는 시간을 가질까 합니다 이전 게시글에 작성된 Junit의 Life Cycle에 대해 보고 오셨나요..? ㅎㅎ 참고: huisam.tistory.com/entry/junit 번외편 - Junit LifeCycle과 @ExtendWith 에 대해 알아보자 JUnit 일반적으로 Spring 기반의 프로젝트에서 테스트를 다루게 된다면, 대부분의 경우에는 Junit 기반의 테스트를 작성하게 됩니다 그런데, Junit을 사용할 때 주의할 점이 몇 가지 있는데요 우리가 huisam.tistory.com 일반적으로 Junit은 Method 혹은 Class 단위로 Life Cycle을 가집니다 하지..
JUnit 일반적으로 Spring 기반의 프로젝트에서 테스트를 다루게 된다면, 대부분의 경우에는 Junit 기반의 테스트를 작성하게 됩니다 그런데, Junit을 사용할 때 주의할 점이 몇 가지 있는데요 우리가 무심코 알고 지내지 못했던 사실들에 대해서 공부해보자 합니다 Junit의 생명주기? 테스트가 실행될 때 우리는 이 생명주기가 어떻게 되는지 알아볼 필요성이 있습니다. 왜냐하면, Spring 통합테스트(=Integration Test)를 작성하다보면, 어쩔 수 없이 하나의 Context 로 여러개의 테스트를 실행하는 경우가 존재할 수 밖에 없기 때문이죠 물론 Spring Context 를 사용하지 않는 방향이 제일 좋은 방향성이지만, 보다 철저한 테스트를 위해서 Context 를 Load 할 수 밖에..
Feign Client spring cloud의 중요 요소중의 하나인 feign client 에 대해서 알아보자 EnableFeignClient 가장 중요한 것은 역시 설정 파일인데요 feign 에서 제공하는 @EnableFeignClients 를 활용하면 정말 좋습니다 기본적으로 class 을 가져오는 방식과 basepackage 를 기반으로 scan 하는 방식 이 있는데요 basePackage를 기반으로 가져온다면.. 더 많이 편리하게 사용할 수 있겠죠? feignClient가 추가될 때마다 환경 설정들을 추가적으로 할 필요가 없으니까요 또한, 보통 Feign 레벨의 client를 한번 더 감싸서 어떻게 처리할 것인지 결정하게 되는데요 이 경우에도 같이 @ComponentScan 을 같이 해준다면, ..
영속성 상태란? 흔히 JPA 에서는 객체 상태를 영속성 상태라고 하는 기준에 의거하여 Hibernate가 객체를 관리하게 되는데요.. 핵심적인 상태는 총 3가지 입니다 Managed(persist) 상태 : 영속성 컨텍스트에 저장된 상태 Detached(clear, detach) 상태 : 영속성 컨텍스트에 저장되었다가 분리된 상태 = 준영속 상태 Removed(removed) 상태 : 삭제된 상태 영속 상태 조금 쉽게 코드로 이야기하자면, EntityManager에 의해서 관리되는 상태가 바로 영속성 상태입니다 em.persist(team) persist 메서드는 주로 JPARepository에서 save시 일어나게 되죠.! 준영속 상태 영속성 상태에서 벗어나서 영속성 컨텍스트가 관리하지 않으면 준영속 ..