본문 바로가기
Spring Boot/인강

RDBMS, H2, SQL, JPA, Lombok, DTO, API, CRUD

by hyhs 2022. 2. 10.
728x90
반응형
SMALL

RDBMS 기초지식

Spring Data JPA

REST API

 

1. RDBMS, H2, SQL 란?

-RDBMS(Relational DataBase Management System) : 컴퓨터에 정보 저장하고 관리하는 기술

관계형 데이터베이스, 정보 저장소라고 봐도 무방

종류 

  • MySQL
  • PostgreSQL
  • Oracle Database

-H2

RDBMS의 한 종류로 서버가 켜져있는 동안에만 작동함. In-memory DB

In-memory DB: 서버가 작동하는 동안에만 내용 저장, 서버가 작동을 멈추면 데이터가 모두 삭제되는 DB

-연습용으로 좋음

//application.properties 파일에서

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb

실행 후 /h2-console로 접속
JDBC URL 잘보기
// 테이블 생성(CREATE)
CREATE TABLE IF NOT EXISTS courses (
    id bigint(5) NOT NULL AUTO_INCREMENT, 
    title varchar(255) NOT NULL,
    tutor varchar(255) NOT NULL,
    PRIMARY KEY (id)
);

// 데이터 삽입(INSERT)
INSERT INTO courses (title, tutor) VALUES
    ('웹개발의 봄, Spring', '남병관'), ('웹개발 종합반', '이범규');
    
// 데이터 조회(SELECT)
SELECT * FROM courses;

-SQL

데이터를 읽기, 저장, 변경, 삭제하는 구체적인 문법

 

-MySQL 

서비스를 배포할 때 사용할 DB, 스프링과 많이 사용

 

2.JPA, Domain, Repository

스프링은 자바, DB는 SQL로 작동하므로 두 사이에 번역기가 필요한데 자바를 위한 번역기인 JPA가 있음

 

-JPA(Spring Data JPA) 은 SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기

-Java 명령어를 SQL로 번역

-JPA가 없다면 JDBC 사용(SQL문 사용)

 

-Repository는 JPA를 작동시키는 매개체

JPA는 Repository를 통해서만 사용 가능

 

Spring MySQL
Domain Table
Repository  SQL

 

Course.java

@NoArgsConstructor // 기본생성자를 대신 생성해줍니다.
@Entity // 테이블임을 나타냄
public class Course {

    @Id // ID, Primary Key로 사용
    @GeneratedValue(strategy = GenerationType.AUTO) // 자동 증가
    private Long id;

    @Column(nullable = false) // 컬럼(속성) 값, null이면 안됨
    private String title;

    @Column(nullable = false)
    private String tutor;

    public String getTitle() {
        return this.title;
    }

    public String getTutor() {
        return this.tutor;
    }

    public Course(String title, String tutor) {
        this.title = title;
        this.tutor = tutor;
    }
}

 

CourseRepository.java

public interface CourseRepository extends JpaRepository<Course, Long> {
}

-Interface란?

클래스에서 멤버가 빠진, 메소드 모음집

 

-JPA 사용 

//application.properties에서
spring.jpa.show-sql=true

-CRUD 

생성(Create), 조회(Read), 변경(Update), 삭제(Delete)

 

-Service의 개념

스프링의 구조 3가지

1) Controller : 가장 바깥 부분, 요청/응답을 처리

2) Service : 중간 부분, 실제 중요한 작동이 많이 일어나는 부분 (Update)

3) Repo : 가장 안쪽 부분, DB와 맞닿아 있음. (Repository, Entity)

 

3. 상속의 개념

클래스의 상속

Timestamped.java

@MappedSuperclass // 상속했을 때, 컬럼(속성)으로 인식하게 함.
@EntityListeners(AuditingEntityListener.class) // 생성/수정 시간을 자동으로 반영하도록 설정
public class Timestamped {

    @CreatedDate // 생성일자임을 나타냅니다.
    private LocalDateTime createdAt;

    @LastModifiedDate // 마지막 수정일자임을 나타냅니다.
    private LocalDateTime modifiedAt;
}

@EnableJpaAuditing

 

 

4. Lombok, DTO, API

- Lombok ? 

코드를 절약할 수 있도록 도와주는 라이브러리(필수적인 메소드/생성자 등 자동생성)

@NoArgsConstructor

@RequiredArgsConstructor

 

- DTO(Data Transfer Object) : 데이터를 주고받을 때 사용, 완충재로 사용

(테이블, 클래스를 막쓰거나 다른 사람이 변경할 수도 있음 이를 보완)

 

API: 클라이언트 - 서버 간의 약속

클라이언트가 서버에게 요청(Request)를 보내면, 서버가 요구사항을 처리하여 응답(Response)을 반환

API 요청 - 생성, 조회, 수정, 삭제의 다양한 방식이 있음

 

-REST란?

주소에 명사, 요청 방식에 동사(CRUD)를 사용함으로써 의도를 명확히 드러냄을 의미

  • GET /courses  → 강의 전체 목록 조회 요청
  • 주소에 들어가는 명사들은 복수형 사용
  • 주소에 동사는 가급적 사용 X

5. ARC(Advanced REST Client) 

API를 만든 후 각종 툴로 테스트 및 기능 확인

유용한 툴

 

 

728x90
반응형
LIST

댓글