일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 객체지향 쿼리 언어
- Domain Driven Design
- JPQL
- 도메인 주도 개발 시작하기
- 자바 ORM 표준 JPA 프로그래밍
- cicd
- ddd
- 한국대학생it경영학회
- scheduling messages with rabbitmq
- 30기
- 이펙티브자바
- 큐시즘
- kusitms
- 교육기획팀원
- 교육기획팀
- rabbitmq-delayed-message-exchange
- java
- Spring
- GitHub Actions
- 영속성
- reactive operaton
- 자동처리
- JPA
- 최범균
- RESTClient
- springboot
- delayed message plugin
- jdbc
- Spring Batch
- 밋업프로젝트
- Today
- Total
목록Backend (32)
코딩은 마라톤

학습하게 된 계기지금 하고 있는 프로젝트가 기능 구현은 다 끝났지만, 인증과 관련해서 액세스 토큰만 사용하기 때문에 짧은 유효시간으로 잦은 로그인이 발생했다. 그래서 리프레시 토큰을 추가해서 안정성을 높이고자 했는데,, 모든 에러를 처리해줬음에도,, 500 에러만 계속 떠서 무슨 이유에서 에러가 발생하는지 알 수 없었다.. 그 이유를 최근에서야 알게 됐는데 바로 Filter 때문이었다. 필터에서 내가 커스텀한 ServiceException이 발생 시 에러 메시지를 보내고, 그 외에 모든 에러는 500 서버 에러를 보낸다. 하지만 ServiceException은 거진 Service 레이어에서 발생하기 때문에 필터에서 디스패처 서블릿으로 넘어간 후 에러가 발생하여 필터에서 catch하지 못하는 상황이었다..

Chunk 기반의 Step에서 ItemReader, ItemProcessor, ItemWriter가 존재한다.이번 글을 통해 CSV, JDBC, JPA의 데이터를 읽어오는 ItemReader를 소개하고자 한다. CSV File ItemReaderA flat file is any type of file that contains at most two-dimensional (tabular) data. Reading flat files in the Spring Batch framework is facilitated by the class called FlatFileItemReader, which provides basic functionality for reading and parsing flat files. ..

스프링 배치 기본 구조 Job Launcher 가 Job을 실행하고 Job이 Step을 실행한다. Job Repository : db 또는 메모리에 스프링 배치가 실행할 수 있도록 메타 데이터를 관리하는 클래스 Job : 배치의 실행 단위 N개의 Step을 실행할 수 있고, 흐름(Flow)을 관리할 수 있다. Step : Job의 세부 실행 단위, N개가 등록돼 실행된다. Step의 실행 단위는 크게 2가지다. Chunk 기반 : 하나의 큰 덩어리를 n개씩 나눠서 실행 Task 기반 : 하나의 작업 기반으로 실행 Chunk 기반 Step은 ItemReader, ItemProcessor, ItemWriter가 있다. ItemReader : 배치 처리 대상 객체(Item) 를 읽어 ItemProcessor,..

현재 Github Actions와 Docker를 이용해 CICD를 구축했다. 대략 1분 30초 정도 소요되는데 이 시간을 줄일 수 있는 방법이 있을지 찾아보다가 도커 캐시를 이용하면 시간을 단축할 수 있다고 알게 되었다. Docker Layer, Cache 도커 캐시를 관리하기 위해선 도커 레이어를 먼저 알아볼 필요가 있다. 도커 이미지는 Dockerfile의 명령어들이 차례로 실행되면서 레이어를 생성한다. ubuntu는 A, B, C로 구성되어있고 그 ubuntu를 베이스로 가진 nginx 이미지는 nginx만 추가된다. 만약 레이어를 사용하지 않으면 Dockerfile 명령어가 실행되면서 동일한 작업이 반복되어 파일 용량이 커지고 이미지 생성 시간이 길어지게 되는 단점이 있다. 따라서 레이어 방식을 ..

이전 게시물에서도 작성했지만 나는 4월 5일 회사 면접을 보았다.면접 중에 면접관님께서 물으셨다.면접관님 : request dto에서 @Getter를 쓴 이유가 뭐예요? 프론트에서 request 요청을 서버에서 어떻게 받는지 과정을 알아요?나 : 음.. Entity 클래스에서 request를 가지고 Entity 객체를 생성하는데 이때 request dto의 필드는 private로 되어있기 때문에 @Getter를 통해 가져오려고 하였습니다 !면접관님 : 프론트에서 request 요청을 서버에서 어떻게 받는지, @Getter는 왜 사용하는지 공부해보면 좋을 거 같아요.이렇게 면접관님께서 학습할 부분을 알려주셔서 dto에서 왜 @Getter를 사용하는지, 프론트에서 주는 요청을 어떻게 서버에서 받는지 찾아 ..

근황https://developer-anxi.tistory.com/27 [계획] 2024.03 ~ 2024.061. 자바 ORM 표준 JPA 프로그래밍 책 끝내기. - 방학 동안 끝내려고 했으나 ... 방학 때 다른 길에 빠져 공부에 소홀했다. 그래서 1학기 종강 전까지 책을 끝낼 예정이다 !!! 2. 코딩테스트 합격자 되기developer-anxi.tistory.com 이글 쓴지 거의 한달이 다 되어가네요,,매주 3개 이상 블로그 글 작성을 다짐했는데 이뤄지지 않았습니다,, 변명을 하자면 저는 현재 동아리에서 팀 프로젝트와 개인 프로젝트를 진행하고 있습니다.근데 팀 프로젝트에서 이슈가 하나 생겨서 그걸 해결하려다 시간이 벌써 이렇게 되버렸네요,,차차 이 내용은 블로그에 정리해서 기록하도록 하겠습니다.C..
임베디드 타입(복합 값 타입) 새로운 값 타입을 직접 정의해서 사용할 수 있다. 이를 임베디드 타입이라 한다. @Entity public class Member { ... // 집 주소 표현 private String city; private String street; private String zipcode; ... } 위 코드에서 회원 엔티티의 집 주소를 나타낼 때, 모든 정보를 풀어서 저장한다. 이는 객체지향적이지 않으며 응집력만 떨어뜨린다. 따라서 풀어쓰지 않고 [집주소]를 가지도록 임베디드 타입을 사용한다. @Entity public class Member { @Embedded Address homeAddress; // 집 주소 ... } @Embeddable public class Addres..
8.1 프록시 엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다. 회원 : 팀 = N : 1 회원과 팀의 정보를 출력할 때는 회원과 연관된 팀의 이름을 출력하기 때문에 둘 다 사용한다. 하지만 회원의 정보만을 출력할 때는 연관된 팀 엔티티는 전혀 사용하지 않는다. (함께 조회하는 것은 비효율적이다.) 따라서 JPA는 이런 문제를 해결하고자 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공한다. 이것을 "지연 로딩" 이라 한다. 지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이를 "프록시 객체" 라 한다. 8.1.1 프록시 기초 Member member = em.find(Member.class, "member..