Java 제네릭 와일드카드에 대하여
·
Java
Java 제네릭 와일드카드에 대하여Java 제네릭(Generic)은 코드의 재사용성을 높이고, 타입 안전성을 보장하며, 런타임 시 타입 캐스팅을 줄이기 위해 도입된 기능입니다. 제네릭은 컬렉션이나 메서드에 타입을 정의할 수 있는 강력한 기능을 제공하지만, 때로는 제네릭 타입을 유연하게 다루어야 하는 경우가 생깁니다. 이러한 상황에서 사용되는 것이 바로 와일드카드(Wildcard) 입니다.이 글에서는 Java 제네릭 와일드카드의 개념, 종류, 사용법, 그리고 장단점에 대해 자세히 살펴보겠습니다.1. 제네릭 와일드카드란?와일드카드는 ? 기호로 표현되며, 제네릭 타입의 상한 또는 하한을 정의하거나 제네릭 타입을 보다 유연하게 다룰 수 있도록 설계되었습니다.와일드카드는 크게 세 가지로 나뉩니다:Unbounded..
스프링 부트 Test(어노테이션)
·
Spring
1. @SpringBootTest개요설명: 스프링 컨텍스트 전체를 로드하여 통합 테스트(Integration Test)를 수행합니다. 주로 애플리케이션의 전반적인 동작을 검증할 때 사용됩니다.특징:모든 빈(bean)을 로드하므로 실행 속도가 느릴 수 있습니다.webEnvironment 속성을 통해 테스트 환경을 설정할 수 있습니다.코드 예제@SpringBootTestclass ApplicationTests { @Test void contextLoads() { // 스프링 컨텍스트가 정상적으로 로드되는지 확인 }}webEnvironment 옵션WebEnvironment.NONE: 웹 환경 없이 테스트 실행.WebEnvironment.MOCK: MockServletContext를..
스프링 부트 3의 특징(이전 버전과 비교)
·
Spring
스프링 부트 3과 그 이전 버전 차이점 정리스프링 부트 3(Spring Boot 3)은 자바 17 이상을 필수로 요구하며, 성능 개선과 최신 자바 기능들을 활용할 수 있도록 설계된 점이 특징입니다. 이번 글에서는 스프링 부트 3과 이전 버전의 차이를 알아보며, 자바 최신 기능들(formatted() 메소드, 텍스트 블록, 레코드, 패턴 매칭, 자료형에 맞는 switch case 처리)과 스프링의 javax와 jakarta 전환에 대해 살펴보겠습니다.1. formatted() 메소드formatted() 메소드는 기존의 String.format() 메소드의 간결한 대안으로, 문자열 포맷팅을 보다 쉽게 수행할 수 있습니다.코드 예시기존 방식 (String.format)String name = "홍길동";int..
지연로딩,AOP,Mockito에 대하여
·
Spring
지연 로딩과 영속성 전이는 JPA에서 엔티티의 데이터 조회 및 관계 관리를 효율적으로 처리하기 위해 제공하는 기능입니다. 각 개념에 대해 자세히 설명하겠습니다.1. 지연 로딩 (Lazy Loading)지연 로딩은 엔티티가 데이터베이스에서 실제로 필요한 시점까지 관련 데이터를 불러오지 않고, 요청이 발생할 때 데이터를 가져오는 방식입니다. 지연 로딩은 JPA에서 @OneToMany, @ManyToMany 등의 관계 설정에서 기본적으로 사용되며, 필요할 때만 데이터를 가져오므로 성능 최적화에 유리합니다.특징: 실제로 엔티티를 사용할 때까지 데이터베이스 조회를 미루고, 조회 시점에 데이터를 가져옵니다.예제: Order 엔티티가 여러 개의 OrderItem 엔티티와 @OneToMany 관계로 설정된 경우, Or..
entity 연관관계
·
Spring
엔티티 간의 연관관계는 데이터베이스 테이블 간의 관계를 객체 지향 프로그래밍에서 표현하는 방법입니다. Spring Data JPA에서 엔티티 간의 연관관계를 설정하면, 데이터베이스 테이블 간의 관계를 객체 사이에서도 연결할 수 있습니다.대표적인 연관관계 종류는 1:1 (일대일), 1:N (일대다), N:1 (다대일), N:M (다대다) 관계가 있습니다. 각 관계는 @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 같은 어노테이션을 통해 설정합니다.1. 일대일 (1:1) 관계설명: 한 엔티티가 다른 엔티티와 정확히 하나의 연관을 가질 때 사용됩니다.예시: 한 사용자(User)가 한 개의 프로필(Profile)을 가지는 경우.@Entitypublic class User { ..
@Validation에 대하여
·
Spring
@Validation 이란?@Validation은 일반적으로 데이터 유효성 검사를 위해 사용되는 어노테이션들을 의미하며, Spring Boot 및 Java 애플리케이션에서 입력값의 유효성을 보장하기 위해 사용됩니다. javax.validation이나 jakarta.validation 패키지에서 제공하는 어노테이션과 함께 사용됩니다.다음은 주요 유효성 검사 어노테이션들과 그 역할입니다:@NotNull: 필드가 null이 아닌지 확인합니다. null 값이 입력될 경우 유효성 검사를 통과하지 못합니다.@NotEmpty: 필드가 빈 문자열이 아닌지 확인합니다. null을 허용하지 않고, 최소한 하나 이상의 문자가 있어야 합니다.@NotBlank: 공백 문자열을 포함하여 null이나 빈 문자열이 아닌지 확인합니다..
JPA와 영속성 컨텍스트, 그리고 Bean의 관계
·
Spring
JPA와 영속성 컨텍스트, 그리고 Bean의 관계Java 개발 환경에서 JPA(Java Persistence API)는 객체와 관계형 데이터베이스를 매핑해주는 ORM(Object Relational Mapping) 기술로, 데이터 접근과 관리를 효율적으로 할 수 있게 합니다. JPA의 핵심 개념인 영속성 컨텍스트와 Spring에서 의존성 주입과 관리에 중요한 역할을 하는 Bean에 대해 알아보겠습니다.1. JPA란 무엇인가?JPA(Java Persistence API)는 자바의 ORM 기술 표준으로, 데이터베이스와 객체 간의 변환을 자동으로 관리해주는 기능을 제공합니다. JPA는 직접 데이터베이스와 통신하지 않고, 하이버네이트(Hibernate)와 같은 구현체를 사용하여 JPA 인터페이스에 대한 실제 동..
파일 디렉터리 구조 형성 방법들
·
Spring
파일 디렉터리 구조 형성 방식들: 다양한 방식과 그 특징파일 시스템의 디렉터리 구조는 데이터를 효율적으로 저장하고 관리하기 위한 기본적인 구조로, 컴퓨터와 서버, 다양한 애플리케이션에서 사용됩니다. 디렉터리 구조 형성 방식은 크게 트리 구조, 그래프 구조, 평면 구조, 가상 파일 시스템 구조 등으로 나뉩니다. 이 글에서는 각 방식의 특징과 장단점을 알아보겠습니다.1. 트리 구조 (Tree Structure)트리 구조는 계층적(hierarchical) 디렉터리 구조로, 루트 디렉터리를 최상위에 두고 아래로 여러 디렉터리가 이어지는 구조입니다. 대부분의 현대적인 운영체제(Linux, macOS, Windows 등)가 사용하는 방식이며, 디렉터리와 서브디렉터리가 자식 노드처럼 확장되는 형태입니다.특징최상위에 ..
IoC와 DI: Java 개발에서 꼭 알아야 할 개념
·
Spring
IoC와 DI: Java 개발에서 꼭 알아야 할 개념Java와 Spring Framework로 개발을 하다 보면 많이 접하게 되는 개념이 바로 IoC(Inversion of Control)와 DI(Dependency Injection)입니다. 이 글에서는 IoC와 DI가 무엇인지, 왜 중요한지, 어떻게 활용할 수 있는지 쉽게 설명해보겠습니다.1. IoC (Inversion of Control)란 무엇인가?IoC는 제어의 역전이라는 의미로, 애플리케이션의 제어 흐름을 개발자가 아닌 컨테이너(Spring, Spring Boot 등)가 관리하는 구조를 의미합니다.전통적인 객체 생성 방식에서는 개발자가 필요한 객체를 직접 생성하고 관리합니다. 예를 들어 new 키워드를 사용해 클래스의 인스턴스를 생성하고, 인스..
SQL, JPQL, 쿼리 메소드 비교 및 정리글
·
Spring
SQL, JPQL, 쿼리 메소드 비교먼저, SQL, JPQL, 쿼리 메소드의 차이점을 표로 정리해보겠습니다.특징SQLJPQL쿼리 메소드정의데이터베이스와 직접 통신하는 쿼리 언어엔티티 객체를 대상으로 한 Java Persistence 쿼리 언어JPA에서 메서드 이름으로 쿼리 생성대상테이블 및 컬럼엔티티 및 속성엔티티 및 속성구문SELECT * FROM usersSELECT u FROM User ufindByName데이터베이스 종속성특정 DB SQL 문법에 의존데이터베이스에 독립적데이터베이스에 독립적사용 용도데이터베이스 직접 질의JPA를 통한 간접 질의메서드 이름으로 간단한 질의복잡한 쿼리 처리복잡한 쿼리 가능복잡한 쿼리 작성 가능복잡한 쿼리에는 적합하지 않음학습 곡선쉬움 (SQL 언어만 학습)JPA 엔티티..