하나의 릴레이션에 하나의 의미만 존재하도록 릴레이션을 분해하는 과정이며,데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이다.다양한 목적이 있지만, 대표적으로 두 가지가 있다.첫째, 불필요한 데이터 (data redundancy)를 제거해 불
좋은 관계형데이터베이스를 설계하는 목적 중 하나가 정보의 이상 현상(Anomaly)이 생기지 않도록 고려해 설계하는 것입니다.이상 현상은 테이블을 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말합니다.이상 현상은 갱신 이상(Mod
Spring Security란 자바 어플리케이션에서 인증과 권한 부여, 일반적인 공격에 대한 보호 기능을 제공하는 프레임워크입니다. Spring Security를 사용하면 어플리케이션의 보안 관련 기능을 자체적으로 구현할 필요없이 쉽고 안전하게 구현할 수 있고 다양한
Restful API는 HTTP 통신을 Rest 설계 규칙을 잘 지켜서 개발한 API를 Restful한 API라고 합니다.Rest 설계 규칙은 URI는 정보의 자원만 표현해야 하며, 자원의 상태와 행위는 HTTP Method에 명시하는걸 말합니다.이 둘의 차이점은 제어
JPA의 Repository에서 조회할 때 나오는 Optional 타입을 처리해보자.웹 애플리케이션 계층 구조 중 서비스 계층은 도메인에 대한 정보를 리포지터리에서 조회하고, 정보를 가공하여 컨트롤러로 보내주는 일을 한다.이때, JPA의 리포지터리에서 find를 하면,
자바 ORM 기술에 대한 표준 명세로, 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스입니다.ORM 프레임워크는 자바 객체와 관계형 DB를 매핑한다. 즉, 객체가 DB 테이블이 되도록 만들어주는 것이다. ORM을 사용하면, SQL을 작성하지
스프링은 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크입니다. 자바 SE로 된 자바 객체 POJO를 자바 EE에 의존적이지 않게 연결해주는 역할을 합니다. 스프링의 특징으로는 크기와 부하 측면에서 경량 시킨 것과, IOC 기술로 애플리케이션의 느슨한 결합을 도모시
블랙박스 테스트 : 내부의 구조 및 동작 원리를 모르는 블랙박스와 같은 상태(서비스의 사용자 입장)에서 동작을 검사하는 테스트 방법장점 : 누구나 테스트 가능단점 : 기능이 추가될수록 테스트의 범위가 늘어나고 테스트하는 사람이 늘어나야 한다.개발자 테스트 : 개발자가
Aspect Oriented Programming의 약자로, 관점 지향 프로그래밍어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다!!예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다
스프링 서버와 클라이언트에서 JSON 형식으로 메시지를 보내는 이유와 Message Converter를 알아보겠습니다.위와 같이 한국인과 독일인이 서로 통신을 한다고 가정해보자.서로의 자국어에 대한 지식이 없다고 생각하자.한국인은 독일어를 모르기 때문에 한국어를 보낼
한 명의 회원이 N 개의 사이트에 회원 가입을 한다면, 인터넷 사용자의 N 배수만큼의 아이디가 생긴다.이는 그만큼 개인 정보가 많이 사용된다는 의미이고, 저장 공간의 수요와 개인 정보에 대한 보안 요소가 더 많아진다는 것을 의미한다.이때 OAuth를 사용하여 네이버와
오늘은 @Controller와 @RestController의 차이점에 대해 알아보겠습니다.Spring MVC의 @RestController은 @Controller와 @ResponseBody의 조합이다.Spring 프레임 워크에서 RESTful 웹 서비스를 보다 쉽게 개
의존성 주입(Dependency Injection)의 의미를 알아보고 Spring Boot로 의존성 주입을 해보겠습니다.Spring Dependency Injection이란, 각 객체 간 의존관계를 스프링 컨테이너가 개발자가 정의한 Bean 등록 정보를 바탕으로 자동으
제어의 역전(Inversion of Control) IoC에 대해 알아보겠습니다.제어의 의미를 알아보자한 클래스의 메서드에서 다른 구현체의 인스턴스를 만든다고 해보자.Test라는 클래스에서 new 생성자를 이용해 인스턴스를 만들어주었다.이런 상황이 Test 클래스의 s
스프링 부트의 서버 실행과 클라이언트의 요청을 받는 과정을 알아보겠습니다.스프링 부트가 동작 될 때 두 가지 영역으로 나눠서 생각할 수 있다.서버가 실행됨과 동시에 생성되는 객체들이 있고 이러한 객체는 모든 스레드가 공유하게 된다.스프링은 클라이언트의 request가
비밀번호는 개인의 정보와 밀접한 관련이 있기 때문에 노출되지 않도록 엄격한 주의가 필요하다. (대부분의 유저가 아이디와 비밀번호를 같게 쓰는 경우가 많아 한곳에서 노출되면 여러 곳에서 노출되는 것과 같다) 이 밖에 비밀번호 암호화가 필요한 이유에 대해 정리해보면 다음과
다른 토큰 중 JWT는 전자 서명을 한다는 점이 다릅니다. 또한 JWT 를 사용하면 이점이 있습니다.전자 서명(Digital Signature) 된 토큰을 이용해 스케일 문제를 해결할 수 있다.오늘은 JWT의 구조, 장점, 단점 등을 알아보겠습니다.헤더(Header)
서버와 클라이언트의 관계를 유지하는 웹서비스의 HTTP 프로토콜에서는 Connectionless Protocol 이라는 규칙이 있다.한 번의 요청에 대해서 응답한 후 바로 연결을 해제하는 것이 Connectionless Protocol 인데, 실제 요청이 몇 천, 몇