Coding Note
SpringBoot) 코스웹 - 이론 정리 및 DB 연동 본문
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)
삭제 또한 위와 동일하게 진행된다.
삭제하려는 번호의 엔티티 객체가 있는지 먼저 확인하고 이를 삭제한다.
'SpringBoot > 코스웹PJ' 카테고리의 다른 글
SpringBoot) 코스웹 - SpringMVC & Thymeleaf (0) | 2022.03.29 |
---|---|
SpringBoot) 코스웹 - Paging, Query (0) | 2022.03.21 |
SpringBoot) 코스웹 - 환경 및 MariaDB 설치 (0) | 2022.03.20 |