엔티티 클래스 작성,JpaRepository 기본

jadive study·2022년 11월 17일
0

2.4.1 엔티티 클래스 작성

예제 프로젝트에 entity 패키지를 추가,

@Entity

해당 클래스가 엔티티를 위한 클래스이 며,해당 클래스의 인스턴스들
이 JPA로 관리되는 엔티티 객체라는 것을 의미합니다.

@Table

@Entity 어노테이션과 같이 사용할 수 있는 어노테이션
@Table(name="t_memo")와 같이 지정하는 경우에는 생성되는 테 이블의 이름이 t.memo' 테이블로 생성

@ld 와 @GeneratedValue

@Entity가 붙은 클래스는 Primary Key(이하 PK)에 해당하는 특정 필드를 @Id로 지정해야만 합니다.
@ld가 사용자가 입력하는 값을 사용하는 경우가 아니면 자동으로 생성되는 번호를 사용하기 위해서

@GeneratedValue라는 어노테이션을 활용

@GeneratedValue(strategy = GenerationType.lDENTITY) 부분은 PK를 자동으로 생 성하고자 할 때 사용합니다 키 생성 전략이라고 한다.

키생성 전략

  • MySQL이나 MariaDB의 경우 auto increment 방식을 이용

@Column

추가적인 필드(칼럼)가 필요한 경우에도 마찬가지로 어노테이션을 활용한다.

package org.zerock.ex2.entity;
import lombok.*;

import javax.persistence.*; 
@Entity 
@Table(name= "tbl_memo") 
@ToString
@Getter
@Builder
@AllArgsConstructor @NoArgsConstructor public class Memo {
@Id


@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long mno;
@Column(length = 200, nullable = false) 
private String memoText;

Lombok의 @Getter를 이용해서 Getter 메서드를 생성하고 @Builder를 이용해서 객체를 생성할수 있게 처리합니다. @Builder를 이용하기 위해서는 @AllArgsConstructor와 @NoArgsConstructor 사용해야합니다

spring.jpa.hibernate.format_sql: 실제 JRA의 구현체인 Hibernate가 동작하면서 발생하는 SQL을 포맷팅
spring.jpa.show-sql: JRA 처리 시에 발생하는 SQL을 보여줄 것인지를 결정
spring.jpa.hibernate.ddl-auto: 프로젝트 실행 시에 자동으로 DDL(create, alter, drop 등)을 생성 할 것인지를 결정하는 설정입니다. 설정값은 create, update, create-drop, validate가 있습니다

-MySQL의 Workbench는 MariaDB를 연동해서 사용할 수 있다.

2.4.3 JpaRepository 인터페이스

Spring Data JPA는 JPA의 구현체인 Hibernatef 이용하기 위한 여 러 API를 제공합니다. 그중에서 개발자가 가장 많이 사용할 것이 바로 JpaRepository라는 인터페이스입니다.

JPA관련 작업을 별도의 코드 없이 처리할 수 있게 지원합니다. 예를 들어 CRUD 작업이나 페이징,정렬 등의 처 리도 인터페이스의 메서드를 호출하는 형태로 처리하는데 기능에 따라서 상속 구조로 추 가적인 기능을 제공


JpaRepository는 인터페이스이고,Spring Data JPA는 이를 상속하는 인터페이스를 선언
하면 모든처리가 끝난다.

스프링이 내부적으로 해당 인터페이스에 맞는 코드를 생성하는 방식을 이용합니다. 프로젝 트 내에 repository 패키지를 생성하고,MemoRepository 인터페이스를 추가합니다,

package org.zerock.ex2.repository;
import org.springframework.data.jpa.repository.DpaRepository; import org.zerock.ex2•entity.Memo;
public interface MemoRepository extends JpaRepository<Memo, Long> { }

Spring Data jPA는 인터페이스 선언만으로도 자동으로 스프링의 빈(bean)으로 등록된다


package org.zerock.ex2.repository;
import org.springframework.data.jpa.repository.DpaRepository; import org.zerock.ex2•entity•Memo;
public interface MemoRepository extends JpaRepository<Memo, Long> { }

-Spring Data jPA는 인터페이스 선언만으로도 자동으로 스프링의 빈(bean)으로 등록
-(스프링이 내부적으로 인터페이스 타입에 맞는 객체를 생성해서 빈으로 등록합니다.)

profile
개발 메모창고

0개의 댓글