Spring Boot 35

[Spring boot] DAO 연동을 위한 컨트롤러와 서비스 설계

서비스 클래스 만들기서비스 레이어에서는 도메인 모델을 활용해 애플리케이션에서 제공하는 핵심 기능 제공import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;@Data@NoArgsConstructor@ToString@Builderpublic class ProductDto { private String name; private int price; private int stock; public ProductDto(String name, int price, int stock) { this.name = na..

[Spring boot] DAO 설계

DAO(Data Access Object)는 DB에 접근하기 위한 로직을 관리하기 위한 객체비즈니스 로직의 동작 과정에서 데이터를 조작하는 기능은 DAO 객체가 수행but 스프링 데이터 JPA에서 DAO의 개념은 레포지토리가 대체규모가 작은 서비스에서는 DAO를 별도로 설계하지 않고 바로 서비스 레이어에서 DB에 접근해서 구현하기도 한다.단 실제로 업무에 필요한 비즈니스 로직을 개발하다 보면 데이터를 다루는 중간 계층을 다두는 것이 유지보수 측면에서 용이한 경우가 많다.DAO 클래스 생성DAO 클래스는 일반적으로 ‘인터페이스-구현체’ 구성으로 생성DAO 클래스는 의존성 결합을 낮추기 위한 디자인 패턴서비스 레이어에 DAO 객체를 주입받을 때 인터페이스를 선언하는 방식으로 구성밑과 같이 data 기본적인 ..

[Spring boot] 엔티티 설계 - 실습

Spring Data Jpa를 사용하면 DB에 테이블을 생성하기 위해 직접 쿼리 작성 필요 XJPA에서 엔티티는 DB의 테이블에 대응하는 클래스import java.time.LocalDateTime;import jakarta.persistence.*;import lombok.*;@Entity@Getter@Setter@NoArgsConstructor@AllArgsConstructor@EqualsAndHashCode@ToString(exclude = "name")@Table(name = "product")public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long number; @Co..

[Spring boot] 영속성 컨텍스트

영속성 컨텍스트(Persistence Context)는 애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행엔티티 객체가 영속성 컨텍스트에 들어오면 JPA는 엔티티 객체의 매핑 정보를 DB에 반영하는 작업 수행엔티티 → 영속성 켄텍스트에 들어와 JPA의 관리 대상이 되는 시점붙너는 영속 객체(Persistence Object)라고 한다 영속성 컨텍스트세션 단위의 생명 주기를 가진다.DB에 접근하기 위한 세션이 생성되면 영속성 컨텍스트가 만들어지고 세션이 종료되면 영속성 컨텍스트도 없어진다.엔티티 매니저는 이러한 일련의 과정에서 영속성 컨텍스트에 접근하기 위한 수단으로 사용 엔티티 매니저(EntityManager)엔티티를 관리하는 객체DB에 접근해서 CR..

[Spring boot] JPA

JPA란?Java Persistence(영속성) API는 자바 진영의 ORM 기술 표준으로 채택된 인터페이스의 모음ORM이 큰 개념이라면 JPA는 더 구체화된 스펙을 포함 즉, JPA 또한 실제로 동작하는 것이 아니고 어떻게 동작해야하는지 메커니즘을 정리한 표준 명세로 생각하면 된다. JPA의 메커니즘은 내부적으로 JDBD를 사용JDBD 구현하면 SQL에 의존하는 문제 등이 있어 이 문제점을 보완하는 게 JPAJPA 기반의 구현체는 대표적으로 3가지

[Spring boot] ORM

ORM이란?Object Relational Mapping의 줄임말로 객체 관계 매핑을 의미자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법 즉, 클래스를 의미클래스 → DB의 테이블과 매핑하기 위해 만들어진 것이 아니기 때문에 RDB 테이블과 어쩔 수 없는 불일치 발생ORM은 DB와 클래스 불일치 제약사항을 해결하는 역할 ORM → 쿼리문 작성이 아닌 코드(메서드)로 데이터 조작 가능ORM 장점ORM 사용 시 DB 쿼리를 객체지향적으로 조작 가능재사용 및 유지보수 편리DB에 대한 종속성 줄어든다ORM 단점ORM만으로 온전한 서비스를 구현하기에는 한계가 있다.애플리케이션의 객체 관점과 데이터베이스이 관계 관점의 불일치

[Spring boot] 로깅 라이브러리 - Logback

로깅(logging)이란 애플리케이션이 동작하는 동안 시스템의 상태나 동작 정보를 시간 순으로 기록하는 것을 의미로깅은 개발 영역 중 → 비기능 요구사항에 속함사용자나 고객에게 필요한 기능은 아니라는 의미하지만 로깅은 디버깅하거나 개발 이후 발생한 문제를 해결할 때 원인을 분석하는데 꼭 필요한 요소자바 진영에서 가장 많이 사용되는 로깅 프레임워크Logbacklog4j 이후에 출시된 로깅 프레임워크로서 slf4j를 기반으로 구현됐으며, 과거에 사용되던 log4j에 비해 월등한 성능을 자랑spirng-boot-starter-web 라이브러리 내부에 내장돼 있어 별도의 의존성을 추가하지 않아도 사용할 수 있다.Logback 특징5개의 레벨 로그(TRACE, DEBUG, INFO, WARN, ERROR)ERRO..