동석쿠
프로그래밍 공부
동석쿠
전체 방문자
오늘
어제
  • 공부 (80)
    • 공부기록 (64)
      • 웹개발 (6)
      • Java (7)
      • cs 공부 (3)
      • http 웹 기본 지식 (8)
      • 자바 스프링 (20)
      • 개인 미니프로젝트 (3)
      • 알고리즘 공부 (6)
      • 면접준비 (2)
      • 프론트공부 (8)
      • 파이썬 플라스크 (1)
    • 항해99 기록 (14)
      • 회고록 (10)
      • 팀프로젝트 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JPA
  • 리액트
  • 자바스크립트
  • 리프레쉬토큰
  • lombok
  • 항해99
  • 문법
  • Get
  • API
  • 프로그래머스
  • 파이썬
  • 자바
  • Java
  • 리스트
  • 스프링부트
  • 상속
  • 알고리즘
  • 리프레시토큰
  • Post
  • 스프링

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
동석쿠

프로그래밍 공부

1-1. (RDBMS) (H2) (SQL) (JPA)
공부기록/자바 스프링

1-1. (RDBMS) (H2) (SQL) (JPA)

2022. 1. 21. 20:55

RDBMS란?

  • RDBMS(Relational DataBase Management System)은 컴퓨터에 정보를 저장하고 관리하는 기술.
  • 성능/관리 면에서 매우 고도화된 엑셀 이라고 생각하셔도 좋다.

RDBMS의 종류

각 제품 간 차이가 크지 않아서 사실 어떤 걸 사용하든 좋다.

유료인 Oracle을 제외하고 보통 MySQL, PostgreSQL 중에서 많이 고르는 편인데,

우리는 실제 배포 시 MySQL을 사용할 예정.

우리가 사용할 RDBMS

H2

In-memory DB의 대표 주자인 H2를 먼저 사용해볼 예정. 인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고

서버가 멈추면 데이터가 모두 삭제되는 데이터베이스를 말합니다.

MySQL

MySQL은 우리가 서비스를 배포할 때 사용할 데이터베이스. AWS RDS라는 서비스를 사용해볼 예정인데. 스프링과 궁합이 좋아 많은 회사들이 사용하고 있다.

 

SQL 연습하기

H2웹콘솔을 띄워보자 

데이터베이스는 매우 고도화된 엑셀이다 - 

엑셀 파일 하나가 "데이터베이스"라면,
엑셀 시트 하나는 "테이블"이라고 부르고,
엑셀 행 하나는 "데이터"라고 부른다.
  • 따라서 지금부터 우리가 할 것은
  1. 테이블을 생성하고,
  2. 테이블에 데이터를 삽입하고,
  3. 삽입된 데이터를 조회해보는 것입니다.

테이블 생성하기

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라는 컬럼을 만들어 두었다.
이것이 자바로 어떻게 표현되는지 살펴보자
  1. src > main > java > com.sparta.week02에 domain 이라는 패키지를 만든다.
  2. 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
    '공부기록/자바 스프링' 카테고리의 다른 글
    • 2-0. 키워드
    • 1-2. (상속),(JPA심화)
    • 0-2. 스프링으로 브라우저에 나타내보기
    • 0-1. OT 스프링 시작하기
    동석쿠
    동석쿠

    티스토리툴바