프로젝트
-
RestController에서 클라이언트에게 어떤 값을 반환해야 할까?프로젝트/게시판 프로젝트 2022. 5. 5. 03:41
Spring Boot를 활용하여 REST API를 만들던 도중 클라이언트에게 값을 반환하는 방법은 어떤 것들이 존재하며 어떤 값을 반환해야 할지 정리하면 좋을 것 같아 해보려고 합니다. 우선 반환하는 방법들에는 어떤것들이 존재할까요? 1. String반환(단순 문자열) @RestController public class testController{ @RequestMapping("/test") public String test1(){ return "test"; } } 문자열 데이터는 기본적으로 text/html 타입을 처리됩니다. "test"라는 메시지가 HTTP ResponseBody에 직접 쓰이게 됩니다. 2. 객체 반환 @RestController public class testController{ ..
-
Entity와 DTO를 분리하자!프로젝트/게시판 프로젝트 2022. 5. 4. 00:55
클라이언트에서 정보를 받아오면 Member Entity를 그대로 사용하려고 하였습니다. 하지만 그렇게 되면 Controller 및 Service에 사용하게 될 로직들이 Entity의 속성 값과 의존관계를 맺게 됩니다. 하지만 Entity는 매우 중요한 객체로 사용범위도 크고 모든 데이터를 갖고 있는 객체이므로 Entity와 서비스가 의존관계를 갖게 하는 것은 유지보수 측면에서나 관리측면에서 매우 부적합합니다. DTO 객체는 View Layer와 데이터를 주고받을 때 사용합니다. Entity 객체는 DB Layer와 데이터를 주고받을 때 사용합니다. 실제로 Controller에서 결괏값으로 여러 테이블을 join 해서 줘야 할 경우가 빈번하기 때문에 Entity 클래스만으로 표현하기 어려운 경우도 많습니다..
-
@Builder 제대로 알고 사용해보기프로젝트/게시판 프로젝트 2022. 4. 30. 02:27
Lombok의 @Builder를 사용하게 되면 빌더 패턴을 매우 간단하게 적용할 수 있습니다. 빌더 패턴이란? 빌더 패턴이란 인스턴스(객체)를 생성할 때 생성자만을 통해서 생성하는데 어려움이 있기 때문에 고안된 생성 패턴입니다. 예를 들어 클래스에 생성자 인자가 많으면 각 인자들이 어떠한 값을 나타내는지 알기 어렵기 때문입니다. 빌더 패턴에 대해서 잘 모르신다면 다음 글을 보고 오시면 좋을 것 같습니다. https://junuuu.tistory.com/247?category=968252 [Java] 빌더 패턴 빌더 패턴이란? 빌더 패턴은 인스턴스를 생성할 때 생성자(Constructor)만을 통해서 생성하는데 어려움이 있어서 고안된 패턴입니다. 클래스에 생성자 인자가 많다면 어떠한 인자가 어떠한 값을 나..
-
JPA로 CRUD 해보기 + 테스트코드프로젝트/게시판 프로젝트 2022. 4. 28. 22:15
https://junuuu.tistory.com/270?category=997278 Spring Initializr로 프로젝트 생성하기 + MySQL연동까지 https://start.spring.io/ Proejct : Gradle Project Language : Java Packaging : Jar(REST API server로 만들기 때문에 JSP필요 x) - Spring 문서에서도 JSP를 피하라고 명시 Java : 11(16으로 변경해서 사용 예.. junuuu.tistory.com 이전에 이어서 Spring Initailzr로 스프링 부트 프로젝트를 생성했으며 MySQL까지 연동된 상황입니다. 지난번에 resources/application.properties 에서 JPA에 대한 설정을 할때 ..
-
Spring Boot + MySQL 연동(feat. Spring initializr)프로젝트/게시판 프로젝트 2022. 4. 26. 02:19
https://start.spring.io/ Proejct : Gradle Project Language : Java Packaging : Jar(REST API server로 만들기 때문에 JSP필요 x) - Spring 문서에서도 JSP를 피하라고 명시 Java : 11(16으로 변경해서 사용 예정) Dependencies : Lombok, Spring Web, Spring Data JPA, MySQL Driver 이제 하단의 GENERATE를 눌러보겠습니다. 압축을 풀어주고 Anthill 폴더를 C:\intellij폴더 안에 넣어주겠습니다 이후에 Intellij를 실행! File -> Open... 선택 Anthill의 build.gradle 선택하고 OK Open as Project 클릭 Trus..
-
테이블의 PK는 어떤값으로 잡아야 할까?프로젝트/게시판 프로젝트 2022. 4. 21. 02:06
프로젝트에 사용하는 회원 테이블의 PK를 어떤 값으로 잡을지 고민하고 있습니다. 각 후보들에 대해 분석하여 보겠습니다. 검색을 하던 중 인조 식별자/본질 식별자라는 키워드도 알게 되었습니다. 본질 식별자 업무에 의해 만들어진 식별자 ( ID값과 같은 경우) 인조 식별자 본질 식별자가 복잡한 구성을 갖고 있어서 인위적으로 만든 식별자 우선 PK란?! Primary Key의 약어로 데이터베이스의 기본키를 의미합니다. 기본키는 중복된 값을 가질 수 없고 NULL 값일 수 없는 키로 튜플을 식별하기 위해 반드시 필요한 키입니다. 후보들 ID UUID Auto Increment ID Identification의 약자로 보통 사용자가 어떤 사이트에 인증을 얻기 위해 로그인할 때 사용됩니다. 사용자마다 단일한 값을 ..
-
프로젝트 데이터베이스 설계(RDBMS vs NoSQL 선정기준 + 특정 RDBMS 선정이유)프로젝트/게시판 프로젝트 2022. 3. 29. 22:36
1. 요구 사항 분석 데이터베이스를 사용할 주요 사용자의 범위 결정 배달비를 절약하고 싶은 사용자 사용자가 수행하는 업무 결정 회원가입, 로그인, 로그아웃, 배딜개최, 채팅 사용 사용자의 업무와 관련해 필요한 데이터 결정 로그인(회원가입, 로그아웃)에 필요한 데이터 (닉네임, 아이디, 비밀번호, 이름, 주소, 휴대폰 번호, 비밀번호 찾기) 음식점 데이터(음식점 식별 번호, 음식점 이름, 음식점 사진, 음식점 주소, 음식점 위치) 배딜개최에 필요한 데이터 (배딜번호, 음식점 데이터, 배달비, 모집글, 모집인원, 작성 시간, 작성자) 채팅 사용에 필요한 데이터 (채팅 번호, 채팅 참여자, 채팅 내용, 채팅 시간) = 채팅에 대해 잘 모르기 때문에 추후 수정될 가능성 多 Ant Hill의 데이터베이스를 위한 ..
-
로그인 기능 구현 시 고려 사항(쿠키, 세션, 로컬 스토리지, 인증과 인가, 토큰, Oauth)프로젝트/게시판 프로젝트 2022. 3. 24. 01:19
로그인 기능을 위한 사전 지식 쿠키란? 쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어가 있는 작은 데이터 파일입니다. F12로 개발자 모드를 켜고 document.cookie를 하면 현재 쿠키 정보가 나옵니다. 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효시간이 정해지면 브라우저가 종료되어도 인증이 유지됩니다. 쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조합니다. 클라이언트에 300개까지 쿠기가 저장 가능하며, 하나의 도메인당 20개의 값을 가질 수 있습니다. 하나의 쿠키값은 4KB까지 저장됩니다. 쿠키의 구성 요소 이름 : 각각의 쿠키를 구별하는 데 사용되는 이름 값 : 쿠키의 이름과 관련된 값 유효시간 : 쿠키의 유지시간 도메인 : 쿠키를 전송할 도메인, 만약 이 값이 ..