Ubuntu 18.04에서 MySQL 컨테이너로 CRUD Spring Boot JPA를 구축하는 방법
안내
이 문서에서는 docker compose 파일을 작성하여 MySQL 데이터베이스 컨테이너와 연결하여 간단한 백엔드 응용 프로그램을 구축할 수 있는 Spring Boot JPA를 이해할 수 있습니다.Spring Data JPA는 개발 속도를 높이고 비즈니스 논리에 집중할 수 있는 좋은 선택입니다.
이 강좌에서 학습할 수 있는 기술:
구현 도구 지원:
비디오 인코딩 참조
둘구현
1단계: 초기 프로젝트 Spring Boot Maven
Option you can create project on website at here, click download and extract import project by Intellij.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependency>
의존 관계의 경우 XML 형식을 볼 수 있습니다.명명 규칙은 다음과 같습니다.groupId: 프로젝트 또는 조직의 고유한 식별 이름입니다.
artifactId: 항목의 고유한 이름입니다.그것은 소포에 관한 것이다.
버전: 프로젝트의 버전입니다.
범위: 독립된 특정 범위.사용 가능한 범위는 다음과 같습니다.
컴파일: 특정한 역할 영역을 제공하지 않았을 때 기본값입니다.
제공: 의존 항목은 실행할 때 JDK나 용기에서 제공해야 합니다.
실행할 때: 실행할 때 이 범위의 의존항이 필요합니다.
테스트: 테스트는 전달할 수 없고 테스트와 실행 클래스 경로에만 존재합니다.
시스템: 범위는 제공된 범위와 유사합니다.다른 점은 시스템이 우리에게 시스템에 있는 특정한jar를 직접 가리키도록 요구하는 데 있다.
2단계: docker compose 구현.파일을 사용하여 MySQL 시작
MySQL 컨테이너를 실행하기 위해 루트 프로젝트에 파일
docker-compose.file
을 생성합니다.Docker Compose는 다중 컨테이너를 정의하고 실행하는 도구입니다.이것은 응용 프로그램 서비스를 구성하는 일반적인 YML 파일입니다.Compose a를 사용하려면 기본적으로 다음 세 단계가 포함됩니다.
docker-comse.yml
에 정의됩니다.그것들은 고립된 환경에서 함께 운행할 수 있다.docker-compose up
을 통해 프로그램을 시작합니다.Note: For now I skip Dockerfile. I will create Dockerfile in session later.
version: '3'
services:
mysql:
image: mysql:8.0
container_name: blog_mysql
volumes:
- db_mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: blogger
MYSQL_PASSWORD: blogger
MYSQL_DATABASE: blog
ports:
- 3306:3306
volumes:
db_mysql:
버전: 작성된 버전입니다.이것은 디지털 용수철 형식이다.
서비스: 서비스는 응용 프로그램의 서비스를 구성한다.
mysql: 유일하게 이름에 맞는 서비스입니다.
그림: 콜론 앞에는 사용할 이름 서비스, 콜론 뒤에는 버전 서비스.이미지가 나중에 변경될 경우 특정 버전을 사용하는 것이 좋습니다.
컨테이너 이름: 컨테이너의 고유한 이름입니다.제공되지 않으면 무작위로 생성됩니다.
볼륨: 영구적인 데이터입니다.이전의 실행에서 용기를 찾으면, 오래된 용기에서 새 용기로 볼륨을 복사합니다.이 절차는 볼륨에 생성된 데이터가 손실되지 않도록 합니다.콜론 이름
db_mysql
이전에는 소스 폴더 컨테이너 스크립트였고 콜론 이름 이후에는 대상/var/lib/mysql
입니다.환경: 컨테이너 MySQL에 액세스하여 데이터를 조작할 수 있습니다.
포트: 용기에 접근하는 포트입니다.콜론은 이전에 호스트 연결 포트
3306
였고, 콜론 다음에는 MySQL 컨테이너였다.3단계: 3306 연결 MySQL 구성
MySQL 컨테이너를 연결하기 위해 리소스 폴더의 Spring Boot 응용 프로그램
application.properties
에서 구성spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/blog
spring.datasource.username=blogger
spring.datasource.password=blogger
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
봄.jpa.겨울잠.ddl 자동: 없음, 업데이트, 창설, 창설, 삭제, 더 자세한 정보 보기 Hibernate Document
없음: 데이터베이스 구조를 변경하지 않고 기본 MySQL입니다.이것은 생산 상태에 매우 좋은 안전 보장이다.
업데이트: 엔티티가 구조에 지정된 경우 데이터베이스는 Hibernate에서 변경됩니다.
창설: 데이터베이스를 만들 때마다 닫을 때 삭제하지 마십시오.
창설 삭제: 데이터베이스를 창설하고
application.properties
닫을 때 삭제합니다.4단계: SessionFactory, 라이브러리, @Entity 만들기
블로그 클래스의 실체를 정의합니다.Hibernate는 자동으로 솔리드 Blog를 데이터베이스의 테이블 Blog로 변환합니다.
package com.khanhnhb.blog.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Blog {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer id;
public String title;
public String content;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
@Controller
주석은 Hibernate가 이 클래스로 표를 생성하는 것을 알려줍니다.package com.khanhnhb.blog.repository;
import com.khanhnhb.blog.model.Blog;
import org.springframework.data.repository.CrudRepository;
public interface BlogRepository extends CrudRepository<Blog, Integer> {
}
package com.khanhnhb.blog.controller;
import com.khanhnhb.blog.model.Blog;
import com.khanhnhb.blog.repository.BlogRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping(path = "/blogs")
public class BlogController {
@Autowired
private BlogRepository blogRepository;
@PostMapping()
public @ResponseBody Blog createBlog(@RequestBody Blog newBlog) {
return blogRepository.save(newBlog);
}
@GetMapping()
public @ResponseBody Iterable<Blog> getAll() {
return blogRepository.findAll();
}
@GetMapping(path = "{id}")
public @ResponseBody Blog getOne(@PathVariable Integer id) {
return blogRepository.findById(id).get();
}
@PutMapping(path = "{id}")
public @ResponseBody Blog updateBlog(@PathVariable Integer id, @RequestBody Blog updateBlog) {
Blog blog = blogRepository.findById(id).get();
blog.setTitle(updateBlog.getTitle());
blog.setContent(updateBlog.getContent());
return blogRepository.save(blog);
}
@DeleteMapping(path = "{id}")
public @ResponseBody Integer deleteBlog(@PathVariable Integer id) {
Blog blog = blogRepository.findById(id).get();
blogRepository.delete(blog);
return blog.getId();
}
}
@Entity
이것은 이 종류가 컨트롤러라는 것을 의미한다.@Controller
메모는 URL이/blog으로 시작됨을 나타냅니다@RequestMapping
주석은 블로그 리포지토리라는 이름을 얻은 bean의 방법이다.이것은 Spring이 프로그램을 시작할 때 자동으로 생성된 것으로 데이터를 처리하기 위해 사용할 것입니다.@Autowire
평균 맵은 POST 요청에만 사용됩니다.@PostMapping
본문 요청에서 평균 통과치를 주석합니다.@RequestBody
평균 반환 개체 데이터 유형(Blog, Integer 등)을 설명합니다.@ResponseBody
평균 맵은 요청만 받을 수 있음을 설명합니다.@GetMapping
설명은 요청 URL에 핸들 템플릿 변수를 사용한다는 의미입니다.@PathVariable
평균 맵은 요청만 배치한다는 것을 설명합니다.@PutMapping
평균 매핑은 요청을 삭제하는 데만 사용됩니다.5단계: 집배원에게 HTTP 요청
블로그 만들기
@DeleteMapping
body:
{
"title": "Exploring Spring Data JPA",
"content: "Create first blog"
}
모든 블로그 읽기
POST: localhost:8080/blogs
id를 통해 블로그 읽기
GET: localhost:8080/blogs
블로그 업데이트
GET: localhost:8080/blogs/1
body:
{
"title": "Exploring Spring Data JPA and MySQL",
"content: "Modify first blog"
}
블로그 삭제
PUT: localhost:8080/blogs/1
결론
이 문서에서는 docker compose 파일을 작성하여 MySQL 데이터베이스 컨테이너와 연결하여 간단한 백엔드 응용 프로그램을 구축할 수 있는 Spring Boot JPA를 이해할 수 있습니다.
📚 추천 도서
클렌징 코드: Book
HTTP:The Definitive Guide
청결 건축: Book
📱 소셜 미디어
블로그: KhanhNHB Tech
트위터:
Youtube:
GitHub:KhanhNHB
Youtube:Khanhb Tech
GitHub:Khanhb
Reference
이 문제에 관하여(Ubuntu 18.04에서 MySQL 컨테이너로 CRUD Spring Boot JPA를 구축하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/khanhnhb/how-to-build-crud-spring-boot-jpa-with-mysql-container-on-ubuntu-18-04-47d3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)