[Study] 5회차 미션

5회차 미션을 진행해보자.

DB 면접 단골 질문

  1. 데이터베이스의 특징에 대해 설명해주세요. DB는 특정 업무를 수행하는 데 필요한 서로 연관된 데이터들의 모임이다. DB는 실시간 처리에 대한 응답이 가능하고, DML을 통해 동적인 상태를 가지며, 병행 처리가 가능하고, 주소나 위치가 아닌 데이터 내용 자체로 찾고자 하는 데이터를 찾는다.


  1. 데이터베이스 언어(DDL, DML, DCL)에 대해 설명해주세요. DDL은 SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의(define)하거나 변경, 삭제할 떄 사용하는 언어이다. DB 관리자나 설계자가 사용한다.

    ex. CREATE, ALTER, DROP

    DML은 DB 사용자가 응용프로그램이나 질의어를 통해 저장된 데이터를 실질적으로 처리, 조작(manipulate)할 때 사용하는 언어이다. 사용자와 DBMS간의 인터페이스를 제공한다.

    ex. SELECT, INSERT, DELETE, UPDATE

    DCL은 저장되는 데이터의 보안, 무결성, 병행제어, 회복 등을 제어(control)할 때 사용하는 언어이다. DB 관리자가 사용한다.

    ex. COMMIT, ROLLBACK, GRANT, REVOKE


  1. 트랜잭션이란 무엇인지 설명해주세요. 트랜잭션은 DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 혹은 한꺼번에 모두 수행되어야 하는 일련의 연산들을 뜻한다. 이를 제어하기 위해 사용하는 명령어는 TCL(Transaction Control Language)로, COMMIT, ROLLBACK, SAVEPOINT가 있다.


Entity 생성, 연결

먼저 TestTable을 생성해보았다.

이 때 MySQL 접근 거부 이슈가 있었다.

콘솔에서 결과를 확인할 수 있다.


미션으로는 아래 조건을 만족하는 student 테이블을 생성하고 entity로 연결했다.

컬럼명데이터타입조건
idbigintprimary key, not null, auto increment
namevarcharnot null
classvarchardefault 값: ‘basic’


package com.example.springclassdemo.student;

import org.hibernate.annotations.ColumnDefault;
import javax.persistence.*;

@Table(name = "student")
@Entity
public class Student {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false)
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "class") @ColumnDefault("'basic'")
    private String class_name;

    public Student() {

    }
}

JPA 어노테이션은 언제 붙여야 하는가?

굳이 어노테이션으로 @Column, @Table의 명시를 하지 않아도 매핑은 된다. 그래서 무슨 역할을 해주는지 궁금해서 찾아보았다.

어노테이션을 사용하지 않으면 class에서 정의한 이름 그대로 객체를 DB 테이블과 매핑한다고 한다. 각 어노테이션들은 여러가지 속성 값을 갖는데, 몇가지를 제외한 나머지 속성들은 DDL 생성 기능을 사용할 때만 사용되는 속성들로, 매핑 자체에는 영향을 끼치지 않는다고 한다.

Entity만으로 스키마 파악이 가능하다는 장점을 갖는다.

별개로 @Entity는 JPA가 관리해주는 클래스라고 명시하는 역할을 하므로 매핑시 필수로 사용한다고 한다.


© 2022. All rights reserved.

Powered by Hydejack v9.1.6