Coding Note

SpringBoot) 코스웹 - 이론 정리 및 DB 연동 본문

SpringBoot/코스웹PJ

SpringBoot) 코스웹 - 이론 정리 및 DB 연동

jinnkim 2022. 3. 20. 21:59

1. ORM과 JPA

1) ORM(Object Relation Mapping)

- 객체지향 패러다임을 관계형 데이터베이스에 보존하는 기술

- 객체지향 구조가 관계형 데이터베이스와 유사하다.

 

객체지향구조 관계형데이터베이스
Class 테이블
Instance(객체) : 데이터 + 행위(메서드) Row(레코드, 튜플) : 데이터
Reference(참조) Relation(관계)

 

즉, 객체지향을 자동으로 관계형 데이터베이스에 맞게 처리해주는 기법

 

 

2) JPA(Java Persistance API)

- ORM을 Java 언어에 맞게 사용하는 스펙

- Java 언어에 국한된 개념

 

ORM이 상위 개념

 

 

2. Spring Data JPA(Java Persistance API) 

1) Spring Data JPA(Java Persistance API) 

- Java 언어를 통해서 데이터베이스와 같은 영속 계층을 처리하고자하는 스펙

- 자바 진영에서 만든 ORM 기술 표준
- 스프링 진영에서 스프링 프레임워크, "스프링 데이터 JPA"라는 기술로 적극 지원
- 전자정부 표준 프레임워크의 ORM 기술도 JPA

 

스프링부트 JPA의 구현체 중 'Hibernate'라는 구현체를 사용한다!

 

Q1. Hibernate

- 오픈소스로 ORM을 지원하는 프레임워크

 

2) 스프링에서 DB 전달 과정

3) Spring Data JPA 개발에 필요한 것

1. JPA를 통해서 관리하게 되는 객체를 위한 엔티티 클래스

2. 엔티티 객체들을 처리하는 기능을 가진 Repository

 

 

3. 엔티티

엔티티 테스트하기

 

< 어노테이션 공부하기 >

@Entity

- 엔티티 클래스에 무조건 추가!

 

@GeneratedValue(strategy = GenerationType.IDENTITY)

- PK를 자동으로 생성하고자 할 때 사용

 

 @Column

- 필드, 칼럼을 추가할 때 선언한다.

 

@Getter

- Getter 메서드를 생성하고 @Builder를 이용해서 객체를 생성할 수 있게 처리해준다.


@Builder

- 모델 객체를 생성할 때 Builder를 자동으로 추가해 주는 어노테이션
- @AllArgsConstructor, @NoArgsConstructor 항상 같이 처리해야 된다.

 

4) MariaDB 연동

- application.properties 

설정 추가하기

 

spring.jpa.hibernate.ddl-auto

- 프로젝트 실행 시 자동으로 DDL을 생성할 것인지를 결정하는 설정

- 설정값은 create, update, create-drop, validate 

 

spring.jpa.properties.hibernate.format_sq

- SQL을 포맷팅해서 출력

 

spring.jpa.show-sql

- 콘솔에 SQL문 보여줄건지 설정

 

 

 

연동 완료!

 

5) JpaRepository

인터페이스 기능을 통해서 JPA 관련 작업을 별도의 코드 없이 처리할 수 있도록 지원한다.

 

1) JpaRepository 상속 구조

1) JpaRepository 사용

인테페이스 선언만으로도 자동으로 스프링의 빈(Bean)으로 등록

public interface MemoRepository extends JpaRepository<Memo,Long> {
}

 

6) CRUD

테스트 코드를 통해 CRUD 테스트!

 

  • Insert : save(엔티티 객체)
  • select : findById(키 타입 ), getOne(키 타입)
  • update: save(엔티티 객체)
  • delete : deleteById(키 타입), delete(엔티티 객체)

 

1) 등록(Insert)

 

100개의 새로운 Memo 객체 생성

 

 

2) 조회(select)

 

3) 수정(update)

 

 

select 쿼리로 해당 번호의 Memo 객체 확인하고 update 진행한다.

즉, @Id를 가진 엔티티 객체가 있다면 update 바로 진행, 그렇지 않으면 insert 진행 후 update 진행한다!!

 

 

4) 삭제(delete)

삭제 또한 위와 동일하게 진행된다.

삭제하려는 번호의 엔티티 객체가 있는지 먼저 확인하고 이를 삭제한다.

 

 

 

Comments