SPRINGBOOT
-
[SPRINGBOOT] JPA AuditingSPRINGBOOT 2022. 4. 24. 22:49
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) 보통 엔티티에는 해당 데이터의 생성시간과 수정시간을 포함한다. 그렇기에 매번 DB에 삽입하기 전, 갱신하기 전에 날짜 데이터를 등록, 수정하는 코드가 반복된다. 이러한 문제를 해결하기 위해 JPA Auditing을 사용한다. 1. LocalDate java8부터는 LocalDate와 LocalDateTime이 나왔다. 그간 java의 Date의 문제점을 고친 타입이다. 하지만 데이터베이스에 제대로 매핑되지 않는 이슈가 존재했었다. 스프링부트 1.x 버전을 사용한다면 Hibernate 5.2.10버전 이상을 사용하도록 설정이 필요했다. 하지만 스프링부트 2.x버전을 사용하면 기본적으로 해당 버전을 사용 중이라 바로 적용이 가능하다. ① d..
-
[SPRINGBOOT] 기본 CRUD API 만들기②(수정, 조회)SPRINGBOOT 2022. 4. 24. 22:01
참조 : 스프링부트와 AWS오 혼자 구현하는 웹 서비스(이동욱 저 ) 1. api만들기(수정) ① 수정 기능을 위한 Dto를 먼저 생성한다. package com.study.crystal.test.web.dto; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @Getter @NoArgsConstructor public class PostsUpdateRequestDto { private String title; private String content; @Builder public PostsUpdateRequestDto(String title, String content){ this.title = title; th..
-
[SPRINGBOOT] 기본 CRUD API 만들기①(등록)SPRINGBOOT 2022. 4. 17. 16:26
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) API를 만들기 위해서는 총 3개의 클래스가 필요하다. - Request 데이터를 받은 DTO - API 요청을 받을 Controller - 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 여기서 Service는 비지니스 로직을 처리하는 것이 아니라 트랜잭션, 도메인 간 순서 보장의 역할을 한다. 비지니스를 처리하는 곳은 바로 Domain이다. - Web Layer 컨트롤러(@Controller)와 JSP 등의 뷰 템플릿 영역 필터(@Filter) , 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역 - Service Layer @Service에 사용되는 서비스 영역 C..
-
[SPRINGBOOT] JPA 기본 기능과 설정SPRINGBOOT 2022. 4. 7. 21:05
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) 웹 개발 내에서 데이터베이스를 다루는 일은 필수적이다. 하지만 객체지향 프로그래밍을 추구하는 업계 내에서 개발 시간보다는 SQL에 더 시간을 쏟는 아이러니가 발생한다. 객체 모델링이 아닌 테이블 모델링에 더 집중되고, 객체를 단순하게 테이블 구조에 맞춰서 전달하기만 하는 개발이 더 많이 이루어지고 있는 것이다. 이러한 문제를 해결하기 위해 JPA라는 JAVA 표준 ORM(Object Relational Mapping)기술이 나오게 된 것이다. 1. JPA 관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이다. 객체지향 프로그래밍은 기능과 속성을 한 곳에서 관리하는 기술이다. 이 두 개념은 애초에 다른 사상에서 출발하였고..
-
[SPRINGBOOT] 롬복SPRINGBOOT 2022. 4. 5. 22:10
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) 1. 롬복 소개 및 설치 자바를 개발할 때 자주 사용하는 Getter, Setter, 기본생성자, toString 등을 어노테이션으로 자동 생성해준다. build.gradle에 코드를 추가하여 롬복을 설치할 수 있다. gradle 7 버전을 사용하고 있기 때문에 인터넷을 참조하였다. (dependencies안에 추가한다.) implementation('org.projectlombok:lombok') testImplementation('org.projectlombok:lombok') annotationProcessor('org.projectlombok:lombok') testAnnotationProcessor('org.projectlomb..
-
[SPRINGBOOT]테스트코드 작성SPRINGBOOT 2022. 4. 4. 02:02
참조 : 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) CH2. 스프링 부트에서 테스트 코드를 작성하자 1. 테스트 코드 소개 * TDD Test Driven Development의 약자로 테스트 주도 개발이라고 한다. 작은 단위의 테스트 테이스를 작성하고 이를 통과하는 토드를 추가하는 단계를 반복하여 구현한다. - 항상 실패하는 테스트를 먼저 작성 - 테스트가 성공하는 프로덕션 코드를 작성 - 테스트가 통과하면 프로덕션 코드를 리팩토링 * 단위 테스트 : 기능단위의 테스트 코드를 작성하는 것 테스트 코드를 작성하는 이유 - 단위 테스트는 개발단계 초기에 문제를 발견하게 해준다. - 단위 테스트는 개발자가 나중에 코드를 리팩토링 하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하..
-
[SPRINGBOOT] IntelliJ 활용한 개발환경 구성SPRINGBOOT 2022. 4. 3. 21:19
참조 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저) CH1. 인텔리제이로 스프링 부트 시작하기 1. 인텔리제이 소개 개발 도구에는 이클립스, VS Code등 여러가지가 존재한다. 나 역시도 C 언어 공부 당시에는 VS Code, 자바와 스프링 공부에는 이클립스를 활용하였다. 인텔리제이는 스프링 부트 개발에 좀 더 친숙한 개발 도구로 최근 많은 기업이 도입하는 추세이다. * 인텔리제이의 장점 - 추천기능 - 다양한 리팩토링과 디버깅 기능 - 이클립스 깃에 비해 높은 자유도 - 프로젝트를 시작할 때 인덱싱을 하여 파일을 비릇한 자원들에 대한 빠른 검색 속도 2. 인텔리제이에서 프로젝트 생성하기 인텔리제이는 워크스페이스의 개념이 없고 Project와 Module의 개념이 있어서 모든 프로젝트..