목록백엔드 (25)
ENN
Doodle의 DB를 설계하면서 컬럼마다 어떤 데이터 타입으로 작성해야 할지 고민해 보았다. MySQL의 데이터 타입은 크게 3가지로 나뉜다. 1. Numeric types(숫자형 타입) 2. Date and time types(날짜 및 시간 타입) 3. String types(문자열 타입) create table users ( username varchar(30) NOT NULL, nickname varchar(30) unique not null, email varchar(50) unique not null, userid varchar(30) unique NOT NULL, userpw varchar(40) not null, primary key (userid) ) create table challeng..
Spring Controller는 URL 요청을 다양한 방법으로 처리한다. Redirect? redirect는 웹 브라우저(사용자)가 어떤 URL로 웹 서버를 요청했을 때 다른 URL로 넘겨주는 것을 말한다. 예를 들어, Gmail로 접속했을 때 로그인이 되어 있지 않다면 로그인이 선행되어야 하기 때문에 로그인 페이지로 이동시키는 것을 redirect라고 한다. redirect:의 다음 문자열이 "/"로 시작하면 웹 어플리케이션을 기준으로 이동 경로를 생성하고, 그렇지 않으면 현재 경로를 기준으로 한 상대 경로를 사용한다. ... @Controller public class HomeController{ @GetMapping(path="/") public String hello(){ System.ou.pr..
HTTP 프로토콜의 특징이자 약점을 보완하기 위함 Connectionless Protocol : 클라이언트가 서버에 요청을 보냈을 때 그 요청에 해당하는 응답을 보낸 후 연결을 끊음 Stateless Protocol : 커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않음 정보가 유지되지 않으면, 페이지를 이동할 때마다 동일한 동작을 반복해야 하는 번거로움이 생김. 따라서 이러한 번거로움을 줄이기 위해 쿠키와 세션을 사용함 쿠키(Cookie) HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문했을 때, 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일 HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조, 재사용함 세션(Session) 방문자..
개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 SQL Mapper (Spring boot + Mysql 환경에서 사용) JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해줌 기존에 JDBC를 사용할 때는 DB와 관련된 여러 복잡한 설정(Connection)들을 다루어야 했지만 SQL Mapper는 자바 객체를 실제 SQL문에 연결함으로써, 빠른 개발과 편리한 테스트 환경을 제공함 데이터베이스 record에 원시 타입과 Map 인터페이스 그리고 자바 POJO를 설정해서 매핑하기 위해 xml과 Annotation을 사용할 수 있음 장점 SQL에 대한 모든 컨트롤을 하고자 할때 매우 적합 SQL쿼리들이 매우 잘 최적화되어 있을 때에 유용 단점 애플리케이션..

1. MVC(Model View Controller) - 의미: 하나의 프로젝트를 구성할 때 그 구성요소를 세가지 역할로 구분한 패턴 - 사용하는 이유: 하나의 프로젝트를 만들면 각각의 요소에만 집중할 수 있게 되고, 유지보수성, 확장성이 증가하게 되어 개발의 효율성이 높아짐. 1) Model: 데이터와 비즈니스 로직을 관리함 - 사용자가 편집하고자하는 모든 데이터를 가지고 있어야함. - 뷰나 컨트롤러에 대해 알면 안됨 - 변경을 요청하면 이를 처리할 수 있는 방법을 구현해야함. 2) View: 레이아웃과 화면을 처리함 - 모델에게 전달받은 정보를 저장하면 안됨 - 모델이나 컨트롤러에 대해 알면 안됨 3) Controller: 명령을 모델과 뷰 부분으로 라우팅함. - 모델이나 뷰에 대해서 알고 있어야함 ..
Lombok은 Java에서 매우 많이 쓰이는 라이브러리이다. 특히 DTO를 사용한다면 용이하게 사용할 수 있는 라이브러리이다. Lombok의 기능을 하나씩 알아보자. @Getter와 @Setter 계층간 데이터 전달을 위해 DTO를 사용하다보면 DTO 안에 변수가 많아질수록 getter와 setter가 많이 필요하다. 변수 하나당 get,set 하나씩 설정하다보니 변수가 많아지면 보기에도 지저분하다. 하지만 Lombok을 사용한다면 class 앞에 @Getter @Setter만 붙여주면 된다. 따로 get, set을 선언할 필요도 없고 DTO 내부의 변수에 접근하려면 get변수명() 또는 set변수명()의 형태로 호출하면 된다 (주의 : 변수명 앞글자는 대문자로 바꿔줘야한다.) 예시 코드는 다음과 같다...
일반적으로 데이터를 추가하거나 등록할 때 @PostMapping를, 수정할 때 @PutMapping을 사용한다. 언뜻 보아 이 둘은 새로운 요청을 서버로 전송한다는 점에서 비슷해 보인다. PUT과 POST의 가장 큰 차이는 PUT이 가지는 멱등성으로 설명할 수 있다. HTTP 요청에서 멱등성이란 동일한 요청을 한 번 보내는 것과 여러 번 연속해서 보내는 것에 상관없이 클라이언트가 받는 응답이 동일하다는 것을 말한다. 따라서, @PutMapping의 용도는 멱등성에 있다. @PutMapping은 대상 리소스를 나타내는 데이터가 있는지 없는지 체크하여 없을 경우 Created(201) 응답을 보내고 대상 리소스를 나타내는 데이터가 있을 경우 OK(200), No Content(204) 응답을 통해 성공적으로..
Controller Web Browser의 요청을 전담하여 처리함 Controller가 Service를 호출 Service 비즈니스 로직을 수행 유저의 요청이 들어왔을 때, Controller에서 모든 요청을 수용. 하지만 모든 종류의 업무에 대한 요청을 Controller가 홀로 감당하기는 힘듦 따라서, 다른 클래스인 Service가 그 일을 대신하게 함 데이터베이스에 접근하는 DAO를 이용해 결과값을 받아옴 DAO 데이터베이스에 접속하여 비즈니스 로직에 필요한 쿼리를 호출 DTO Data Trasfer Object의 약자로 각 계층이 데이터를 주고 받을 때 사용하는 객체를 뜻함 Mapper DAO 대신 Mapper를 사용하면 DAO를 만들지 않고 interface만을 이용해 간편히 개발 가능 MyBa..