MongoDB의 Spring Boot CRUD 응용 프로그램 사용 예
소개하다.
이 문서에서 Spring Boot을 사용하여MongoDB를 사용하여 간단한 CRUD REST 응용 프로그램 예시를 구축하는 방법을 보여 드리겠습니다.첫 번째 질문이 뭔지 알아요. 몬godb?
MongodB란?
MongoDB는 NosQL 문서 데이터베이스입니다.이 데이터베이스에서 레코드는 JSON 객체와 매우 유사한 동작의 문서입니다.그래서 주로 키 값이 맞습니다.
MongoDB를 데이터베이스로 사용하는 주요 이점은 다음과 같습니다.
선결 조건
이 예제 응용 프로그램을 만들려면 다음이 필요합니다.
Spring Boot CRUD 응용 프로그램
이 문서의 일부로 REST CRUD 응용 프로그램을 구축합니다.
여기에는 다음이 포함됩니다.
도서관
MongodB에서 Spring Boot CRUD를 사용하는 방법
이 프로그램을 만들기 위해서, 의존 관계를 처리하고 프로그램을 구축하려면gradle을 사용하십시오.Spring Boot 응용 프로그램에 다음 종속성을 추가합니다.
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
implementation 'org.springframework.boot:spring-boot-starter-web'
이 의존항이 생기면 몬godb 데이터베이스에 연결할 수 있습니다.그러나 우리는 여전히 데이터베이스가 있는 위치를 추가해야 한다.다음과 같이 application.properties
파일에 필요한 속성을 추가합니다.spring.data.mongodb.host = localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=library
포트27017
에 있는 호스트localhost에서 실행되는MongoDB 데이터베이스에 연결할 수 있습니다. 데이터베이스 모드는library입니다.정의 데이터 모델
도서관의 일부로서 우리는 책이 필요하다.그래서 우리의 주요 데이터 대상은 책이다.이 방면의 데이터 모델에는 책 제목, 저자, ISBN이 포함될 것이다.구체적으로 다음과 같다.
package com.betterjavacode.mongodbdemo.mongodbapp.models;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "books")
public class Book
{
@Id
private String id;
private String title;
private String author;
private String isbn;
public Book()
{
}
public Book(String title, String author, String isbn)
{
this.title = title;
this.author = author;
this.isbn = isbn;
}
public String getId ()
{
return id;
}
public void setId (String id)
{
this.id = id;
}
public String getTitle ()
{
return title;
}
public void setTitle (String title)
{
this.title = title;
}
public String getAuthor ()
{
return author;
}
public void setAuthor (String author)
{
this.author = author;
}
public String getIsbn ()
{
return isbn;
}
public void setIsbn (String isbn)
{
this.isbn = isbn;
}
}
우리가 사용한 것은 몬고 DB이기 때문에 @Document
주석이 장서를 덮어썼다.라이브러리 인터페이스 추가
도서 대상을 가져오거나 저장하거나 삭제할 수 있는 저장소 인터페이스가 필요합니다.
repositories
패키지에 BookRepository
인터페이스를 추가합니다.package com.betterjavacode.mongodbdemo.mongodbapp.repositories;
import com.betterjavacode.mongodbdemo.mongodbapp.models.Book;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
public interface BookRepository extends MongoRepository<Book, String>
{
List findByTitleContaining(String title);
List findByAuthor(String name);
}
이 저장소는 제목이나 저자의 이름에 따라 도서 목록을 얻을 수 있는 두 가지 방법이 있다.Spring REST API 컨트롤러 추가
이제 우리 프로그램이 REST CRUD가 되도록 REST 컨트롤러를 추가합니다.이 컨트롤러에는
POST
, PUT
, GET
및 DELETE
API가 포함됩니다.package com.betterjavacode.mongodbdemo.mongodbapp.controller;
import com.betterjavacode.mongodbdemo.mongodbapp.models.Book;
import com.betterjavacode.mongodbdemo.mongodbapp.repositories.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@CrossOrigin("http://localhost:8080")
@RestController
@RequestMapping("/v1/mongodbapp")
public class BookController
{
@Autowired
BookRepository bookRepository;
@GetMapping("/books")
public ResponseEntity<List> getAllBooks(@RequestParam(required = false) String bookTitle)
{
try
{
List listOfBooks = new ArrayList<>();
if(bookTitle == null || bookTitle.isEmpty())
{
bookRepository.findAll().forEach(listOfBooks::add);
}
else
{
bookRepository.findByTitleContaining(bookTitle).forEach(listOfBooks::add);
}
if(listOfBooks.isEmpty())
{
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<>(listOfBooks, HttpStatus.OK);
}
catch (Exception e)
{
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@GetMapping("/books/{id}")
public ResponseEntity getBookById(@PathVariable("id") String id)
{
try
{
Optional bookOptional = bookRepository.findById(id);
return new ResponseEntity<>(bookOptional.get(), HttpStatus.OK);
}
catch (Exception e)
{
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/books")
public ResponseEntity addABookToLibrary(@RequestBody Book book)
{
try
{
Book createdBook = bookRepository.save(new Book(book.getTitle(), book.getAuthor(),
book.getIsbn()));
return new ResponseEntity<>(createdBook, HttpStatus.CREATED);
}
catch (Exception e)
{
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PutMapping("/books/{id}")
public ResponseEntity updateABook(@PathVariable("id") String id, @RequestBody Book book)
{
Optional bookOptional = bookRepository.findById(id);
if(bookOptional.isPresent())
{
Book updatedBook = bookOptional.get();
updatedBook.setTitle(book.getTitle());
updatedBook.setAuthor(book.getAuthor());
updatedBook.setIsbn(book.getIsbn());
return new ResponseEntity<>(bookRepository.save(updatedBook), HttpStatus.OK);
}
else
{
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
@DeleteMapping("/books/{id}")
public ResponseEntity deleteABook(@PathVariable("id") String id)
{
try
{
bookRepository.deleteById(id);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
catch (Exception e)
{
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
BookController
는 REST 컨트롤러 클래스입니다.포함* @RestController – to mark this as a REST controller.
- @CrossOrigin – This annotation allows cross-origin resource sharing (CORS). This will add CORS access control headers in the REST response. These headers are necessary because it allows servers to specify not only who can access the resources, but how they can be accessed.
- We have added different methods – addABookToLibrary adds the book to database, getAllBooks retrieves the book from database.
완벽한 프레젠테이션
REST 디렉터, 라이브러리 메소드가 추가되었으며, 이 프로그램을 구축하고 실행할 것입니다.프레젠테이션의 일부로 POSTMAN을 사용하여 API에 액세스합니다.
명령줄이나 사용 중인 코드 편집기에서 프로그램을 만들 수 있습니다.나는 명령행을 더 좋아해서 프로그램을 구축했다.구축 후 프로그램을 다음과 같이 실행할 수 있습니다.
java -jar mongodbapp-0.0.1-SNAPSHOT.jar.
우리 우체부로 우리 도서관에 책을 더 보냅시다.위에서 보듯이, 우리는 데이터베이스에 추가된 책을 표시하는 데 응답하는 책을 추가했다.
다음 API는 데이터베이스에서 모든 책을 가져오는 GET API입니다.
라이브러리에서 삭제된 도서를 표시하려면 delete API를 사용합니다.
이 예시 프로그램의 코드는 mygithub repository에서 제공됩니다.
MongoDB 데이터베이스에서 이 데이터를 보려면 MongoDB compass 도구를 방문하고 도서관 데이터베이스에 있는 장서를 방문할 수 있습니다.
결론
본고에서 MongoDB 데이터베이스를 사용할 때 Spring Boot을 사용하여 REST API를 만드는 방법을 보여 드리겠습니다.우리가 사용하는 방법은 일반적인 SQL 데이터베이스를 사용할 때의 방법과 매우 비슷하다.NoSQL 데이터베이스를 사용할 때 변경 사항을 추가해야 합니다.만약 당신이 이 글이 유용하다고 생각하거나 문제가 있다면 내가 당신을 도울 수 있습니다. 당신은 나의 블로그here를 구독할 수 있습니다.
Reference
이 문제에 관하여(MongoDB의 Spring Boot CRUD 응용 프로그램 사용 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/betterjavacode/spring-boot-crud-application-example-with-mongodb-5dl1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)