Daily log

최신글

[JPA] - 영속성 컨텍스트에 대해

/* 과거 다른 블로그에 작성했던 내용입니다. */  JPA를 공부하면 항상 따라오는 용어가 있다.영속성 컨텍스트.Entity를 영구 저장하는 환경이라는 뜻이라고 한다. EntityManger.persist(entity);위와 같이 영속성 컨텍스트에 entity를 insert 한다. Entity의 생명주기- 비영속(new/transient): 영속성과 전혀 관계가 없는 새로운 상태- 영속(managed): 영속성 컨텍스트에 관리되는 상태- 준영속(detached): 역속성 컨텍스트에 저장되었다가 분리된 상태- 삭제(removed): 삭제된 상태 1. 비영속 - 객체를 생성했지만 persist를 하지 않아 영속성 컨텍스트에는 관리되지 않는다. - 예:Member member = new Member("MAN..
Spring
2024.12.17

[Spring Framework] - 제어의 역전 (IoC), 의존성 주입(DI) 과 OCP, DIP

/* 과거 다른 블로그에 작성했던 내용입니다. */   최근 스프링 기초 개념부터 다시 차근차근 정리하는 중이다.오늘은 제어의 역전 (IoC)의 개념을 좀더 명확히 하려고 한다.제어의 역전을 왜할까?제어의 역전은 객체나 메서드의 호출을 개발자가 직접 결정하는게 아니라, 외부에서 결정하는 것을 의미한다.다른 블로그를 찾아보면 프레임워크와 라이브러리의 차이를 예로 들어 설명하거나, 바로 위의 설명처럼 개발자가 아닌 스프링 컨테이너(외부)가 결정한다고 설명한다. 하지만 나는 왜? 라는 의문이 계속 생겨 좀처럼 와닿지가 않았다.'그래서 왜 외부에서 결정하는건데...??'김영한님의  [스프링 핵심 원리 - 기본편]의 강의 중 [IoC, DI, 그리고 컨테이너] 영상을 보아도 '왜?' 라는 의문이 사라지지 않았는데..
Spring
2024.12.17

[Spring & QueryDSL] update 시 in 조건을 사용할 경우

/* 과거 다른 블로그에 작성했던 내용입니다. */  API 개발중 QueryDSL로 in 조건 적용을 하는 방법에 대해 갑자기 생각나지 않아서 찾아보고 기록하기 위해서 작성 입고를 취소하기 위한 기능인데, 입고번호를 여러개 체크해서 요청할 경우의 클래스이다.@Datapublic static class InboundCancelRequest{ private String inboundNo;} inboundNo를 List로 받아서 벌크 연산 처리public void inboundCancel(List request) { queryFactory.update(inboundItem) .set(inboundItem.status, false) .where(inboundI..
Spring
2024.12.17

[Spring Batch] - Job, Tasklet Step, Chunk Step 개념

/* 과거 다른 블로그에 작성했던 내용입니다. */ Job - 순서를 가진 여러 Step의 목록 또는 모음 - 외부 의존성에 영향을 받지 않고 실행되는 독립적인 작업 출처: 패스트캠프 김지수님 강의Step - 배치처리를 정의하고 제어하는 독립된 작업의 단위1. Tasklet Step -  간단히 정의한 하나의 작업처리출처: 패스트캠프 김지수님 강의2. Chunk Step  - 한번에 하나씩 데이터를 읽고 chunk를 만든 후 chunk 단위로 트랜잭션을 처리출처: 패스트캠프 김지수님 강의
Spring
2024.12.17

[Spring Data JPA & Querydsl] - QuerydslPredicateExecutor 사용시 javax.persistence.noresultexception 오류 원인

/* 과거 다른 블로그에 작성했던 내용입니다. */ 환경spring data jpaquerydslspring boot 3.x.x  hal-explorer 을 이용하여 개발시 오류에 대해서 기록 JpaRepository, QuerydslPredicateExecutor를 다중으로 상속받은 인터페이스를 이용해서 api를 호출했는데, javax.persistence.noresultexception  오류가 발생. 딱히 문제에 대한 기록도 없고 컴파일 오류도 없기 때문에 멘붕이 왔다. 우선 원인은 3.0 이상 버전을 사용했기 때문에 gradle에 의존성 추가한 디펜던시들이 참고했던 예제와 달라서 발생했다. 2 버전대로 낮추니jakarta를 참조했던 라이브러리들을 모두 javax.persistence로 수정. 또한..
카테고리 없음
2024.12.17

[Spring Data JPA] @Modifying과 @Query를 이용한 벌크 연산

/* 과거 다른 블로그에 작성했던 내용입니다. */ 지난번에는 QueryDSL에서 벌크연산을 위한 글을 작성했는데,이번에는 JPQL에서 벌크연산을 위해서 기록을 남기기 위해 작성하려고 한다.  @Modifying@Query 어노테이션을 이용해서 JPQL을 사용할 때 @Query 어노테이션 위에 @Modifying 을 추가해야한다.간단하게 데이터 처리할 때 유용하다.@Modifying에는 clearAutomatically, flushAutomatically 두개의 속성을 추가로 설정할 수 있다.clearAutomatically이 속성을 true로 하면 @Query가 실행된 후 1차 캐시를 clear한다. 1차 캐시를 clear한다는 것은 영속성 컨텍스트에 데이터가 clear 된다는 것이고 그렇게되면 DB의..
Spring
2024.12.17

[Java] Stream 사용시 toList()와 collect(Collectors.toList())의 차이 점

Stream API를 이용한 개발 중 List에서 데이터를 필터링 후 toList()로 변환하여 새 객체를 생성한 경우가 있었다. 기존 List에서 필터링 후 새롭게 생성한 List를 이용해 데이터 조작을 하려던 중 원본 List에 값이 반영되지 않는 상황이 발생했다. 확인을 해보니, stream().toList()는 Java 16 버전 이후 추가된 메서드인데, 이 메서드는 불변 리스트를 반환한다. Java 8에서 추가된 Collectors.toList()는 가변 리스트(mutable List)를 반환하기 때문에 List를 새롭게 생성했어도 원본 객체에 반영되지만, toList()는 불변 리스트(Immutable List)이기 때문에 원본에 영향을 주지 않는다. 만약, List를 단순히 반환받고 Par..
Java
2024.12.17

[Java] 날짜타입을 포맷 설정 후 문자열로 변환 (LocalDate, DateTimeFormatter)

LocalDate 타입을 패턴 변경하여 문자열로 반환.DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMdd");LocalDate nowDate = LocalDate.now();String nowStr = format.format(nowDate);
Java
2024.11.23

뉴질랜드 사진

작년 봄에 다녀왔던 뉴질랜드 사진정말 예쁘고 힐링되던 여행이었다.
사진
2024.03.17

고등학교 때 찍었던 사진들

대부분 집에서 찍었던 사진들이라 같은 건물, 같은 배경이다. 조리개, 노출, ISO를 잘 모르던 시절에 아버지 DSLR로 찍었다. 주로 싸이월드의 감성 배경으로 써먹엇다...ㅎㅎ
사진
2024.03.16