일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Spring Boot
- 클린코드
- H2 설치
- 코드업
- Vue.js
- Git
- 오블완
- 객사오
- Python
- 알고리즘
- mariadb
- Spring
- MySQL
- 기초100제
- spring security
- Codeup
- Postman
- 티스토리챌린지
- springboot
- 스프링
- 롬복
- go
- Gradle
- java
- 파이썬
- thymeleaf
- JPA
- 클린 코드
- golang
- GitHub
- Today
- Total
nyximos.log
Spring Boot + MySQL + JPA + Thymeleaf 로 CRUD 구현하기 00 - 개발 환경 구성, 서버 개발 과정 본문
Spring Boot + MySQL + JPA + Thymeleaf 로 CRUD 구현하기 00 - 개발 환경 구성, 서버 개발 과정
nyximos 2022. 7. 14. 10:40Spring Boot + Gradle + MySQL + JPA + Thymeleaf 환경에서 간단한 CRUD 예제를 만들어보자
백엔드 로직을 쉽게 이해하고자 디자인은 최소한으로 하여 작업할 예정이다.
프로젝트 생성에 앞서 프로젝트 개발환경 소개
IntelliJ IDEA
Java 11 (Java 8)
Spring Boot
Gradle
JPA
Thymeleaf
Postman
Spring Boot
- Spring 프레임워크의 서브 프로젝트
- 스프링 프레임워크를 쉽게 사용할 수 있도록 도와주는 도구
- Spring 처럼 많은 설정이 필요하지 않다. Spring boot 가 알아서 해준다.
장점
- 라이브러리 의존성 간단히 관리 (Maven, Gradle)
- Spring Boot가 라이브러리 인지해서 실행에 필요한 환경을 자동으로 설정
- 라이브러리 버전 자동 관리
- 테스트 환경
- Tomcat 서버 내장 → main() 메소드 실행시 서버 구동
- 운영 서버 배포시 프로젝트가 없어도 독립적으로 실행 가능한 JAR 파일로 패키징 가능
Gradle
- Groovy 기반의 빌드 도구
- Ant와 Maven의 단점을 보완
- Java 문법과 유사하다.
- Gradle 설치 없이도 Gradle Wrapper를 이용하여 빌드를 지원한다.
- build.gradle : 빌드 구성 스크립트 → 의존성, 플러그인 설정 등 빌드에 대한 모든 기능을 정의한다.
- task : 작업의 최소 단위
- compile : 프로젝트 컴파일 과정에서 필요한 라이브러리
- runtime : 프로젝트 실행 과정에서 필요한 라이브러리. ( compile 구성의 라이브러리 포함)
- testCompile : 프로젝트의 테스트 컴파일 과정에서 필요한 라이브러리. (컴파일된 클래스들과 compile 구성의 라이브러리 포함)
- testRuntime : 프로젝트의 테스트 실행 과정에서 필요한 라이브러리. (compile, runtime, testCompile 구성의 라이브러리 포함)
JPA
- Java Persistent API
- Hibernate를 비롯한 모든 ORM 프레임워크의 표준
- Java 언어를 통해 데이터베이서와 같은 영속 계층을 처리하고자 하는 스펙
ORM
- Object Relational Mapping
- 객체지향 패러다임을 관계형 패러다임으로 매핑해주는 개념 (클래스를 테이블로)
JPA에 대해 더 알고싶다면 아래 링크로 🛸
https://nyximos.tistory.com/68
Thymeleaf
- View Template Engine
- JSP처럼 서버에서 결과를 만들어서 브라우저로 전송한다.
- JSP와 유사하게 ${ }을 별도의 처리 없이 이용할 수 있다.
- Model에 담긴 객체를 화면에서 JS로 처리하기 편리하다.
- 연산이나 포맷과 간련된 기능을 추가적인 개발 없이 지원한다.
- 개발 도구를 이용할 때 .html 파일로 생성하는데 문제가 없고 별도의 확장자를 이용하지 않는다.
IntelliJ IDEA 설치
해당 프로젝트에서는 IntelliJ IDEA를 사용하지만 이클립스와 STS 설치, 환경설정 후 진행해도 무관하다.
학생인 경우 졸업 전까지 유료인 Ultimate 버전을 무료로 사용 가능하니 구글에 인텔리제이 학생 인증이라고 검색해서 라이센스 발급 후 사용하세용
Java 11 설치
MySQL 설치
설치 시 비밀번호를 잘 기억하도록 하자.
https://www.mysql.com/downloads/
MariaDB를 설치해도 무관하다.
https://mariadb.org/download/?t=mariadb&p=mariadb&r=10.10.0
Postman 설치
postman은 API 개발을 쉽게 도와주는 테스트 도구이다.
요청을 날리면 응답을 보여준다.
설치후 로그인 해놓자.
https://www.postman.com/downloads/
서버 개발 과정
환경 구성을 했으니 이제 개발 과정을 알아보자.
서버 개발 과정은 DTO/VO, Controller, Service, DAO, SQL 를 각각 구현하는 과정이다.
구현 순서는 개발자가 임의로 변경할 수 있으며
개발하려는 서버 프로그램의 목적, 개발 언어, 규모 등의 이유로 통합하거나 세분화 할 수 있다.
DTO/VO 구현
데이터 교환을 위해 사용할 객체를 만드는 과정
Controller 구현
사용자의 요청에 적절한 서비스를 호출하여 그 결과를 사용자에게 반환하는 코드를 구현
Service 구현
사용자의 요청에 응답하기 위한 비즈니스 로직을 구현
DAO 구현
데이터 베이스에 접근하고, SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현
SQL 구현
데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL문을 생성
SQL문은 소스 코드 내에 직접 입력, 또는 별도의 XML 파일로 관리한다.
이제 스프링 부트의 기본 구조를 알아보자.
1. 클라이언트가 Controller에게 요청(request)을 DTO 형식으로 보낸다.
2. Controller는 해당 request에 맞는 Service를 호출하면서 DTO를 보낸다.
3. Service에서 핵심 비즈니스 로직을 구현한다.
DTO와 Entity 변환도 Service에서 처리한다.
Repository에 데이터를 요청한다.
4. Repository는 Database에 직접 접근하여 Domain(Entity) 객체를 저장하고 관리한다.
5. Repository에서 가져온 데이터를 Service에 반환한다.
6. Service의 수행 결과를 Controller에 반환한다.
응답(response)할 때 함께 보낼 데이터가 있다면 DTO로 변환하여 반환한다.
7. Controller의 수행 결과를 클라이언트에게 반환한다.
Controller
클라이언트의 요청을 처리한다.
Service의 비즈니스 로직을 호출한다.
Service에서 반환받은 값을 클라이언트에게 응답해준다.
Service
핵심 비즈니스 로직 구현
Controller에서 받아온 DTO를 가공하여 Repository로 보내거나,
Repository에서 받아온 데이터를 가공하여 DTO에 담아 컨트롤러로 반환한다.
Repository
데이터베이스에 접근하기 때문에 DAO(Data Access Obect)영역라고도 불린다.
도메인 객체를 DB에 저장하고 관리
Spring Data Jpa에서 제공하는 인터페이스
스프링 내부에서 자동으로 객체를 생성하고 실행
(기존 Hibernate는 모든 코드를 직접 구현하고 트랜잭션 처리를 했지만, Spring Data JPA는 자동으로 생성되는 코드를 이용하므로 단순 CRUD나 페이지 처리 등의 개발에 코드를 개발할 필요 🙅♀️)
Domain(Entity)
비즈니스 도메인 객체, 주로 데이터베이스에 저장하고 관리됨
DB와 가장 가까운 클래스
테이블과 1:1 매핑클래스의 필드는 테이블의 컬럼을 의미한다.
비즈니스 로직을 처리한다.
DTO Data Transfer Object
데이터를 교환할 때 사용하는 객체
엔티티에 직접 접근하지 않는다.
화면마다 DTO를 가진다.
'Programming > Spring Boot' 카테고리의 다른 글
Spring Boot + MySQL + JPA + Thymeleaf 로 CRUD 구현하기 04 타임리프 레이아웃, 회원가입 구현 (5) | 2022.08.12 |
---|---|
Spring Boot + MySQL + JPA + Thymeleaf 로 CRUD 구현하기 03 데이터베이스 설계, 테이블 생성 (5) | 2022.08.03 |
Spring Boot + MySQL + JPA + Thymeleaf 로 CRUD 구현하기 02 Controller에서 데이터 반환 (0) | 2022.08.01 |
Spring Boot + MySQL + JPA + Thymeleaf 로 CRUD 구현하기 01 - 데이터베이스 환경설정, 프로젝트 생성 (0) | 2022.07.25 |
Spring Boot 시작하기 (0) | 2022.07.11 |