Spring

[스프링 프레임워크] 4. 데이터베이스 작업

yes_truly 2023. 10. 14. 01:33
728x90

 

1. 데이터베이스 생성

 

1) 데이터베이스란?

  • 데이터를 보관하기 위한 상자
  • 특정한 규칙을 적용해 데이터를 정리해서 보관

2) 관계형 데이터베이스란?(Relational Database)

  • 데이터를 표 형식으로 표현, 여러 표에서 항목의 값 사이에 관계를 맺고 있는 데이터 베잇
  • 표 = 테이블(Table)
  • 테이블과 테이블 간의 관계 = 관계(Relationship)

 


 

2. 테이블 생성

 

1) 테이블이란?

  • 데이터베이스 안에서 실제로 규칙을 가진 데이터가 저장되는 상자
  • 이차원 표 형식으로 데이터를 정리해 저장

2) 레코드와 칼럼

  • 레코드(record) : 테이블의 가로 행, 하나의 레코드는 한 건의 데이터
  • 칼럼(column) : 테이블의 세로 열, 하나의 칼럼은 데이터의 각 요소 

3) 제약 조건
테이블에 존재하는 데이터가 불일치 상태가 되지 않게 하는 규칙

  • NOT NULL : 필수 입력
  • UNIQUE : 중복값 허용하지 않음
  • CHECK : 지정한 조건을 만족하지 않는 값의 입력 허용하지 않음
  • PRIMARY KEY : 테이블 안에서 레코드를 식별하는 기본키 설정. NOT NULL과 UNIQUE가 같이 적용됨
  • FOREIGN KEY : 관련된 테이블을 연결하는 설정, 외래키라고 함
  • DEFAULT : 기본값 설정

 


 

3. 데이터 입력

 

1) SQL이란?(Structured Query Langauage)

  • 데이터베이스를 조작하기 위한 언어
  • CRUD(Create, Read, Update, Delete)
    • Create, 생성 → 데이터를 등록 → INSERT INTO 테이블명 (칼럼명...) VALUES (값...);
    • Read, 읽기 → 데이터를 참조 → SELECT 칼럼명 FROM 테이블명;
    • Update, 갱신 → 데이터를 갱신 → UPDATE 테이블명 SET  칼럼명 = 값 WHERE 갱신할 레코드를 특정하는 조건;
    • Delete, 삭제 → 데이터를 삭제 → DELETE FROM 테이블명 WHERE 삭제할 레코드를 특정하는 조건;

 

 


 

4. 엔티티와 리포지토리 알아보기

 

1) 엔티티란?

  • 데이터를 담아두는 객체. 데이터베이스 테이블의 한 레코드에 대응하는 객체
  • 사용 시 주의사항
    • 클래스명 : 대응하는 데이터베이스의 테이블 명으로
    • 데이터베이스에 값 넘겨주기 : 엔티티에 값을 넣어서 넘겨줌
    • 데이터베이스에서 값 가져오기 : 값을 엔티티에 넣어 가져옴

2) 리포지토리란?

  • 데이터베이스를 조작하는 클래스
  • 반드시 인터페이스를 정의하고 구현해야 함
  • 리포지토리 인터페이스의 필드에 리포지토리 구현 클래스를 DI해 특정 구현에 의존하는 것을 피할 수 있음

 


 

5. 스프링 데이터 JDBC 사용해보기

 

1) O/R 매퍼란?

  • 애플리케이션에서 사용하는 객체와 관계형 데이터베이스의 데이터를 매핑하는 것
  • 미리 설정된 객체와 관계형 데이터베이스 간의 대응 관계 정보를 바탕으로 인터페이스의 데이터에 대응하는 테이블에 내보내거나 데이터베이스에서 값을 읽어 인터페이스에 대입하는 작업을 자동으로 실행

2) 스프링 데이터 JDBC란?

  • 스프링 데이터 JDBC = O/R 매퍼
  • 스프링 데이터가 제공하는 CrudRepository를 상속해 자동으로 CRUD를 지원하는 메소드를 사용할 수 있음

3) 엔티티 생성 시 사용하는 Lombok annotation

  • @Data : 전 필드에 대해 getter/setter로 액세스할 수 있음. hashCode(), equals(), toString()도 자동 생성됨
  • @NoArgsConstructor : 기본 생성자 자동 생성
  • @AllArgsConstructor : 전 필드에 대해 초기화 값을 인수로 가지는 생성자 자동 생성
728x90