반응형 전체 글63 JPA 벌크 UPDATE 뒤 조회값이 그대로라면: flush와 clear의 순서 벌크 UPDATE의 반환값은 1인데, 곧바로 조회한 엔티티에는 예전 값이 남아 있다. 이때는 갱신 쿼리를 다시 실행하기 전에 DB의 값과 지금 보고 있는 객체의 값을 나누어 확인해야 한다.JPQL 벌크 수정은 DB를 바꾸지만, 이미 읽어 둔 객체를 새 값으로 채워 주지는 않는다. 보존할 변경이 있다면 flush → 벌크 UPDATE → clear → 재조회 순서를 검토하자. 먼저 반영할 변경과, 이후 분리될 객체의 범위를 알아야 이 순서를 안전하게 쓸 수 있다.같은 ID인데 객체는 OLD, DB는 NEW영속성 컨텍스트는 JPA가 엔티티 객체를 관리하는 범위다. 여기서 관리 중인 Account 하나를 먼저 읽고, 그 계정의 status만 벌크 수정해 보자. 초기 데이터는 id=1, status=OLD, n.. Spring Data/JPA 2026. 10. 26. Docker Compose의 depends_on만으로 DB 연결 오류가 사라지지 않는 이유 DB를 먼저 띄우도록 depends_on을 넣었는데도 앱이 Connection refused로 종료될 수 있습니다. 짧은 depends_on 문법과 service_started는 시작 순서를 정할 뿐, DB가 연결을 받을 때까지 기다리지는 않기 때문입니다. DB 준비를 기다리려면 healthcheck와 condition: service_healthy를 함께 설정해야 합니다.여기서도 확인할 것이 남습니다. PostgreSQL이 연결을 받는 상태와 앱이 올바른 암호로 접속해 필요한 테이블을 조회하는 상태는 다릅니다. 어떤 검사를 기다리게 했는지에 따라 healthy가 알려 주는 범위도 달라집니다.DB 시작과 연결 수락은 다릅니다다음은 app 서비스가 db 다음에 시작하도록 지정한 설정입니다. 기존 Compo.. 개발도구 2026. 10. 26. REQUIRES_NEW를 썼더니 커넥션 풀이 멈춘다? 바깥 연결을 쥔 채 기다리는 이유 바깥 트랜잭션을 잠시 중단해도, 이미 빌린 연결은 풀에 돌아가지 않습니다. 안쪽 REQUIRES_NEW는 별도의 연결을 빌려야 합니다. 두 요청이 바깥 연결을 하나씩 쥐고 있다면, 연결 두 개짜리 풀에는 안쪽에 빌려줄 연결이 남지 않습니다.여기서 “멈춘다”는 것은 연결을 얻지 못해 기다리는 증상입니다. Spring JDBC의 DataSourceTransactionManager와 HikariCP를 사용하고, 바깥에서 연결을 확보한 뒤 별도 빈의 안쪽 메서드를 동기 호출한 조건으로 살펴보겠습니다. 지연 연결 프록시는 사용하지 않았습니다.바깥 연결을 쥔 채, 안쪽 연결을 더 빌립니다REQUIRES_NEW는 바깥 트랜잭션에 참여하지 않고 독립된 물리 트랜잭션을 시작합니다. 이번 JDBC 구성에서 연결의 흐름은 .. Spring Data/DataSource와 Connection Pool 2026. 10. 26. @Transactional의 readOnly = true는 쓰기를 막을까? H2와 PostgreSQL로 확인하기 readOnly = true만으로 모든 쓰기가 막히지는 않습니다. 같은 INSERT를 실행해도 H2에는 행이 저장됐고, pgJDBC 기본 설정으로 연결한 PostgreSQL은 쓰기를 거부했습니다. 차이는 읽기 전용 설정이 JDBC 드라이버를 거쳐 DB에서 어떻게 처리되는지에 있습니다.아래 비교는 Spring JDBC와 DataSourceTransactionManager를 사용했습니다. Spring Framework 7.0.10, H2 2.5.252, pgJDBC 42.7.14, PostgreSQL 18.6에서 외부 Spring 빈을 호출해 일반 테이블에 쓰는 경우입니다. JPA의 변경 감지나 flush를 설명하는 예제는 아닙니다.같은 INSERT를 실행한 뒤 몇 행이 남았을까각 실행은 비어 있는 memo.. Spring Framework 2026. 10. 25. Git 커밋을 잘못했을 때, push 전후로 reset과 revert 고르는 법 커밋을 누른 뒤 빠뜨린 파일이나 잘못 넣은 코드를 발견했습니다. 다시 만들면 될 것 같지만, reset 옵션을 잘못 골라 작업 파일까지 잃을까 걱정됩니다. 먼저 다른 사람이 이미 이 커밋을 바탕으로 작업하는지, 변경한 파일은 남겨 둘 것인지 두 가지를 확인하세요.아직 공유하지 않은 마지막 커밋은 reset으로 위치를 옮겨 다시 구성할 수 있습니다. 이미 공유된 이력은 revert로 반대 변경을 새 커밋에 남기는 편이 협업 흐름을 유지하기 쉽습니다. 여기서는 부모 커밋이 있는 일반 커밋 한 개를 다룹니다. 최초 커밋이나 merge 커밋은 같은 명령을 그대로 적용하지 않습니다.먼저 작업 파일과 되돌릴 커밋을 확인합니다git statusgit diffgit diff --cachedgit log --onelin.. 개발도구 2026. 10. 9. Docker 용량이 부족할 때, 이미지·빌드 캐시·볼륨 중 무엇부터 정리할까? 빌드 중에 저장공간이 부족하다는 메시지가 뜨면, 검색창에 Docker 정리 명령부터 입력하게 됩니다. 이때 한 번에 많이 지우는 명령을 고르기보다 용량을 차지하는 것이 빌드 캐시인지, 이미지인지, 데이터 볼륨인지 먼저 구분하세요. 다시 만들 수 있는 파일과 데이터베이스 내용은 같은 방식으로 다루기 어렵습니다.이 글은 사용량 확인 → 대상별 정리 → 볼륨 별도 검토 순서로 설명합니다. 명령은 현재 선택된 Docker 환경에 적용되므로, 여러 서버나 컨텍스트를 오가는 사람은 첫 줄부터 확인하는 편이 좋습니다.지우기 전에 사용량과 연결된 환경을 확인합니다docker context showdocker system dfdocker system df -vdocker context show로 적용할 환경을 확인한 뒤.. 개발도구 2026. 10. 9. JPA fetch join과 페이징, 아직도 같이 쓰면 안 될까? Hibernate 버전별 차이 N+1을 줄이려고 fetch join을 붙였는데, 목록에 페이지 제한을 걸자 메모리에서 페이징한다는 경고가 뜹니다. 검색하면 ‘컬렉션 fetch join과 페이징은 함께 쓰면 안 된다’는 설명이 많습니다. 그런데 Hibernate 7.4부터는 지원하는 데이터베이스에서 이 조합을 처리하는 방식이 달라졌습니다. 이제는 사용 중인 Hibernate 버전과 실제 SQL을 함께 봐야 합니다.이 글은 게시글 하나에 댓글 여러 개가 달린 Article.comments 컬렉션을 기준으로 설명합니다. 같은 HQL을 Hibernate 6.6.0.Final과 7.4.12.Final에서 실행하고, 결과뿐 아니라 SQL의 페이지 제한 위치를 비교했습니다.댓글 행 두 개와 게시글 두 개는 다릅니다게시글 1번에 댓글 세 개, 2번.. Spring Data/JPA 2026. 10. 9. Postman에서는 되는데 브라우저에서는 CORS 오류? Spring Boot 확인 순서 Postman에서는 JSON이 잘 오는데 프런트엔드에서 호출하면 CORS 오류가 납니다. 서버가 죽은 것도 아닌데 브라우저만 실패하니, 일단 모든 요청을 허용하고 싶어집니다. 이때는 설정부터 넓히기보다 브라우저가 보낸 출처, OPTIONS 사전 요청, 실제 API 응답을 차례로 확인하는 편이 빠릅니다.CORS는 브라우저가 다른 출처의 응답을 자바스크립트에 공개할지 판단하는 규칙입니다. API 도구나 curl의 성공만으로 브라우저에서도 읽을 수 있다고 결론 내릴 수 없습니다. 아래에서는 허용한 프런트엔드와 포트 하나가 다른 프런트엔드를 비교합니다.주소창의 출처와 허용 목록이 같은지 봅니다출처는 스킴·호스트·포트의 조합입니다. http://localhost:5173과 http://localhost:5174는.. Spring Security 2026. 10. 9. 전입신고·확정일자·임대차신고, 계약일과 이사일에 각각 해야 할 일 계약은 먼저 쓰고 이사는 한 달 뒤에 하는 경우가 많습니다. 그래서 전입신고·확정일자·임대차신고를 이사한 날 한꺼번에 처리하면 된다고 생각하면 기한을 놓칠 수 있습니다. 임대차신고의 30일은 계약일부터, 전입신고의 14일은 실제 이사일부터 세기 때문입니다.세 제도는 이름만 다른 같은 신고가 아닙니다. 전입신고는 주민등록상의 거주지를 옮기는 절차이고, 확정일자는 임대차계약서의 날짜를 공적으로 확인받는 절차입니다. 주택 임대차신고는 일정한 지역·금액의 계약 내용을 신고하는 제도입니다. 함께 처리되는 경우가 있어도, 각각 무엇이 완료됐는지 확인해야 합니다.계약한 뒤에는 임대차신고 대상부터 확인합니다부동산거래신고법 제6조의2는 대상 계약을 체결한 날부터 30일 이내에 신고하도록 정합니다. 잔금을 낸 날이나 입주.. 정책, 제도 2026. 10. 9. 실업급여 받으면서 내일배움카드를 써도 될까? 훈련비와 훈련장려금 구분 실업급여를 받는 동안에도 국민내일배움카드로 직업훈련을 받을 수 있습니다. 다만 카드 발급과 훈련과정의 요건을 충족해야 하며, ‘수강료 지원’과 ‘통장에 들어오는 훈련장려금’은 다르게 봐야 합니다. 구직급여를 받는 기간과 겹치는 훈련장려금은 지급되지 않습니다.학원 안내에서 ‘국비 지원’이나 ‘장려금 지급’이라는 말을 봤다면, 내 상황에도 같은 조건인지 확인해 보세요. 수업료가 줄어드는 것, 현금을 받는 것, 수강 사실이 실업인정에 반영되는 것은 각각 확인할 항목입니다.카드 한도는 학원비를 위한 지원금입니다고용24 발급안내에 따르면 국민내일배움카드의 기본 훈련비 지원 한도는 5년간 300만원입니다. 일정한 대상은 200만원을 추가 지원받을 수 있습니다. 누구나 처음부터 현금 500만원을 받는다는 뜻은 아닙니.. 정책, 제도 2026. 10. 9. 중도퇴사자 연말정산, 재취업한 사람과 쉬고 있는 사람은 어떻게 다를까? 퇴사할 때 마지막 급여에서 세금을 돌려받았는데, 연말이 되자 다시 연말정산 이야기가 들립니다. 이미 끝난 일인지, 다음 회사에 서류를 내야 하는지 헷갈릴 만합니다. 퇴사할 때 회사가 한 정산과, 그해의 소득·공제를 빠짐없이 반영했는지는 따로 확인해야 합니다.먼저 같은 해에 다시 취업했는지 보세요. 재취업했다면 새 회사에 전 직장 소득을 합쳐 정산할 자료를 냅니다. 연말까지 쉬고 있다면 전 직장의 정산 결과와 빠뜨린 공제를 확인하고, 필요한 내용을 다음 해 5월 종합소득세 신고 때 보완할 수 있습니다. 아래는 일반적인 근로소득 정산 기준이며, 퇴직금에 붙는 퇴직소득세와는 다른 이야기입니다.퇴사한 달에도 회사가 세금을 정산합니다소득세법 제137조에 따라 회사는 퇴직하는 달의 근로소득을 지급할 때 정산합니다... 정책, 제도 2026. 10. 9. 자진퇴사해도 실업급여를 받을 수 있을까? 인정 사유와 준비할 증빙 스스로 사직서를 냈더라도 실업급여를 받을 수 있는 경우가 있습니다. 다만 정당한 이직 사유가 인정되고, 가입기간과 구직 의사·능력 등 나머지 수급요건도 충족해야 합니다. 힘들어서 그만두었다는 설명만으로 수급 여부가 결정되지는 않습니다.이 글은 일반적인 근로자의 구직급여를 기준으로, 어떤 사유를 살펴보고 퇴사 전후에 무엇을 남겨 두면 좋을지 정리한 안내입니다. 일용근로자·예술인·노무제공자·자영업자의 별도 요건은 다루지 않습니다.‘자진퇴사인가’ 다음에는 ‘왜 그만둘 수밖에 없었나’를 봅니다정당한 사유 없이 개인 사정으로 퇴사한 경우에는 원칙적으로 구직급여 수급자격이 제한됩니다. 반면 고용보험법 시행규칙 별표 2에는 수급자격이 제한되지 않는 정당한 이직 사유가 정해져 있습니다.아래는 자주 확인하게 되는 사유입.. 정책, 제도 2026. 10. 9. 이전 1 2 3 4 ··· 6 다음 반응형