[JPA] entity manager
·
카테고리 없음
보호되어 있는 글입니다.
[Project] 4dollar - 경계간 매핑하기
·
프로젝트
시작하며헥사고날 아키텍처를 사용해보고 싶어서 시작한 사이드 프로젝트책이나 기술블로그, 세미나 등등 다양한 경로를 통해 접해봤지만 실제 적용해본 적은 없어서 코드를 작성해보며 체득하고 싶었다. 업무에서는 정해진 컨벤션이 있어서 시도해보기 어려워서 사이드 프로젝트에 적용해보면서 어떤 장점이 있는지 공부해보고 싶었다.대략적인 개념은 만들면서 배우는 클린 아키텍처 도서를 보면서 공부했다. 얇은 책이지만 예시코드가 잘 나와있어서 기본적인 갈피를 잡는데 많은 도움이 됐다.나름 DDD도 열심히 공부했는데 코드에 녹여보고 싶다.기술스택 : Spring Boot, Spring Data JPA, Postresql기회가 되면 redis도…여유가 있으면 프론트 작업도 하면 재미있을 것 같다.패키지 구성 - 카테고리 도메인패키..
[Java] Know your java
·
Language/Java
유튜브의 알고리즘에 나와서 봤던 영상을 보고 정리 유튜브 링크자바 코드를 작성할 때 주의하지 않으면 발생할 수 있는 문제들을 예시코드로 보여주고 설명해준다.이런걸 stub toe problem이라고 표현하는게 재미있다.예시 코드를 보여주고 결과를 예측해보라고 할 때 나도 풀어봤는데 그래도 얼추 맞추긴 했다.그래도 평소 신경쓰지 않았던 부분들을 다시 공부할 수 있었다.Remove 메서드// List 예제List numbers = new ArrayList(List.of(1, 2, 3));System.out.println(numbers); // 출력: [1, 2, 3]numbers.remove(1); // 인덱스 1의 요소(2)를 제거System.out.println(numbers); // 출력: [1, 3]..
[Spring Batch] 메타 데이터 테이블 정리
·
Spring Framework/Spring
Spring Batch가 배치 작업의 실행 상태와 이력을 추적하기 위해 자동으로 생성하고 관리하는 테이블사용자가 직접 조작하지 않고, Spring Batch가 내부적으로 모든 배치 실행 정보를 기록해당 테이블을 사용해서 배치 작업 모니터링도 구현해볼 수 있다.실행 이력, 성공/실패 결과 등 다양한 정보를 제공필요한 테이블의 DDL은 Spring Batch Github에서 확인할 수 있다. 여러 종류의 데이터 베이스에 대한 SQL 파일이 있어서 자신이 사용중인 데이터베이스에 맞는 쿼리를 가져와 사용하면 된다.메타 테이블 목록BATCH_JOB_INSTANCE : Job의 기본 정보(이름, hash key)BATCH_JOB_EXECUTION : Job의 실행 이력 : job id, 실행시간, 상태, 실행결과B..
JSCODE 스터디 후기
·
기타
지난 3월부터 지난주까지 매주 금요일 진행했던 자바 면접 스터디 후기입니다. 저녁 8시부터 30분동안은 멘토링을 진행하고 나머지 시간에 조를 구성해서 1인당 약 20분씩 모의 면접을 진행했습니다. 기술적인 질문뿐만 아니라 인성 면접도 준비할 수 있어서 좋았습니다.신청계기자바를 활용해서 업무를 수행하지만 막상 제대로 공부해본 적은 없는것 같아 이번 기회에 공부해보면 어떨까하고 신청했습니다. JVM, GC, 동시성, 스트림 등등 전반적인 내용 모두 공부 했습니다. 아직은 한 번 훑어본 정도긴 하지만 추후 다시 자바 스터디를 한다면 좀 더 깊게 이해 할 수 있을 것 같습니다.KPT 회고잘했던 점, 아쉬움 점, 앞으로 시도할 것을 기준으로 회고를 해봤습니다.Keep : 퇴근 후에도 공부하는 게 어렵긴 하지만 할..
[Spring Batch] skip / retry
·
Spring Framework/Spring
Spring Batch에서 일부 오류 데이터 때문에 전체 배치가 실패하는 문제를 해결하는 방법가령 10만 건 데이터 처리 중 1건의 오류로 전체 작업이 중단되거나, 일시적인 네트워크 오류로 배치가 실패하는 상황을 방지할 수 있다.알아볼 것Spring Batch skip/retry 기능을 실제 프로젝트에 적용Reader/Processor/Writer 각 단계별 오류 처리 동작 방식 이해상황별 적절한 오류 처리 전략 수립skip잘못된 데이터를 제외하고 나머지 처리를 계속해야 할 경우retry네트워크 오류, DB 연결 실패 등 재시도로 해결 가능한 문제일 경우skip / retryskip예외 발생 시 해당 아이템만 제외하고 나머지 정상 데이터는 계속 처리한다.오류 발생 → 해당 아이템 제외 → 다음 아이템 계..
테스트 대역 용어
·
개발
테스트 코드를 작성하면서 InMemoryRepository, FakeRepository, RepositoryStub 를 별다른 기준 없이 네이밍을 작성했다.다른 개발자들과 의사소통을 위해서는 일반적으로 사용하는 네이밍 규칙을 따를 필요가 있다고 생각해 테스트 대역에 사용하는 용어들에 대해 정리Test Double우리말로 번역하면 테스트 대역이다. 여기서 대역은 대신 다른 역할을 하는걸 말한다.(잘 모를땐 주파수 대역을 떠올렸었다…)테스트에서 실제 객체를 대신하는 가짜 객체데이터베이스, 외부 API, 파일 시스템 등과 연결되어 있을 경우 테스트를 작성하기 어려워진다. 이 때 외부 의존성을 대신하는 객체를 만들어 테스트를 작성할 수 있다.외부 의존성 없이 순수하게 테스트Test Double을 사용하면:외부 ..
[JPA] 5개 데이터가 4+1개 쿼리로 나누어지다.
·
Spring Framework/JPA
Spring Data JPA의 saveAll()로 대량 데이터를 삽입할 때 예상과 다른 SQL이 실행되는 것을 발견누가 배치 쿼리를 어떻게, 왜 분할하는지 코드를 찾아본 과정예상 vs 실제 쿼리 실행5개의 프로젝트 데이터를 saveAll()로 저장했을 때:// 5개 엔티티를 한 번에 저장List projects = generateProjects(5);projectRepository.saveAll(projects);예상한 쿼리:# 예상했던 쿼리INSERT INTO project (title,id) VALUES ($1,$2),($3,$4),($5,$6),($7,$8),($9,$10);# 실제 실행된 쿼리# - 4개 + 1개로 분할됨INSERT INTO project (title,id) VALUES ($1,$..