[Interview] 면접 관련 정리10
DBMS
DBMS(Database Management System)은 DB를 관리하고, 운영하는 SW이다.
종류
DBMS와 같은 SW는 특정 목적을 처리하기 위한 프로그램으로, DB를 사용하기 위해서는 DBMS를 설치해야 하는데, 대표적으로 MySQL, Oracle, SQL 서버, MariaDB 등이 있다.
기능
- 정의 기능(DDL : Data Definition Language)
- 데이터와 그 구조를 정의
- DB가 어떤 용도이며, 어떤 식으로 이용될지에 대한 정의가 필요
- CREATE, ALTER, DROP, RENAME
- 조작 기능(DML : Data Manipulation Language)
- 데이터 CRUD 처리
- DB를 만들었을 때, 그 정보를 수정하거나 삭제/추가/검색할 수 있어야 한다.
- SELECT, INSERT, UPDATE, DELETE
- 제어 기능(DCL : Data Control Language)
- DB의 사용자 권한을 제어
- DB에 접근하여 객체들을 사용하도록 권한을 주고, 회수하는 명령.
- COMMIT, ROLLBACK, GRANT, REVOKE
DB View
접근이 허용된 데이터만 제한적으로 보여주기 위해 하나 이상의 테이블에서 유도된 가상 테이블이다.
사용자가 view에 접근했을 때, 해당하는 데이터를 원본에서 가져온다.
view에 나타나지 않은 데이터를 간편히 보호할 수 있다는 장점.
정규화
테이블 간에 중복된 데이터를 허용하지 않는다는 것.
이상현상이 일어나지 않도록 정규화.
이상현상
이상현상(Anomaly)은 잘못된 테이블 설계로 발생한다.
- 삽입 이상 : 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상
- 삭제 이상 : 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상
- 갱신 이상 : 튜플 갱신 시 중복된 데이터의 일부만 갱신되어 일어나는 데이터 불일치 현상
DB 설계 시 가장 중요한 것
무결성을 보장하는 것이 가장 중요하다!
무결성
데이터의 정확성, 일관성, 유효성이 유지되는 것.
정확성은 중복, 누락이 없는 것이고, 일관성은 데이터가 변하지 않는 것.
데이터 무결성 제약 조건
- 기본 키(PK)에는 null이 들어가면 안된다.
- PK는 테이블 내에 오직 하나의 값만 존재해야 한다.
- 외래 키 값은 null이거나 참조 테이블의 PK값과 동일해야 한다.
- 하나의 테이블에는 적어도 하나의 키가 존재해야 한다.
이것 말고도 너무 많다..
Oracle과 MySQL 차이
- Oracle : 대규모 트랜잭션 로드를 처리하고, 성능 최적화를 위해 여러 서버에 대용량 DB를 분산
- MySQL : 단일 DB로 제한되어 있어, 대용량 DB로는 부적합하다.
- 작은 프로젝트에서 적용시키기 용이하며, 이전 상태를 복원하는데 commit과 rollback만 존재한다.
Spring
Enterprise용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크.
Enterprise용 Java 애플리케이션 개발을 편하게 할 수 있게 해준다.
스프링이 등장하기 전에는 비즈니스 로직을 구현하는 기술 자체가 복잡하고 어려워서, 비즈니스 로직을 구현하기 위한 기술 자체에 대한 공부를 추가적으로 해야 했다.
스프링은 개발 초기에 기본적인 설정과 적용시킬 기술들만 잘 선택하면, 애플리케이션 로직 자체에 더 집중하여 개발할 수 있다.
오픈 소스
누구든 스프링을 사용하여 웹 애플리케이션을 개발할 수 있다.
오픈 소스 : 여러 사람이 코드를 사용해 봄으로써 다양한 검증 과정을 거칠 수 있다.
경량급
기존에 스프링 대신 사용하던 기술들과 비교해보면, 스프링을 사용했을 때 개발자가 작성해야 할 코드가 상대적으로 단순해졌다.
애플리케이션 프레임워크
애플리케이션을 개발하는 데에 있어, 필요한 모든 기술과 관련된 코드들의 뼈대를 제공해 준다.
Spring 특징
POJO 프로그래밍을 지향한다는 것이 가장 큰 특징이다.
POJO
POJO(Plain Old Java Object)는 순수 Java만을 사용하여 생성한 객체를 의미한다.
Java만을 사용하여 만든 객체이므로, 특정 기술이나 환경에 종속되지 않는다.
따라서, 외부 기술이나 규약의 변화에 얽매이지 않아, 보다 유연하게 변화와 확장에 대처가 가능하다.
Spring Boot
Spring으로 애플리케이션을 개발할 때, 필요한 설정을 간편하게 처리해주는 프레임워크.
- 초기 설정 시간을 절약하여 비즈니스 로직을 구현하는데 집중할 수 있다.
- 자체적인 웹 서버를 내장하고 있어, 빠르고 간편하게 배포 진행 가능
- 독립적으로 실행 가능한 jar 파일로 프로젝트를 빌드할 수 있어, 클라우드 서비스 및 도커와 같은 가상화 환경에 빠르게 배포 가능
Annotation
소스코드에 @...
형태로 표현하며 클래스, 필드, 메소드의 선언부에 적용할 수 있는 특정 기능이 부여된 표현법.
Annotation 사용으로 소스 코드에 메타 데이터를 보관할 수 있고, 컴파일러에게 필요한 정보 제공.
Spring JDBC
JDBC : Java에서 DB에 접속할 수 있도록 하는 자바 API
대표적으로 3가지 기능을 표준 인터페이스로 정의해서 제공한다.
java.sql.Connection
: 연결java.sql.Statement
: SQL을 담은 내용java.sql.ResultSet
: SQL 요청 응답
각각의 DB마다 SQL, 데이터 타입 등의 사용법이 다르기 때문에, DB를 변경하면 JDBC 코드는 변경하지 않아도 되지만, SQL은 해당 DB에 맞도록 변경해야 한다.
하지만, Spring에서는 JDBC와 ORM 프레임워크를 지원하기 때문에, 따로 작성하지 않아도 된다.
MyBatis
객체, DB Mapper 자체를 독립적으로 작성하고, DTO와 SQL 실행 결과를 매핑해서 사용할 수 있도록 지원.
기존에는 DAO에 모든 SQL문이 위치했으나, MyBatis를 통해 SQL은 XML 설정 파일로 관리.
MVC1, MVC2
MVC 패턴에는 model1 방식과 model2 방식이 있다.
Model1
JSP 페이지 안에 로직 처리를 위한 자바 코드를 함께 작성.
요청이 오면 직접 자바 빈이나 클래스를 통해 작업을 처리하고, 이를 출력.
즉, Controller 영역에 View 영역을 같이 구현하는 방식이며, 사용자의 요청을 JSP가 전부 처리한다.
장점
빠르고 쉽게 개발 가능
단점
JSP 파일이 너무 비대해지며, Controller와 View가 혼재하므로, 향후 유지보수가 어렵다.
Model2
JSP에서만 담당하는 것이 아닌, 서블릿을 만들어 역할을 분담한 패턴.
JSP는 요청 결과를 출력해 주는 것만 담당하고, 비즈니스 로직에 해당하는 컨트롤러의 역할은 서블릿이 담당한다.
사용자의 요청을 서블릿이 받고, 서블릿은 해당 요청으로 view를 보여줄 것인지, Model로 보낼 것인지 판단하여 전송.
HTML 소스와 Java 소스를 분리하여 확장 및 유지 보수에 좋다.
장점
디자이너와 개발자의 분업이 가능하며, 유지보수 및 확장이 쉽다.
단점
설계가 어려우며, 개발 난이도가 높다.
댓글남기기