웹 개발/🍃 SpringBoot

웹 개발/🍃 SpringBoot

JPA | DAO 설계

DAO 설계DAO(Data Access Object)는 데이터베이스에 접근하기 위한 로직을 관리하기 위한 객체입니다. 비즈니스 로직의 동작 과정에서 데이터를 조작하는 기능은 DAO 객체가 수행합니다. 다만 스프링 데이터JPA에서 DAO의 개념은 리포지토리가 대체하고 있습니다. 규모가 작은 서비스에서는 DAO를 별도로 설계하지 않고 바로 서비스 레이어에서 데이터베이스에 접근해서 구현하기도 하지만, 이번 장에서는 DAO를 서비스 레이어와 리포지토리의 중간 계층을 구성하는 역할로 사용할 예정입니다. 이 포스팅에서는 간단한 데이터베이스 호출만 다루고 있기 때문에 큰 의미는 없지만 실제로 업무에 필요한 비즈니스 로직을 개발하다 보면 데이터를 다루는 중간계층을 두는것이 유지보수측면에서 용이한 경우가 많습니다. 물론..

웹 개발/🍃 SpringBoot

JPA | 리포지토리 인터페이스 설계

리포지토리 인터페이스 설계Spring Data JPA는 JpaRepository를 기반으로 더욱 쉽게 데이터베이스를 사용할 수 있는 아키텍처를 제공합니다. 스프링 부트로 JpaRepository를 상속하는 인터페이스를 생성하면 기존의 다양한 메서드를 손쉽게 활용할 수 있습니다. 리포지토리 인터페이스 생성여기서 이야기하는 리포지토리(Repository)는 Spring Data JPA가 제공하는 인터페이스입니다. 엔티티를 데이터베이스의 테이블과 구조를 생성하는 데 사용했다면, 리포지토리는 엔티티가 생성한 데이터베이스에 접근하는 데 사용됩니다. 리포지토리를 생성하기 위해서는 접근하려는 테이블과 매핑되는 엔티티에 대한 인터페이스를 생성하고, 아래 예제와 같이 JpaRepository를 상속받으면 됩니다.publ..

웹 개발/🍃 SpringBoot

@GeneratedValue(strategy = GenerationType.IDENTITY) 전략 제대로 이해하기

엔티티의 기본 키를 자동으로 생성하는 방법 중 하나로 자주 사용되는 GenerationType.IDENTITY 전략에 대해 살펴보겠습니다. 이 전략은 간단하지만, 정확히 이해하지 못하면 예상치 못한 동작이나 성능 문제를 겪을 수 있습니다.IDENTITY 전략이란?@GeneratedValue(strategy = GenerationType.IDENTITY)는 기본 키 생성을 데이터베이스에 위임하는 방식입니다.이는 주로 MySQL, PostgreSQL, SQL Server와 같이 AUTO_INCREMENT 기능을 지원하는 데이터베이스에서 사용됩니다.작동 방식엔티티 매니저는 기본 키 값 생성을 데이터베이스에 맡깁니다.데이터베이스는 INSERT SQL 실행 시 AUTO_INCREMENT를 통해 기본 키 값을 자동..

웹 개발/🍃 SpringBoot

JPA | 엔티티 설계

엔티티 설계Spring Data JPA를 사용하면 데이터베이스에 테이블을 생성하기 위해 직접 쿼리를 작성할 필요가 없습니다. 이 기능을 가능하게 하는 것이 엔티티입니다. JPA에서 엔티티는 데이버테이스의 테이블에 대응하는 클래스입니다. 엔티티는 데이터베이스에 쓰일 테이블과 칼럼을 정의합니다. 엔티티에 어노테이션을 사용하면 테이블 간의 연관관계를 정의할 수 있습니다.  package com.springboot.jpa.data.entity;import javax.persistence.*;import java.time.LocalDateTime;@Entity@Table(name = "product")public class Product { @Id @GeneratedValue(strategy = Gener..

웹 개발/🍃 SpringBoot

Hibernate hibernate.ddl-auto 속성 완벽 가이드

Hibernate DDL auto혹시 팀플하다가 ddl-auto 때문에 데이터가 싹다 날아간 경험을 해본적이 있나요? 저는 국비학원에서 팀플할 당시 조원 중 한면이 모르고 ddl-auto create를 넣고 돌리는 바람에 크롤링한 데이터가 싸그리 날아간 경험을 한적이 있습니다. 그때의 트라우마로 그냥 ddl-auto 관련해서는 쳐다도 안보고있었는데, 이번 기회에 공부를 해보려고 합니다. hibernate.ddl-auto는 Hibernate가 데이터베이스 스키마를 애플리케이션의 엔티티(Entity) 클래스에 따라 어떻게 관리할지를 결정하는 중요한 설정입니다. 특히 Spring Boot 애플리케이션에서 application.yml 파일을 통해 이 속성을 쉽게 구성할 수 있습니다. 이번 포스팅에서는 각 옵션의..

웹 개발/🍃 SpringBoot

JPA | 영속성 컨텍스트

영속성 컨텍스트영속성 컨텍스는 엔티티 객체를 관리하는 가상의 공간이라고 보면됩니다. 영속성 컨텍스트는 애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행합니다. 엔티티 객체가 영속성 컨텍스트에 들어오면 JPA는 엔티티 객체의 매핑 정보를 데이터베이스에 반영하는 작업을 수행합니다. 이처럼 엔티티 객체가 영속성 컨텍스트에 들어와 JPA의 관리 대상이 되는 시점부터는 해당 객체를 영속 객체(Persistence Object)라고 부릅니다. 간단하게 애플리케이션과 데이터베이스와의 관계를 표현하면 아래와 같습니다.영속성 컨텍스트는 세션 단위의 생명주기를 가집니다. 데이터베이스에 접근하기 위한 세션이 생성되면 영속성 컨텍스트가 만들어지고, 세션이 종료되면 영속성..

이재원
'웹 개발/🍃 SpringBoot' 카테고리의 글 목록