본문 바로가기

Spring

(65)
Query by Example(QBE) Query by Example(QBE)은 Spring Data JPA에서 제공하는 기능으로, 엔티티의 샘플 인스턴스를 사용해 데이터베이스에서 일치하는 데이터를 조회할 때 사용됩니다. 이를 통해 복잡한 쿼리를 작성하지 않고도 동적으로 데이터를 검색할 수 있습니다.주요 특징동적 쿼리 지원: 특정 필드 값만 설정한 엔티티 객체(Example)를 통해 검색할 수 있습니다. 설정된 필드 값이 조건으로 사용되며, null이거나 설정되지 않은 필드는 무시됩니다.유연한 매칭: 기본적으로 값이 정확히 일치하는 경우에만 결과를 반환하지만, Matcher를 설정하여 부분 일치, 대소문자 무시, 시작 또는 끝 일치 등의 다양한 조건을 지정할 수 있습니다.타입 안정성: QBE는 일반적으로 리포지토리 메서드와 함께 사용되어, 예..
Hibernate 간단하게 Hibernate는 Java에서 JPA의 가장 널리 사용되는 구현체로, 관계형 데이터베이스와 객체지향 프로그래밍 간의 매핑을 지원하는 ORM(Object Relational Mapping) 프레임워크입니다. JPA는 인터페이스이기 때문에 실제 구현체가 필요하며, Hibernate는 JPA가 요구하는 기능을 포함하여 추가적인 기능을 제공하는 강력한 ORM 프레임워크입니다. Hibernate의 주요 개념과 기능 ORM(Object Relational Mapping)Hibernate는 객체지향 프로그래밍의 클래스와 데이터베이스의 테이블을 매핑해주는 기능을 제공합니다. 객체와 테이블을 매핑하면 개발자는 SQL 쿼리를 작성하지 않아도, 자바 코드로 데이터베이스 작업을 수행할 수 있습니다.예를 들어, 자바 객체의 ..
Spring Boot JPA 간단하게 Spring Boot JPA(Java Persistence API)는 자바 애플리케이션에서 데이터베이스와 객체 간의 매핑을 쉽게 할 수 있도록 도와주는 ORM(Object Relational Mapping) 도구입니다. 주로 Spring Data JPA라는 스프링 모듈을 사용하여 JPA를 더욱 편리하게 활용할 수 있습니다. 여기서 JPA는 인터페이스이며, 구체적인 구현체로는 Hibernate가 많이 사용됩니다.주요 개념과 기능1. 엔티티(Entity)엔티티는 데이터베이스의 테이블과 매핑되는 클래스입니다. JPA에서는 각 클래스가 데이터베이스의 테이블로 매핑되고, 클래스의 필드는 테이블의 컬럼으로 매핑됩니다.예를 들어, @Entity 어노테이션을 사용하여 특정 클래스를 엔티티로 선언하고, @Id 어노테이션..
POJO 클래스 POJO(Plain Old Java Object) 클래스는 "단순한 자바 객체"라는 의미로, 특정 프레임워크나 기술에 종속되지 않는 순수한 자바 객체를 뜻합니다. POJO 클래스는 주로 데이터를 저장하고 전달하는 목적으로 사용됩니다.POJO의 특징프레임워크 종속성 없음: POJO는 특정 프레임워크나 라이브러리의 요구사항을 따르지 않으며, 순수 자바 코드로 작성됩니다.간단한 구조: 필드, 기본 생성자, getter, setter 메서드로 구성되어 있으며, 복잡한 상속 관계나 인터페이스 구현이 없습니다.접근 제어자 사용: 보통 필드는 private으로 선언해 외부에서 직접 접근을 막고, getter와 setter 메서드를 통해 간접적으로 접근합니다.비즈니스 로직 없음: 주로 데이터 전달 및 저장을 위한 용도..
Lombok 정의와 어노테이션 기능 정리 Lombok은 자바의 보일러플레이트 코드를 줄이기 위해 사용하는 라이브러리로, 어노테이션을 통해 getter/setter, equals, hashCode 등 반복적인 메서드를 자동으로 생성해줍니다. 각 어노테이션은 다음과 같은 목적을 가지고 있습니다.1. @Getter와 @Setter목적: 클래스의 필드에 대한 getter와 setter 메서드를 자동 생성.사용법: 필드에만 적용하면 해당 필드에만 적용되고, 클래스에 적용하면 모든 필드에 적용됩니다.2. @ToString목적: toString() 메서드를 자동 생성하여 클래스의 필드 정보를 문자열로 출력.사용법: 클래스에 적용하며, exclude 옵션으로 특정 필드를 제외할 수도 있습니다.3. @EqualsAndHashCode목적: equals()와 ha..
Swagger , http://localhost:8080/swagger-ui/ 404오류 Swagger란 개발한 Rest API를 편하게 문서화 해주고 이를 통해 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트 할 수 있는 프로젝트이다. Spring Boot에서는 간단하게 springfox-boot-starter를 gradle dependencies에 추가 함으로 사용할 수 있다. 외부에 노출되면 안되는 곳에 사용할 떈 주의 해야 한다.  스프링부트에서 사용한 Swagger dependencyhttps://mvnrepository.com/artifact/io.springfox/springfox-boot-starter/3.0.0     http://localhost:8080/swagger-ui/  조금 찾아보니 Spring Boot 3.0 이상 버전부터는 Springfox가 호환..
Jacoco Java코드의 코드 커버리지를 체크 하는 라이브러리결과를 html, xml, csv로 확인이 가능하다.  내가 작성한 프로젝트에서 테스트를 실행하여 배포가 가능한지 테스트 커버리지를 확인 할 수 있다. JacocoTestReport를 실행하면 build아래 jacoco 폴더가 생성되며 어디가 테스트 되었고 어디가 안 되었는지 확인할 수 있는 index.html 파일을 생성한다. 이런 식으로 Jacoco를 사용하면서 테스트 커버리지가 부족한 곳을 확인 할 수 있다.
@Component의 역할과 사용법 @Component는 스프링 프레임워크에서 사용되는 기본적인 어노테이션 중 하나로, 스프링이 관리하는 빈(Bean)으로 등록하고자 할 때 사용한다. 주로 개발자가 작성한 클래스가 스프링 컨테이너에 의해 관리되고, 의존성 주입(Dependency Injection)을 통해 쉽게 사용할 수 있도록 해준다.@Componentpublic class MyService { public void doSomething() { System.out.println("Doing something..."); }} **빈(Bean)**은 스프링 IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체를 의미, 스프링 애플리케이션에서 의존성 주입을 통해 사용되는 객체 스프링이 빈을 관리:..