JAVA/Spring29 Querydsl로 효율적으로 JPA 조건 쿼리 작성하기 Querydsl로 효율적으로 JPA 조건 쿼리 작성하기 JPA를 사용할 때, Criteria API가 기본적으로 제공되지만 실무에서는 복잡하고 가독성이 떨어지는 문제로 인해사용이 어렵다. 이를 해결하기 위해 많은 개발자들이 **Querydsl**을 선택한다. Querydsl은 타입 세이프하며,가독성이 뛰어난 쿼리 작성 방식을 제공한다. Querydsl이란? Querydsl은 Java 기반 ORM 프레임워크에서복잡한 동적 쿼리를 간결하고 가독성 있게 작성할 수 있도록 돕는 라이브러리다. JPQL 기반의 쿼리를 Java 코드로 작성하며, 컴파일 시점에 오류를 검출할 수 있어 안정성을 높인다. Querydsl을 사용하는 이유 1. 가독성Criteria API는 메서드 체이닝 방식으로 .. JAVA/Spring 2025. 1. 21. PersistenceContext와 PersistenceUnit의 차이 / @Transactional(readOnly = true)의 효과 PersistenceContext와 PersistenceUnit의 차이PersistenceContext란?PersistenceContext는 JPA에서 EntityManager를 관리하는 범위를 의미한다. 쉽게 말해, 데이터베이스와의 작업을 관리하는 영속성 컨텍스트를 나타낸다.특징영속성 컨텍스트는 엔티티의 생명 주기를 관리한다.1차 캐시를 사용하여 성능을 최적화하며, 동일한 트랜잭션 내에서 동일한 엔티티를 조회하면 데이터베이스를 재조회하지 않는다.@PersistenceContext 어노테이션을 통해 주입받을 수 있다.import jakarta.persistence.EntityManager;import jakarta.persistence.PersistenceContext;public class UserSe.. JAVA/Spring 2025. 1. 17. @RequiredArgsConstructor와 @AllArgsConstructor 비교 [spring 의존성 주입] Spring Dependency Injection: @RequiredArgsConstructor와 @AllArgsConstructor 비교 스프링 프레임워크에서 의존성 주입(Dependency Injection)은 객체 간 결합을 줄이고 코드의 유연성과 테스트 용이성을 높이는 중요한 패턴이다. 스프링에서 의존성 주입 방법은 다양하며, 특히 최근에는 생성자 주입 방식이 트렌드로 자리 잡았다. 이 글에서는 @RequiredArgsConstructor, @AllArgsConstructor, 그리고 @Autowired를 사용한 주입 방식을 비교하고, Spring Data JPA와 관련된 주요 내용을 다룬다. 1. 의존성 주입 방법의 종류1-1. 필드 주입(Field Injection)@Autowiredpriv.. JAVA/Spring 2025. 1. 17. Spring WebSocket의 기본 개념과 [클라이언트-서버] 연결 Spring WebSocket의 기본 개념과 클라이언트-서버 연결 WebSocket은 서버와 클라이언트 간의 양방향 실시간 통신을 가능하게 하는 기술이다. 이를 통해 클라이언트와 서버는 연결이 유지되는 동안 자유롭게 데이터를 주고받을 수 있다.Spring에서는 @Configuration과 TextWebSocketHandler를 사용해 WebSocket 서버를 간편하게 구축할 수 있다. 이번 포스트에서는 Spring WebSocket의 주요 개념과 이를 통해 어떻게 클라이언트 연결을 관리하고 메시지를 전송하는지에 대해 다뤄본다. 1. WebSocketSession과 TextMessageWebSocketSessionWebSocketSession은 WebSocket 연결을 추적하고 관리하는 핵심 객체.. JAVA/Spring 2025. 1. 1. Jackson과 Lombok @Data 어노테이션을 이용한 JSON 데이터 처리 Jackson과 Lombok @Data 어노테이션을 이용한 JSON 데이터 처리자바에서 JSON 데이터를 자바 객체로 변환할 때는 Jackson 라이브러리를 많이 사용한다. Jackson은 ObjectMapper를 사용하여 JSON 데이터를 쉽게 자바 객체로 변환할 수 있게 해준다. 이번 포스팅에서는 Jackson을 활용해 JSON 데이터를 객체로 변환하는 방법과, Lombok의 @Data 어노테이션을 사용하여 자동으로 생성된 메서드들이 어떻게 유용하게 작동하는지 살펴보겠다. 또한, 여러 클래스에 @Data 어노테이션을 사용할 경우에도 어떻게 정확하게 값을 추출할 수 있는지에 대해 설명할 것이다. Jackson을 이용한 JSON 데이터 변환Jackson은 JSON 데이터를 자바 객체로 변환하는 데 매.. JAVA/Spring 2024. 12. 31. Java에서 ProcessBuilder와 클래스패스 설정에 대한 이해 Java에서 ProcessBuilder와 클래스패스 설정에 대한 이해Java 프로그램을 외부에서 실행할 때, ProcessBuilder를 사용하여 외부 프로세스를 실행하는 경우가 많다. 하지만, 외부 프로세스에서 클래스를 로드할 때 클래스패스(classpath) 설정과 실행 디렉토리가 일치하지 않으면 예상치 못한 문제가 발생할 수 있다. 특히, java 명령어를 통해 실행할 때, 클래스 파일을 찾는 경로에 대한 이해가 중요하다. 1. 클래스패스 설정의 중요성java 명령어는 클래스를 찾기 위해 클래스패스를 사용한다. 클래스패스는 -cp 옵션을 통해 지정할 수 있다. 이때, 클래스패스를 설정하는 방식에 따라 외부 프로세스에서 클래스를 올바르게 로드할 수 있느냐의 차이가 발생한다. 예를 들어, -cp t.. JAVA/Spring 2024. 12. 30. Spring 의존성 주입: 생성자 주입과 수정자 주입의 동작 원리 Spring 의존성 주입: 생성자 주입과 수정자 주입의 동작 원리Spring을 사용하다 보면 의존성 주입(Dependency Injection)이라는 개념을 반드시 접하게 된다. 이는 객체 간의 의존성을 관리하고 설정하는 강력한 기능으로, 코드의 유연성과 테스트 가능성을 크게 향상시킨다. Spring에서는 의존성을 주입하는 방식으로 생성자 주입(Constructor Injection), 수정자 주입(Setter Injection), 그리고 **필드 주입(Field Injection)**을 제공한다. 이번 글에서는 생성자 주입과 수정자 주입이 함께 사용될 경우의 동작 원리와 각 주입 방식의 특징을 설명한다. 의존성 주입 방식의 종류디테일한 공부를 원하면 아래 링크도 참고하면 좋다!https://min.. JAVA/Spring 2024. 12. 21. Spring @ComponentScan의 includeFilters와 excludeFilters 완벽 이해 Spring @ComponentScan의 includeFilters와 excludeFilters 완벽 이해 Spring 프레임워크에서 애플리케이션의 빈을 관리할 때 @ComponentScan은 중요한 역할을 한다. 일반적으로 @Component나 @Service와 같은 애노테이션이 붙은 클래스를 스캔해 스프링 컨테이너에 빈으로 등록하지만, 때로는 특정 클래스를 제외하거나 포함해야 할 상황이 생길 수 있다. 이때 사용하는 것이 바로 includeFilters와 excludeFilters이다. 하지만 두 옵션의 동작 방식과 차이를 명확히 이해하지 못하면 혼란이 생길 수 있다. 필자의 경우도 excludeFilters와 includeFilters를 사용할 때 조건이 동일하다고 생각했지만, 실제 결과는 다르게 .. JAVA/Spring 2024. 12. 21. Spring의 ComponentScan 이해하기: @ComponentScan의 동작 원리와 활용법 Spring의 ComponentScan 이해하기: @ComponentScan의 동작 원리와 활용법 Spring Framework에서 의존성 주입(Dependency Injection)을 자동으로 처리해주는 강력한 기능 중 하나가 바로 **컴포넌트 스캔(Component Scan)**이다. 컴포넌트 스캔을 통해 개발자는 빈(Bean) 등록을 간소화하고, 코드의 의존성 관리도 효율적으로 처리할 수 있다. 이번 포스팅에서는 @ComponentScan의 동작 원리, 기본 대상, 그리고 관련된 중요한 개념들을 정리해보겠다. 1. @ComponentScan 이란?@ComponentScan은 특정 패키지를 스캔하여, 해당 패키지와 하위 패키지에 있는 @Component, @Service, @Repository, .. JAVA/Spring 2024. 12. 21. DI(의존관계 주입, Dependency Injection)란 무엇인가? DI(의존관계 주입, Dependency Injection)란 무엇인가? 의존관계 주입(Dependency Injection, DI)은 객체 간의 의존성을 외부에서 주입받는 설계 방식을 말한다.이 방식은 객체를 직접 생성하거나 내부에서 의존성을 설정하지 않고, 외부에서 필요한 의존성을 주입함으로써 결합도를 낮추고 코드의 유연성과 재사용성을 높인다. DI의 핵심 개념의존성(Dependency)한 객체가 다른 객체의 기능이나 데이터를 사용할 때, 해당 객체는 그 다른 객체에 의존한다고 말한다.예를 들어, OrderService가 PaymentService를 호출해 결제를 처리해야 한다면, OrderService는 PaymentService에 의존한다.의존관계 주입(Dependency Injection.. JAVA/Spring 2024. 12. 20. Spring에서 생성자에 @Autowired 어노테이션을 사용하는 이유와 장점 Spring에서 생성자에 @Autowired 어노테이션을 사용하는 이유와 장점Spring Framework에서 의존성 주입(Dependency Injection)은 객체 간 결합도를 낮추고 유지보수성을 높이기 위해 사용된다. 의존성을 주입하는 방법 중 하나로 생성자 주입(Constructor Injection)이 있으며, 이때 @Autowired 어노테이션이 자주 활용된다. 이번 글에서는 @Autowired를 생성자와 함께 사용하는 이유와 장점을 코드 예시와 함께 설명한다. 의존성 주입 방법Spring에서 의존성 주입은 다음 세 가지 방식으로 수행된다.필드 주입(Field Injection)Setter 주입(Setter Injection)생성자 주입(Constructor Injection)이 중 생성.. JAVA/Spring 2024. 12. 20. [스프링 싱글톤] : 왜 @Bean은 한 번만 호출될까? 스프링 싱글톤: 왜 @Bean은 한 번만 호출될까?스프링 프레임워크는 객체 관리를 효율적으로 처리하기 위해 **싱글톤(Singleton)**이라는 개념을 기본적으로 채택하고 있다. 이번 글에서는 스프링에서 @Bean이 선언된 메서드들이 왜 한 번만 호출되는지와 관련된 싱글톤 컨테이너의 동작 원리를 설명한다. 문제 상황아래는 스프링 애플리케이션에서 사용할 설정 클래스이다.@Configurationpublic class AppConfig { @Bean public MemberService memberService() { System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(me.. JAVA/Spring 2024. 12. 20. 이전 1 2 3 다음