반응형

Develop 51

JPA 테스트 코드로 알아보자!

JPA 설정 및 테스트 코드 작성은 이전글에 작성하였습니다. 이번글에서 다루는 소스코드는 github에 있습니다. JPA 저장 후 조회 @Test void entity저장후조회() { //given final Long id = 1L; final String storeName = "스토어1"; final String storeAddress = "주소1"; Store store = Store.builder() .id(id) .name(storeName) .address(storeAddress) .build(); storeRepository.save(store); //when Store resultStore = storeRepository.findByName(storeName); //then Assertion..

Develop/spring-data 2020.11.05

Spring Data JPA 시작 그리고 예제

작성된 모든 소스는 github에 있습니다. 이번글에서는 JPA 설정부터 테스트코드(Junit5) 까지 작성하였습니다. 다음글에서 JPA 테스트 코드 기준으로 작동 원리에 대해서 정리하겠습니다. 프로젝트 생성 gradle dependencies를 제외한 설정은 default값 그대로입니다. application.yaml spring: profiles: active: local --- #local spring: profiles: local datasource: url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC&characterEncoding=utf8 username: root password: vnfmsqka0727! drive..

Develop/spring-data 2020.11.05

Spring Data JPA란?

JPA란 무엇일까? Java Persistence API 인터페이스(Repository) 모음 자바 ORM 기술 표준 ORM이란? Object-relational mapping으로 객체 관계 매핑이다. 객체는 객체대로, 관계형 데이터베이스는 데이터베이스대로 설계하고 ORM이 중간에서 매핑한다. 작동 원리 어플리케이션에서 JPA를 사용하면 JPA 내부에서 JDBC API를 통해 SQL을 호출하고 DB와 통신한다. 장점 xml에 작성하는 query보다 간편하다. 테이블 DDL 수정 이력을 관리할 필요없다. Database의 table은 JPA의 Entity이다. table을 수정한다면 Entity를 수정하여 배포하기 때문에 history에 남게 된다. 유지보수에 용이하다. 테이블에 직접 접근하지 않고 Ent..

Develop/spring-data 2020.11.05

Spring Batch 실행 후 서버 내리는 방법, Jenkins Schedule 사용 시 서비스 관리 방법

Spring Batch도 만들었고 Jenkins 스케줄도 만들었으니 정상작동 테스트 진행하였습니다. Jenkins에서 스케줄 돌고 정상 배포 완료! 라고 생각했으나 두 번째 스케줄부터 에러 발생. already port!! 문제 원인은 너무나 당연한 것이었다. java -jar 로 배포하니 boot 내장 톰캣으로 기동하고 다음 스케줄이 돌 때까지 서비스가 살아있었던 것이었다. Spring batch 작업은 static main 메소드를 실행하면 내부에서 Job을 마무리하고 main 메소드도 마무리가 된다. 그럼 static main 메소드에 프로세스 kill을 하면 되겠구나! 아래와 같은 소스 추가로 문제를 해결하였다. public static void main(String[] args) { System..

Develop 2020.11.04

Spring batch 스케줄 생성! [Jenkins]

이전글에서는 Spring Batch를 만들었습니다. 이번 글에서는 생성된 Spring Batch를 Jenkins로 스케줄 설정하여 실행시켜 보겠습니다. 이 글은 작성하기에 앞서 우아한 형제들 이동욱님의 티스토리를 참조하여 작성하였습니다. 다양한 방법 스케줄에도 다양한 방법이 있습니다. Linux Cron Quartz Cloud Serverless Spring Batch Admin CI Tool Choice 위처럼 다양한 방법이 있지만 CI Tool Jenkins를 사용하였습니다. Linux Cron : 정상적으로 배포했는지 어떻게 알지?? 로그 다 열어봐야하나.. Quartz : 스케쥴링 시간 변경할때마다 소스 수정하고 재배포하고 또 테스트 하고 싶으면 다시 수정하고 배포하고 또 수정하려면 배포하고 수정..

Spring Batch 란? (예제 소스 포함)

작성한 내용은 우아한 형제들의 이동욱님 블로그, 세미나를 참조해서 작성하였습니다. 테스트 및 적용 내용은 Github에 올려두었습니다. 사내에서 배치 프로젝트를 맡아 Spring Batch를 적용하기로 결정하였습니다. Spring Batch 사용 이전 Spring Batch 이전 스케쥴링 작업은 Scheduler, Quartz 등으로 Spring에서 Annotation으로 선언하여 지정된 시간에 스케줄링을 돌려 구현해놓은 클래스를 호출하여 로직을 실행한다. 기존 스케쥴링 방식으로는 대용량 데이터를 처리하는 도중 에러가 발생하면 처리했던 모든 데이터를 롤백시키고 다시 처음부터 처리해야하고, 몇 번째 데이터에서 에러가 발생했는지, 해당 배치 로직이 성공했는지 실패했는지 로그처리를 하여 확인해야하는 불편함이 ..

728x90
반응형