hanks

[DataGrip] 쿼리 결과 콘솔(에디트) 창에서 확인하기
시스템을 운영할 때 현업에서 데이터 확인을 요청하는 경우가 많다. 테이블 및 데이터 양이 많을 경우 여러 테이블과 같은 테이블이라도 조건을 다르게하여 여러개의 쿼리를 실행할 때가 많은데, 이때 하나의 콘솔창에서 쿼리 결과같이 여러개 나오면 데이터 비교하기 좋다. 1. DataGrip의 Settings 선택 2. 검색창에 show results 입력 3. Show results in editor 체크 위와 같이 설정을 하면 아래와 같이 쿼리 바로 아래에 결과값이 나온다.

[Spring Batch] - Job, Tasklet Step, Chunk Step 개념
Job - 순서를 가진 여러 Step의 목록 또는 모음 - 외부 의존성에 영향을 받지 않고 실행되는 독립적인 작업 Step - 배치처리를 정의하고 제어하는 독립된 작업의 단위 1. Tasklet Step - 간단히 정의한 하나의 작업처리 2. Chunk Step - 한번에 하나씩 데이터를 읽고 chunk를 만든 후 chunk 단위로 트랜잭션을 처리
[Spring Data JPA & Querydsl] - QuerydslPredicateExecutor 사용시 javax.persistence.noresultexception 오류 원인
spring data jpa querydsl spring boot 3.x.x hal-explorer 을 이용하여 개발시 오류에 대해서 기록 JpaRepository, QuerydslPredicateExecutor를 다중으로 상속받은 인터페이스를 이용해서 api를 호출했는데, javax.persistence.noresultexception 오류가 발생. 딱히 문제에 대한 기록도 없고 컴파일 오류도 없기 때문에 멘붕이 왔다. 우선 원인은 3.0 이상 버전을 사용했기 때문에 gradle에 의존성 추가한 디펜던시들이 참고했던 예제와 달라서 발생했다. 2 버전대로 낮추니jakarta를 참조했던 라이브러리들을 모두 javax.persistence로 수정. 또한 스프링 버전에 맞게 각각 라이브러리의 버전을 맞추니 해..
[Spring Data JPA] @Modifying과 @Query를 이용한 벌크 연산
지난번에는 QueryDSL에서 벌크연산을 위한 글을 작성했는데, 이번에는 JPQL에서 벌크연산을 위해서 기록을 남기기 위해 작성하려고 한다. @Modifying @Query 어노테이션을 이용해서 JPQL을 사용할 때 @Query 어노테이션 위에 @Modifying 을 추가해야한다. 간단하게 데이터 처리할 때 유용하다. @Modifying에는 clearAutomatically, flushAutomatically 두개의 속성을 추가로 설정할 수 있다. clearAutomatically 이 속성을 true로 하면 @Query가 실행된 후 1차 캐시를 clear한다. 1차 캐시를 clear한다는 것은 영속성 컨텍스트에 데이터가 clear 된다는 것이고 그렇게되면 DB의 쿼리가 추가로 발생하게 된다. flushA..
[QueryDSL] update 시 in 조건을 사용할 경우
API 개발중 QueryDSL로 in 조건 적용을 하는 방법에 대해 갑자기 생각나지 않아서 찾아보고 기록하기 위해서 작성 입고를 취소하기 위한 기능인데, 입고번호를 여러개 체크해서 요청할 경우의 클래스이다. @Data public static class InboundCancelRequest{ private String inboundNo; } inboundNo를 List로 받아서 벌크 연산 처리 public void inboundCancel(List request) { queryFactory.update(inboundItem) .set(inboundItem.status, false) .where(inboundItem .inbound .inboundNo.in(request.stream() .map(Inbou..

Git 명령어
git status -s: 상태 간단하게 확인git diff: 변경/추가 된 내용 확인cat: 문서의 내용 확인 ex) cat c.txtgit config —global alias.st status: git status를 git st로 줄여서 사git commit -a: git add와 동시에 commitgit commit -am {MSG}: git add와 동시에 commit하며 메세지 입력git branch: 현재 branch 보기git branch {name}: branch 생성git checkout {name}: {name}의 브랜치로 들어간다.git log —branches: branch의 commit상태를 보여준다.git log —branches —graph: branch의 흐름을 보여줌git..

[Spring Framework] - 제어의 역전 (IoC), 의존성 주입(DI) 과 OCP, DIP
최근 스프링 기초 개념부터 다시 차근차근 정리하는 중이다. 오늘은 제어의 역전 (IoC)의 개념을 좀더 명확히 하려고 한다. 제어의 역전을 왜할까? 제어의 역전은 객체나 메서드의 호출을 개발자가 직접 결정하는게 아니라, 외부에서 결정하는 것을 의미한다. 다른 블로그를 찾아보면 프레임워크와 라이브러리의 차이를 예로 들어 설명하거나, 바로 위의 설명처럼 개발자가 아닌 스프링 컨테이너(외부)가 결정한다고 설명한다. 하지만 나는 왜? 라는 의문이 계속 생겨 좀처럼 와닿지가 않았다. '그래서 왜 외부에서 결정하는건데...??' 김영한님의 [스프링 핵심 원리 - 기본편]의 강의 중 [IoC, DI, 그리고 컨테이너] 영상을 보아도 '왜?' 라는 의문이 사라지지 않았는데, 같은 강의 초반 부분 [좋은 객체 지향 설계..
[JPA] - 영속성 컨텍스트에 대해
JPA를 공부하면 항상 따라오는 용어가 있다. 영속성 컨텍스트. Entity를 영구 저장하는 환경이라는 뜻이라고 한다. EntityManger.persist(entity); 위와 같이 영속성 컨텍스트에 entity를 insert 한다. Entity의 생명주기 - 비영속(new/transient): 영속성과 전혀 관계가 없는 새로운 상태 - 영속(managed): 영속성 컨텍스트에 관리되는 상태 - 준영속(detached): 역속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제(removed): 삭제된 상태 1. 비영속 - 객체를 생성했지만 persist를 하지 않아 영속성 컨텍스트에는 관리되지 않는다. - 예: Member member = new Member("MAN"); 2. 영속 - 생성된 객체를 pe..

FileZila 파일질라 설치 방법
리눅스 웹서버에 파일 업로드를 하기 위해 파일질라를 설치하려고 합니다. 1. 파일질라 사이트 접속. https://filezilla-project.org/ 2. Download FileZilla Client 클릭 3. 녹색 Download FileZilla Client 버튼 클릭 4. 무료 다운로드 5. 설치 완료 - IP와 접속 계정, 포트를 입력하고 빠른 연결을 클릭한다