일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코드리뷰
- JPA
- JUnit5
- 프리코스
- 트랜잭션
- REDIS
- yml
- 세션
- 프로그래머스
- 서블릿
- AWS
- 미션
- Level2
- 스프링부트
- 우아한세미나
- Docker
- CircuitBreaker
- AOP
- 의존성
- 우테코
- 자바
- HTTP
- mock
- Paging
- 레벨2
- Spring Batch
- 백준
- 우아한테크코스
- 스프링 부트
- MSA
- Today
- Total
목록전체 글 (159)
늘
이번에는 JPA 기본을 중심으로 Batch 처리에 대해서 조금 다뤄보려고 한다. 저번 시간에 얘기 했던 것처럼 수백만 건의 배치 처리할 때, 일반적인 방식으로 엔티티를 계속 조회하면, 영속성 컨텍스트에 많은 엔티티가 쌓이면서 메모리 부족 오류가 발생한다. 따라서 이러한 배치 처리를 적절한 단위로 영속성 컨텍스트를 초기화해야 한다. 또한 2차 캐시를 사용하고 있다면 2차 캐시에 엔티티를 보관하지 않도록 주의해야 한다. [JPA 등록 배치] 수만 건 이상의 엔티티를 한 번에 등록할 때 주의할 점은 영속성 컨텍스트에 엔티티가 계속 쌓이지 않도록 일정 단위마다 영속성 컨텍스트의 엔티티를 데이터베이스에 플러시하고 영속성 컨텍스트를 초기화해야 한다. EntityManager em = entityManagerFact..

요즘 공부하다 배치 애플리케이션을 자주 보게 되어서 공부를 해보았다. 공부하다 보니 자료도 적어 찾기 어려웠고 대용량 데이터를 다루는 데에 사용한다고 하니 나 같은 대학생 나부랭이에겐 어렵게 다가왔다. 하지만 언젠가는 사용할게 분명하기 때문에 미리 맛보는 겸 공부하고 기록해 보려고 한다! 우선 배치 어플리케이션이 왜 필요하는지 그 이유부터 알아보겠다. 왜 사용하는 가?why why.. wh.. [배치 애플리케이션] 배치(Batch)는 일괄처리라는 뜻을 가지고 있다. 만약 매일 전 날의 데이터를 집계해야 한다고 가정해보겠습니다. 집계 기능은 하루에 1번 수행됩니다. 이를 위해 API를 구성하는 것은 너무 낭비일 것이다. 데이터가 많아서 처리 중 5만 번째에서 실패했다면, 5만 1번째부터 다시 실행할 수 있..

진짜 간단해보였는데, 돌릴때마다 새로운 반례들을 만나면서 생각보다 시간이 오래걸렸다.. 알고리즘은 덱 이라는 자료구조를 이용하여 앞에서와 뒤에서 빼는 방식을 사용해야했다. 그렇지 않고 v.erase(v.begin())으로 앞에서 지우면 시간초과가 나왔다. 그리고reverse할 때, 진짜로 reverse하면 안되고 reverse했을땐 뒤에서, 정방향일 땐, 앞에서 pop해주는 방식으로 해결했다. 주저리 주저리 설명보단 역시 코드로 보는게 빠를듯 하다. 반례를 여러번 고치다보니 조금 지저분하긴 하다.... #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); in..

1차 캐시: @Id와 Entity 스냅샷: 1차캐시에 처음 영속되었을 때의 상태 findByName()과 같이 id가 아닌 값으로 조회를 하면 바로 DB에 접근하게 된다. 플러시 flush(): 영속성 컨텍스트의 내용을 디비에 반영 1차 캐시에 넣어둔게 사라진게 아님! 그냥 반영만 - 동기화 플러시 발생 flush()가 될때 -> 변경 감지-> 수정된 엔티티를 쓰기 지연 SQL저장소 등록 -> 쓰기 지연 SQL저장소의 쿼리 디비에 전송 같은 테이블, JDBC Driver지원, 하이버네이트 같을 때, 디비로 일괄 전송되는 것 영속성 컨텍스트 플러시 할 때 em.flush() - 직접호출 ex) test 트랜잭션 커밋 - 자동 호출 JPQL 쿼리 실행 - 자동 호출 jpql은 객체를 대상으로 하는 sql이므..

https://programmers.co.kr/learn/courses/30/lessons/17687# 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 간단한 진수바꾸기 문제였다. 반복문을 돌면서 원하는 진수로 바꿔서 string형태로 만들어주면 되었다. 너무 단순한 구현문제라 함정이 있을줄 알았는데 아니였다. 코테볼때도 이렇게만 풀리면 좋겠다.....ㅜㅜㅜㅜㅜ #include #include #include using namespace std; string convert(int n, int ..
JPA만 사용하다가 오랜만에 JDBC를 공부해보려고 한다. 어느 정도 JDBC의 작동원리를 알아야 나중에 JPA를 더 깊이 공부할 때도 도움이 될 것 같다고 생각되기 때문이다. 기본적인 사용법을 알아두면 나중에 쓰일 수(?)도 있으니... JDBC는 JPA와 다르게 db에 날리는 쿼리를 직접 작성해야하는 단점이 있다. 대신 복잡한 쿼리를 작성할때는 직접 쿼리를 작성하므로 jpa보다 좋다. JDBC package com.example.demo.controller; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.State..

프로젝트를 하다보면 배포 자동화는 필수가 되었다. 그래서 연습좀 해보려고 한다! 여러 블로그 보고 공부하면서 느끼지만 글로 주절 주절 보다는 그림이 이해하기도 쉽고 직관적이어서 최대한 글을 안쓸계획이다! 다음을 눌러준다. 태그는 건너뛰고 다음처럼 만들어 준다. 옆에 정책을 들어가서 정책을 만듭니다. 인라인 정책 추가하면 안됩니다..(제 삽질한 시간을 생각해서라도..) 다음과 같이 정책을 입력해줍니다. 설명은 입력 안해도 되는데 하려면 영어로만 가능합니다. 본인이 원하는 정책으로 커스텀해서 역할을 만들고 싶을 때 아래와 같이 S3에 접근할 수 있도록 정책을 하나 만들 수 있습니다. 정책이 잘 들어갔는지 확인되면 역할 만들기를 눌러줍니다. 만들어진 해당 역할은 Auto-Scaling과 CodeDeploy로 ..

Jenkins와 Docker를 사용하여 배포 자동화 연습을 해보려고 한다. 예전에 젠킨스 실습해본다고 했었는데 워낙 바쁘다보니(바쁜척) 이제 시작한ㄷ..ㅏ..ㅎ^^ 우선 코드 간략히만 적고 시작하겠다. scripts/deploy.sh (이전에 ec2에 app디렉토리 만들어야 할 것이다.) #!/bin/bash BUILD_JAR=$(ls /home/ec2-user/app/*.jar) # jar가 위치하는 곳 JAR_NAME=$(basename $BUILD_JAR) echo "> build 파일명: $JAR_NAME" echo "> build 파일 복사" DEPLOY_PATH=/home/ec2-user/ cp $BUILD_JAR $DEPLOY_PATH echo "> 현재 실행중인 애플리케이션 pid 확인" ..

개발을 하다 보면 에러나 오류가 무수히 많이 발생하고 매번 블로그들 뒤져보면서 찾기 불편해서 이곳에 정리해두려고 한다. 계속 수정해가면서 이 글에 기록할 생각이므로 에러나 오류가 발생하면 여기서 찾아보자! [포트 죽이기] (power shell) netstat -ano taskkill /f /pid [pid] [Parameter value [1] did not match expected type: ] spring data jpa를 통해 레포지토리 작성할 때, 잘못 작성할때 발생! 쿼리문 주의 [CICD](젠킨스랑 travis)(배포) [2021.08.12] CI CD 하다가 화병 날 뻔했는데 드디어 오류 찾아서 뿌듯함에 사진까지 ㅎㅎㅎ..;;; 이런 오류가 마구 나와서 gralew build 할 때, 문..

자주 햇갈려서 정리해두었다. 짧고 굵게 이해하기 쉽게 정리해봤다. 식별자 부모테이블(상품, 주문테이블) 기본키(PK)가 자식 테이블(주문_상품)의 외래키이자 기본키로 사용되는 관계이다. 자식 테이블의 행(정보)를 추가할 때 부모테이블의 참조 행(상품번호 또는 주문번호)이 없다면 자식테이블의 행을 추가 할 수 없다. : 주문_상품테이블은 상품번호와 주문번호 중 하나라도 없다면 기본키를 만들 수 없게 되고(두개의 외래키가 합쳐 기본키가 되므로) 기본키가 없어 정보를 식별할 수 없으므로 데이터를 넣을 수 없다. : 예를 들면 게시판의 작성글과 댓글의 관계를 식별관계라고 할 수 있다.(작성글이 없다면 댓글도 없다) 식별관계는 - 복합키 관계 비식별자 부모 테이블(상품, 주문테이블) 기본키가 자식 테이블(주문_상..