Back-End/스프링부트와 AWS로 구현하는 웹서비스 7

[스프링][Spring] - 7. 서버 템플릿 엔진과 기본 화면 구현

📖본 포스팅은 '스프링부트와 aws로 혼자 구현하는 웹서비스 - 이동욱 저자'를 보고 포스팅 되었습니다. 1. 서버 템플릿 엔진과 머스테치 소개 템플릿 엔진이란? 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 이야기합니다. 2. 서버 템플릿 엔진과 클라이언트 템플릿 엔진 https://imgzon.tistory.com/97 10. 서버/클라이언트 템플릿 엔진의 차이, 머스테치 해당 게시물들은 이동욱 저자님의 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 공부하며 기록한 것입니다. 이번 게시물에서는 템플릿 엔진의 종류 및 서버 템플릿 엔진과 클라이언트 템 imgzon.tistory.com 자바로 쓸 수 있는 템플릿 엔진 중에 머스테치가 있고 이는 간단하게 웹 화면을 구현..

[스프링][Spring] - 6. JPA Auditing으로 생성시간/수정시간 자동화하기

📖본 포스팅은 '스프링부트와 aws로 혼자 구현하는 웹서비스 - 이동욱 저자'를 보고 포스팅 되었습니다. 1. JPA Auditing 보통 엔티티(Entity)에는 데이터의 생성시간, 수정시간이 포함된다. 보통 언제 만들어졌는지 언제 수정되었는지 등은 차후 유지보수에 매우 중요한 정보이기 때문입니다. 이를 매번 DB에 삽입하기 전, 갱신하기 전에 날짜 데이터를 등록하고 수정하는 코드를 여기 저기 넣는 일은 매우 귀찮고 코드가 지저분해지게 됩니다. 그래서 이를 해결하고자 JPA Auditing이 나오게 되었고 우리는 JPA Auditing을 사용해 이를 해결해보도록 하겠습니다. 2. LocalDate 사용 LocalDate / LocalDateTime 날짜 타입을 사용해서 진행하도록 하겠습니다. Java ..

[스프링][Spring] - 5. JPA와 등록, 수정, 조회 API 만들기

📖본 포스팅은 '스프링부트와 aws로 혼자 구현하는 웹서비스 - 이동욱 저자'를 보고 포스팅 되었습니다. 1. 등록, 수정, 조회 API 만들기 API를 만들기 위해서 총 3개의 클래스가 필요합니다. Request 데이터를 받은 Dto API 요청을 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service [Service에서는 비지니스 로직을 처리하지 않는다.] 이때 서비스에서 비지니스 로직을 처리해야 한다고 생각하지만, Service는 트랜잭션, 도메인 간 순서 보장의 역할만 한다. 그렇다면 비지니스 로직은 누가 처리할까??? 아래를 통해서 이를 알아보도록 하자 2. 스프링 웹 계층에 대해서 [비지니스 로직은 누가 처리할까?] web Layer 흔히 사용하는 컨트롤러 등의 뷰..

[스프링][Spring] - 4. 스프링부트와 JPA

1. 프로젝트에 spring Data JPA 적용하기 package com.yeomyaloo.book.springboot.domain.posts; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.*; //클래스 내의 모든 필드의 Getter 메소드를 자동 생성 @Getter //public Posts()와 같은 효과 @NoArgsConstructor //테이블과 링크될 클래스임을 나타낸다. @Entity public class Posts { //해당 테이블의 PK 필드를 나타낸다. Primary key @Id //PK 생성규칙을 나타낸다. @GeneratedValue(s..

[스프링][Spring] 3. 스프링 부트에서 JPA로 데이터베이스 다루기

1 스프링 부트에서 JPA로 데이터베이스를 다뤄보자 웹 서비스 운영에 피할 수 없는 문제 = 데이터베이스를 다루는 일 실제 개발 시간보다 SQL 다루는 시간이 더 많은 현실에 JPA를 사용해서 이와 같은 문제를 해결해보자 1.1 JPA란? 객체를 관계형 데이터베이스에서 관리하는 것은 매우 중요하다. 관계형 데이터베이스가 계속해서 웹 서비스 중심이 되면서 모든 코드는 SQL의 중심이 되어간다. 이는 관계형 데이터베이스가 SQL만 이해하기 때문인데 계속해서 CURD SQL을 매번 생성하는 일을 피하기 위해서 JPA를 사용한다. 패러다임의 불일치 - 객체지향 프로그래밍 언어인 자바를 예로 기능과 속성을 한 곳에서 관리하는 것이 객체지향 프로그래밍의 핵심 기술인데 관계형 데이터베이스는 이와 다르게 어떻게 데이터..

[스프링][Spring] 2. 테스트 코드 작성하기

👽본격적으로 챕터에 들어가기 앞서서 앞의 문제를 해결했다 그래서 스프링부트 연결까지 성공했다. 참고로 이 책은 JUnit4를 쓴다. 현재 JUnit을 많이 사용해서 문법이 달라지는 부분이 많아서https://jojoldu.tistory.com/539?category=717427 에 방문하여 확인해주시길 바란다. 책으로 공부하게 되면 이런 문제가 생긴다. 버전이 서로 호환이 안 된다거나 그런 문제 ㅋ... 그래서 이번엔 책의 저자 티스토리에 가서 가장 최근에 bulid.gradle 수정한 부분을 찾아서 적용해주니 아주 잘 돌아갔다. plugins { // (1) id 'org.springframework.boot' version '2.4.1' // RELEASE 삭제 id 'io.spring.depende..

[스프링][Spring] 1. 인텔리제이로 스프링 부트 시작하기(부제: 기본 셋팅 작업을 하자)

개발에 들어가기 앞서서 웹 서비스를 구축하려면 크게 두 가지 지식이 필요하다. 서비스의 기능을 담당할 애플리케이션 개발 지식 개발한 애플리케이션이 구동될 서버 인프라 지식 1. 개발도구 설치 - 인텔리제이 설치 1-1. 젯브레인의 제품 전체를 관리해주는 데스크톱 앱을 먼저 다운 받는다. https://www.jetbrains.com/toolbox-app/ 👉 페이지에 들어가서 exe. 파일을 받아 설치한다. 1-2. 젯브레인의 설치가 되면 IntelliJ IDEA Community 를 다운 받아 준다. 1.3 new project를 누르고 그레이들을 선택한 뒤 프로젝트를 생성한다. 이때 여기서 원하시는 이름과 파일 위치를 설정해서 맞춰주면 됩니다. 또한 Name과 artifactid는 동일하게 맞춰주어야..