서비스 클래스 만들기서비스 레이어에서는 도메인 모델을 활용해 애플리케이션에서 제공하는 핵심 기능 제공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..
DAO(Data Access Object)는 DB에 접근하기 위한 로직을 관리하기 위한 객체비즈니스 로직의 동작 과정에서 데이터를 조작하는 기능은 DAO 객체가 수행but 스프링 데이터 JPA에서 DAO의 개념은 레포지토리가 대체규모가 작은 서비스에서는 DAO를 별도로 설계하지 않고 바로 서비스 레이어에서 DB에 접근해서 구현하기도 한다.단 실제로 업무에 필요한 비즈니스 로직을 개발하다 보면 데이터를 다루는 중간 계층을 다두는 것이 유지보수 측면에서 용이한 경우가 많다.DAO 클래스 생성DAO 클래스는 일반적으로 ‘인터페이스-구현체’ 구성으로 생성DAO 클래스는 의존성 결합을 낮추기 위한 디자인 패턴서비스 레이어에 DAO 객체를 주입받을 때 인터페이스를 선언하는 방식으로 구성밑과 같이 data 기본적인 ..
Spring Data Jpa는 JpaRepository를 기반으로 더욱 쉽게 DB를 사용할 수 있는 아키텍처 제공리포지터리 인터페이스 생성리포지터리는 Spring Data JPA가 제공하는 인터페이스import entity.Product;import org.springframework.data.jpa.repository.JpaRepository;// 예제 6.7public interface ProductRepository extends JpaRepository {}JpaRepository를 보면 밑 코드와 같이 되어있다.//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//pac..
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..
pom.xml org.mariadb.jdbc mariadb-java-client org.springframework.boot spring-boot-starter-data-jpa application.propertiesspring.datasource.driverClassName=org.mariadb.jdbc.Driverspring.datasource.url=jdbc:mariadb://localhost:3306/springboot_studyspring.datasource.username={dbusername}spring.datasource.password={password}spring.jpa.hibernate.ddl-auto=createspring.jpa.show-sql=trues..
영속성 컨텍스트(Persistence Context)는 애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행엔티티 객체가 영속성 컨텍스트에 들어오면 JPA는 엔티티 객체의 매핑 정보를 DB에 반영하는 작업 수행엔티티 → 영속성 켄텍스트에 들어와 JPA의 관리 대상이 되는 시점붙너는 영속 객체(Persistence Object)라고 한다 영속성 컨텍스트세션 단위의 생명 주기를 가진다.DB에 접근하기 위한 세션이 생성되면 영속성 컨텍스트가 만들어지고 세션이 종료되면 영속성 컨텍스트도 없어진다.엔티티 매니저는 이러한 일련의 과정에서 영속성 컨텍스트에 접근하기 위한 수단으로 사용 엔티티 매니저(EntityManager)엔티티를 관리하는 객체DB에 접근해서 CR..