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)으로 등록
-(스프링이 내부적으로 인터페이스 타입에 맞는 객체를 생성해서 빈으로 등록합니다.)
'취준 note 2023 > spring' 카테고리의 다른 글
컨트롤러와 RESTAPI (0) | 2023.01.21 |
---|---|
SOLID 단일 책임 원칙 (0) | 2022.11.22 |
JpaRepository 2 (0) | 2022.11.17 |
Spring Data JPA 개념 (0) | 2022.11.17 |
spring boot 기초 완벽 정리 + 컨트롤러 api (0) | 2022.11.14 |