1. 의존성
<!-- Spring Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>3.2.0</version>
</dependency>
🧑🏻🏫 간단 정리
JPA는 자바의 ORM기술을 쉽게 구현하도록 도와주는 API이다.
JpaRepository를 상속하는 인터페이스에 메서드 이름만 적어놓으면
알아서 다 처리(구현체 생성, 쿼리문 구현 등)해주는 좋은 ORM이다.
메소드 이름은 findby(필드명), deleteby(필드명)처럼 메소드 명칭만 적어주면
개발자는 SQL을 작성하지 않아도 쿼리문을 만들어준다.
이때 엔티티라는 클래스를 이용하는데 객체를 이용하여 매핑을 처리하는 것이다.
어렵다면 엔티는 == 테이블 or 레코드라고 생각해 보자!
자세한 건 아래 글을 읽어 보도록 하자.
🧐JPA(Java Persistence API)란?
자바에서 객체를 데이터베이스에 저장하고 관리하기 위한 인터페이스와 기능을 제공하는 API.
JPA를 사용하면 객체와 관계형 데이터베이스 간의 매핑을 손쉽게 처리할 수 있으며
데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 간편하게 수행할 수 있다.
👨🏻💻예제 코드(작성 순서)
1. 엔티티 클래스 정의
데이터베이스 테이블과 매핑될 엔티티 클래스를 정의한다.
이때, 엔티티 클래스는 @Entity 어노테이션을 이용하여 정의한다.
예를 들어, 다음과 같이 User 엔티티 클래스를 정의할 수 있다.
2. Repository 인터페이스 정의
엔티티를 조작하기 위한 Repository 인터페이스를 정의한다.
이때, JpaRepository 인터페이스를 상속받아 사용한다.
JpaRepository 인터페이스를 상속받기에 따로 메서드 구현, 구현체 작성을 하지 않아도 자동으로 생성된다.
(쉽게 말해 JpaRepository만 상속받으면 따로 구현코드 없이 해당 메서드를 사용할 수 있다)
예를 들어, 다음과 같이 UserRepository 인터페이스를 정의할 수 있다.
3. 엔티티 매니저 팩토리 설정
application.properties 또는 application.yml 파일을 이용하여 JPA 설정 정보를 지정.
예를 들어, 다음과 같이 스프링 부트의 기본 데이터베이스 설정을 이용하여
H2 데이터베이스를 사용하는 JPA 설정을 지정.
# JPA 설정
spring.jpa.show-sql=true
#true로 해야 sql 보임
spring.jpa.hibernate.ddl-auto=update
# RDB Dialect 설정
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
#하이버네이트 자동 이름 변환 방지
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
4. 서비스 클래스 정의
엔티티를 사용하는 비즈니스 로직을 구현하는 서비스 클래스를 정의.
이때, UserRepository 인터페이스를 주입받아 사용한다.
예를 들어, 다음과 같이 UserService 클래스를 정의할 수 있다
5. 컨트롤러 클래스 정의
HTTP 요청을 처리하는 컨트롤러 클래스를 정의.
이때, UserService 클래스를 주입받아 사용한다.
예를 들어, 다음과 같이 UserController 클래스를 정의할 수 있다.
JPA는 이외에도 다양한 기능을 제공한다.
JPQL(Java Persistence Query Language)을 사용하여 객체를 검색하고 조작하는 등의 작업을 수행할 수 있다.
출처: https://ccomccomhan.tistory.com/131 [[꼼꼼한 개발자] 꼼코더:티스토리]
'JPA' 카테고리의 다른 글
JPA 실행 (0) | 2024.12.11 |
---|---|
하이버네이트 백그라운드1 (0) | 2024.07.16 |