일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- docker
- CI/CD
- Oracle
- map
- CKA
- 뷰
- Kubernetes
- 해시맵
- ORM
- DevOps
- CI
- k8s
- Di
- dabase
- SpringMVC
- 자바
- hibernate
- 알고리즘
- cd
- builder-pattern
- superBuilder
- programmers
- 코딩테스트연습
- Spring
- java
- IntelliJ
- 프로그래머스
- Vue
- vuejs
- JPA
- Today
- Total
목록전체 글 (110)
문홍의 공부장
애플리케이션을 개발하다 보면, 하나의 테이블에서 조회하는 단순 조회 쿼리 뿐 아니라, 다수의 테이블을 조인하여 값을 조회하는 경우가 매우 빈번하게 발생한다. Querydsl은 결과를 사용자 정의하는 두 가지 방법, 즉 행 기반 변환을 위한 FactoryExpressions와 집계를 위한 ResultTransformer를 제공합니다. Querydsl의 FactoryExpression 구현 기능은 com.mysema.query.types.Projections클래스를 통해 , ResultTransformer 는 com.mysema.query.group.GroupBy를 통해 구현되어 있다. 1. Projection Projection 이란, Querydsl을 이용해 entity전체를 가져오는 것이 아니라 조회 ..
JPA를 사용하다보면 여러가지 상황을 캐치하여 작업을 해야할 경우가 생기곤 한다. 예를 들어, 데이터의 수정/삭제가 발생하였을 시 그 요청 이력을 관리하여야 한다고 가정하자. 이 때 모든 수정/삭제 로직이 끝날 때 이력 관리 테이블에 데이터를 저장하는 로직을 추가하는 것은 매우 비효율적인 일이다. 하이버네이트에서 제공하는 JPA EntityListeners 를 활용하여 엔티티의 생명 주기에 따른 이벤트를 처리할 수 있다. Callback Events PrePersist: persist() 를 호출하기 전, 새로운 엔티티가 영속성 컨텍스트에 관리되기 직전에 호출된다. 식별자 생성 전략을 사용한 경우, 엔티티의 식별자는 아직 존재하지 않는 상태이다. PostPersist: persist()를 호출한 후, f..
공통 응답 형식을 만들 때, 이전에는 컨트롤러 단에서 ResponseDto 를 객체를 이용하여 응답값을 필드에 set 하여 내려주었다. 이 경우, 모든 API 에 ResponseDto 를 직접 적어주어야 한다. 누락되는 케이스가 존재할 수 있고, 공통되는 영역이니 한 곳에서 관리하고자 하는 욕구가 생긴다. 스프링에서 제공하는 ResponseBodyAdvice 인터페이스를 이용하여 공통 응답 형식을 만들 수 있다. public interface ResponseBodyAdvice { boolean supports(MethodParameter returnType, Class> converterType); @Nullable T beforeBodyWrite(@Nullable T body, MethodParamet..
오타니 쇼헤이의 만다라트 계획표에 영감을 받아 나도 올해 목표는 만다라트 기법으로 적어 보았다! 올해도 작년도 '재미있는 삶' 을 모토로 살고 싶다. 작년 계획표를 보니 막상 '재미'를 위한 계획이나 시도는 많이 부족했던 것 같다. (실제로 Don't work too hard 하는 것은 어느정도 성공했으나 (이직 준비로 인해) 여가 시간은 재미 보다는 공부로 채워졌다.) 막상 올해도 적다보니 개발/커리어 쪽으로는 칸이 쉽게 채워졌는데 재미/취미 영역은 칸 채우기가 쉽지 않다. 개발자로 사는 이상 공부를 뗄 수야 없겠지만, 올해는 여가는 정말 여가로 보낼 수 있는 한 해가 되었으면 한다. 올해도 파이팅!
이번 연간 회고를 쉽게 하기 위해 월간 회고를 열씨미 써왔다...!! 목표달성2023, 얼마나 이루었나 [👍] 1. 블로그 재개편 하반기에 이직 준비 하면서 블로그 글 쓰는 게 많이 줄긴 했지만, 그래도 올 해 목표했던 블로그 재개편은 성공적으로 이루었다! 앞으로도 블로그 포스팅은 내가 충분히 고민하고 공부한 내용만을 적고, 컨퍼런스 등 외부 활동은 후기를 남기고, 매달 매년 회고하자! [👍] 2. 이직을 위한 코테 공부 그래도 사람이 하면 된다고(!) 도저히 뭐래는건지 모르겠던 DFS, BFS 도 Leetcode 의 Blind75 커리큘럼을 따라가며 꾸준히 풀다보니 조금은 감을 잡을 수 있었다. (물론 아직도 잘 못하긴 함 ㅠ) 그 덕에 코딩테스트 과제 전형을 통과해보는 소중한 경험도!!! 할 수 있..
1. 이직 길었던 이직을 향한 여정에 마침표가 찍혔다. 이래저래 서류도 많이 넣고 면접도 많이 넣었는데, 진심을 다했던 곳에 최종 합격하여 이직을 하게 되었다. 이직을 준비하며 내 이력에 대하여 다시 한 번 점검하고, 면접에 대한 두려움을 떨쳐냈고, 합류를 결정한 곳 외에도 2곳에 최종합격을 했었다. 이를 통해 자신감을 충전하고, 최종까지 좋은 결과를 이끌어내지 않았나 싶다. 이직을 시작하던 8월, 회고글에 '정말 가고 싶은 회사에 가야지. 이제 곧 5년차가 되는 만큼(정말 무거운 숫자군), 이른 바 '시장에서 가장 잘 팔리는 연차' 이니 만큼 이 소중한 기회를 만족할 수 있는 자리에 사용하고 싶다' 라고 적었었다. 그 때 마음 속으로 계속 되뇌인 다짐대로 결정한걸까? 열과 성을 다해 준비했고, 바랐던 ..
블로그에 업로드 하는 글이라고는 회고글 뿐이군... 밀리는 글감들 언젠가 정리하리 1. 내부과제 삽질의 연속 내부과제하며 이전에 궁금했지만 다루지 못했던 것들, 또 새로운 것들을 많이 접하고 있다. 1. Keycloak 삽질기 내부과제 기획 때 부터, 서비스 포털을 비롯하여 Jenkins, Loki, Grafana 등의 다양한 서비스의 인증/인가를 위하여 SSO 를 고려하였다. 잘 알려져있는 Keycloak 을 사용하기로 하여 OSS 에는 잘 적용 되었는데 (내가 한 건 아니지만 ^^;) 우리 서비스 포털이 문제였다. react + spring boot + keycloak 을 연동하기 위해 엄청난 삽질을 굴레 속에 클라이언트와 서버의 keycloak client 를 분리하여 관리하여야 한다는 결론을 내었..
## 1. 어쩌다보니 DevOps 는 아직 진행 중 내부과제를 시작했다. 새로운 기술 스택들을 다양하게 접할 수 있는 것은 좋지만......... 이 과제를 통해 나아가고자 하는 회사의 방향성에 공감하지 못하고 있어 일의 동기 부여가 많이 떨어진다. 어쨌거나 앞에 놓여진 과제에 집중하고는 있으나.. 마음 잡기가 어려운 요즘.... ## 2. 사이드 프로젝트 사이드 프로젝트에서 DB 마이그레이션을 진행했다. 기존 서버에서 AWS RDS 로 이관했는데, 사용하지 않는 데이터를 정의하고 TOBE 모델링에 맞추어 데이터를 이관하는 작업을 수행했다. 복잡도가 높지 않아서 어떻게든 해내긴 했는데, 사이드 이펙트가 있을지 솔직히 걱정되기는 하지만..... 개발 단계에서 2차, 3차가 이루어 질 것이라 생각하고 우선은..