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를 만든 후 각종 툴로 테스트 및 기능 확인
유용한 툴
'Spring Boot > 인강' 카테고리의 다른 글
| 스프링 부트 (0) | 2022.03.06 |
|---|---|
| 5주차 AWS RDS, EC2, MySQL, OG 태그 (0) | 2022.02.23 |
| 4주차 네이버 API 이용, 컴포넌트, 모달, 스케줄러 (0) | 2022.02.22 |
| Spring 3주차 API 설계, HTML, CSS, Javascript, AJAX, JSON (0) | 2022.02.22 |
| Web, API, JAVA Class, Constructor, Getter, Setter, RestController (0) | 2022.02.10 |
댓글