1. @Builder 적용 및 사용 방법@Builder@NoArgsConstructor@AllArgsConstructor@Datapublic class TodoEntity { private String id; // 이 오브젝트의 아이디 private String userId; // 이 오브젝트를 생성한 사용자의 아이디 private String title; // Todo 타이틀(예: 운동하기) private boolean done; // true - todo를 완료한 경우(checked)}클래스에 @Builder 어노테이션을 사용하면 builder 패턴을 적용해서 객체를 생성할 수 있다. ** 참고 : 위와 같이 Entity에 @Builder, @NoArgsConstructor, @AllArgs..
2.2.6 퍼시스턴스 레이어 : 스프링 데이터 JPA애플리케이션에서 데이터베이스 작업(테이블 생성, 엔트리 추가, 수정, 삭제)을 웹 서비스의 일부로 동작하게 하려면, 먼저 JDBC 드라이버가 필요하다.JDBC 드라이버는 자바에서 데이터베이스에 연결할 수 있도록 도와주는 라이브러리로, 쉽게 말해 MySQL 클라이언트 같은 역할을 한다. 이를 통해 애플리케이션이 데이터베이스와 통신할 수 있다. MySQL 클라이언트도 내부에서 JDBC/ODBC 등의 드라이버를 사용한다. // 데이터베이스 호출 예제String sqlSelectAllTodos = "SELECT * FROM Todo WHERE USER_ID = " + request.getUserid();String connectionUrl = "jdbc:mys..
2.2.5 서비스 레이어 : 비즈니스 로직서비스 레이어는 컨트롤러와 퍼시스턴스 사이에 비즈니스 로직을 수행하는 역할을 한다.서비스 레이어는 HTTP와 연관된 컨트롤러에서 분리돼 있고, 또 데이터 베이스와 연관된 퍼시스턴스와도 분리돼 있다. 따라서 서비스 레이어에서는 개발하고자 하는 로직에 집중할 수 있다. @Servicepublic class TodoService { public String testService() { return "Test Serivce"; }}@Service 어노테이션은 스테레오타입 어노테이션이다. @Service 내부에 @Component 어노테이션을 갖고 있는데 @Component 어노테이션과 비교했을 때 특별한 기능 차이는 없다. 단지 이 클래스는 스프링..
@GetMapping("/testResponseEntity")public ResponseEntity testControllerResponseEntity() { List list = new ArrayList(); list.add("Hello World! I'm ResponseBody. And you got 400!"); ResponseDTO response = ResponseDTO.builder() .data(list) .build(); return ResponseEntity.badRequest().body(response);..
2.2.3 REST APIREST는 Representational State Transfer의 약자로, 아키텍처 스타일을 의미한다.아키텍처 스타일: 반복되는 아키텍처 디자인.아키텍처 패턴: 반복되는 문제 상황 해결 도구와 차이가 있음.REST는 아키텍처 스타일은 6가지 제약조건으로 구성되며, 이를 따르는 API를 RESTful API라고 한다. REST 아키텍처 스타일의 6가지 제약조건:클라이언트-서버 (Client-Server)클라이언트와 서버의 역할을 분리하여 개발과 확장이 용이하도록 함. 클라이언트-서버 라는 것은 리소스를 관리하는 서버가 존재하고 다수의 클라이언트가 리소스를 소비하려고 네트워크를 통해 서버에 접근하는 구조이다.리소스란? REST API가 리턴할 수 있는 모든 것을 의미한다. 예를들..
1. 연봉과 과세표준의 차이연봉은 내가 1년 동안 회사에서 받은 돈 전체야.하지만 나라에서 세금을 매길 땐, **"모든 돈에 세금을 매기지 않고, 꼭 필요한 부분은 빼고 계산"**해2. 어떤 돈을 빼는 거야?세금을 계산하기 전에, 이런 돈들은 빼줘:일하는 데 필요한 비용예를 들어, 회사 다니느라 쓰는 교통비나 생활비 같은 걸 나라에서 미리 계산해서 빼줘. 이게 근로소득공제라는 거야.연봉 4,000만 원이면 약 1,470만 원을 뺀다고 생각하면 돼.사람마다 기본으로 빼주는 돈본인, 가족이 있으면 기본공제라는 이름으로 빼줘.예를 들어, 내가 결혼해서 배우자나 자녀가 있으면 150만 원씩 더 빼주는 거야. 근로소득공제는 내가 신고해야하는거야? 아니면 자동으로 공제하는거야? 근로소득공제는 내가 따로 신고하지 않..
학습내용 • 레이어드 아키텍처 패턴 • REST 아키텍처 스타일 • 스프링 어노테이션 • JPA와 스프링 Data JPA 실습내용 • Model/Entity와 DTO 클래스 • Controller, Service, Persistence 클래스 • 테스팅용 REST API 레이어드 아키텍처 패턴은 스프링 프로젝트 내부에서 어떻게 코드를 적절히 분리하고 관리할 것이냐에 대한 것이다. 레이어드 아키텍처 패턴이 프로젝트 내부에서 어떻게 코드를 관리할 것인가에 대한 내용이라면, REST 아키텍처 스타일은 클라이언트(브라우저)가 우리 서비스를 이용하려면 어떤 형식으로 요청을 보내고 응답을 받는지에 대한 것이다. 클라이언트는 몇 개의 정해진 메서드로 우리 서비스를 이용할 예정이다. 이렇게 REST 아키텍처 스타일을 ..
2.1.7 빌드 자동화 툴 : Gradle과 라이브러리Gradle은 빌드 자동화 툴이다. 빌드 자동화 툴을 이용하면 컴파일, 라이브러리 다운로드, 패키징, 테스팅 등을 자동화 할 수 있다. 빌드 자동화 툴이 없으면 라이브러리 사용을 위해 라이브러리 사이트에서 jar 파일을 다운로드 받아야한다. 1. pluginsgradle 공식 웹사이트에 따르면 gradle 자체는 많은 기능을 제공하지 않는다. 대신 플러그인을 통해 gradle을 확장해서 사용할 수 있다. 대표적인 예가 java이다. 자바를 컴파일 하려면 gardle java 플러그인이 필요하다. 이때, id 'java'는 자바이고 이는 빌드를 위해 자바 플러그인을 사용하는 것을 명시한다. org.springframework.boot나 io.spri..
1. 문제-- 정확한 값을 조회할 때SELECT * FROM TABLE WHERE ID = 'asdf';-- 모든 값을 조회할 때SELECT * FROM TABLE WHERE ID LIKE '%';ID 값을 조건으로 데이터를 조회하는 SQL 쿼리가 있다. 이 두 쿼리를 상황에 따라 다르게 사용해야 한다. 하지만 쿼리문 자체를 동적으로 수정하기 어렵기 때문에, ID 조건의 앞부분은 고정하고 뒤에서 사용하는 값을 프론트엔드에서 분기문으로 처리하여 쿼리에 삽입하는 작업이 있었다. if( 조건1 ) { var condition = "= asdf";} else { var condition = "LIKE '%'";}프론트엔드에서 ID 값을 동적으로 "= asdf" 또는 "LIKE '%'"로 설정하면, 동일한 쿼리..