
RDBMS란?
- RDBMS(Relational DataBase Management System)은 컴퓨터에 정보를 저장하고 관리하는 기술.
- 성능/관리 면에서 매우 고도화된 엑셀 이라고 생각하셔도 좋다.
RDBMS의 종류
각 제품 간 차이가 크지 않아서 사실 어떤 걸 사용하든 좋다.
유료인 Oracle을 제외하고 보통 MySQL, PostgreSQL 중에서 많이 고르는 편인데,
우리는 실제 배포 시 MySQL을 사용할 예정.
우리가 사용할 RDBMS
H2
In-memory DB의 대표 주자인 H2를 먼저 사용해볼 예정. 인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고
서버가 멈추면 데이터가 모두 삭제되는 데이터베이스를 말합니다.
MySQL
MySQL은 우리가 서비스를 배포할 때 사용할 데이터베이스. AWS RDS라는 서비스를 사용해볼 예정인데. 스프링과 궁합이 좋아 많은 회사들이 사용하고 있다.
SQL 연습하기
H2웹콘솔을 띄워보자



데이터베이스는 매우 고도화된 엑셀이다 -
엑셀 파일 하나가 "데이터베이스"라면,
엑셀 시트 하나는 "테이블"이라고 부르고,
엑셀 행 하나는 "데이터"라고 부른다.
- 따라서 지금부터 우리가 할 것은
- 테이블을 생성하고,
- 테이블에 데이터를 삽입하고,
- 삽입된 데이터를 조회해보는 것입니다.
테이블 생성하기
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)
);
CREATE TABLE : 테이블을 만들어라
IF NOT EXISTS : 기존의 courses라는 테이블이 존재하지 않는다면
courses는 세개의 열로 구성돼있음. 각각 id, title, tutor,
NOT NULL : 어느 하나도 비면 안된다.
bigint : long가르키면 방법
varchar : String가르키는 방법
PRIMARY KEY (id) : id는 유일하다. (id)라는 값은 행을 구분해주는 유일한 값.
AUTO_INCREMENT : 만약 기존의 id가 1이었다면 다음에 들어오는 2. 즉 자동으로 증가시켜줌
데이터 삽입하기
INSERT INTO courses (title, tutor) VALUES
('웹개발의 봄, Spring', '남병관'), ('웹개발 종합반', '이범규');
INSERT INTO : 넣어달라 courses로
(title, tutor) : 쌍에 맞게 넣어라
VALUES : 그 값은 ->
웹개발 Spring, 남병관 / 웹개발 종합, 이범규
데이터 조회하기
SELECT * FROM courses;

위에서 사용한 생성, 삽입, 조회 명령문을 SQL(Structured Query Language)라고 한다.
Spring Data JAP 라는걸 배우면 Java명령어를 SQL로 번역하여 사용할 수 있다.
JPA시작하기

JPA란?
JAP는 SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기.
JPA가 없다면

JPA가 있다면

Domain, Repository 소개

자바로 DB를 사용하도록 도와주는 녀석이 JPA다.
그럼 DB를 이용하는데 핵심이었던 "테이블" 과 "SQL"과 동일한 개념의 자바 용어가 있다.
"테이블" = Domain
"SQL" = Repository
우리는 앞서 courses라는 테이블에 title,tutor라는 컬럼을 만들어 두었다.
이것이 자바로 어떻게 표현되는지 살펴보자
- src > main > java > com.sparta.week02에 domain 이라는 패키지를 만든다.
- Course.java, CourseRepository.java 파일을 만든다.

Course.java 클래스
@NoArgsConstructor // 기본생성자를 대신 생성해줍니다.
@Entity // 테이블임을 나타냅니다.
public class Course {
@Id // ID 값, Primary Key로 사용하겠다는 뜻입니다.
@GeneratedValue(strategy = GenerationType.AUTO) // 자동 증가 명령입니다.
private Long id;
@Column(nullable = false) // 컬럼 값이고 반드시 값이 존재해야 함을 나타냅니다.
private String title;
@Column(nullable = false)
private String tutor;
public String getTitle() { //getter
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는 Repository를 통해서만 사용할 수 있다.
인터페이스는 클래스에서 멤버가 빠진 메소드 모음집 이라고 보면 된다.

JPA사용해보기
JPA 실행 코드
// Week02Application.java 의 main 함수 아래에 붙여주세요.
@Bean
public CommandLineRunner demo(CourseRepository repository) {
return (args) -> {
Course course1 = new Course("웹개발의 봄, Spring","남병관");
repository.save(course1);
List<Course> courseList = repository.findAll();
for(int i=0; i<courseList.size();i++){
Course c = courseList.get(i);
System.out.println(c.getTitle());
System.out.println(c.getTutor());
};
}

위 코드에선 낯선 개념이 갑자기 많이 나온다.
@Bean, 익명 함수 등은 실무에서 중요한 것들이 맞다. 하지만 지금 단계에선
전부 이해하고 넘어가기엔 스프링의 양이 너무 방대하기 때문에
코드를 만드는 재미를 먼저 챙겨보도록 하자
'공부기록 > 자바 스프링' 카테고리의 다른 글
| 2-1. 서버 설계 (API),(Repository),(Service),(Controller), (0) | 2022.01.23 |
|---|---|
| 2-0. 키워드 (0) | 2022.01.22 |
| 1-2. (상속),(JPA심화) (0) | 2022.01.22 |
| 0-2. 스프링으로 브라우저에 나타내보기 (0) | 2022.01.21 |
| 0-1. OT 스프링 시작하기 (0) | 2022.01.21 |