개발/국비교육

(국비교육) 68 - 몽고디비

개발하는 인사담당자 2023. 9. 7. 14:55

■ 몽고DB

 

NoSQL 비관계형 데이터베이스

여러개의 저장 방식을 가지고 있다.

 

※ 참고

JPA : mybatis 역할 스스로 함

자바와 db 사이의 인터페이스 역할

 

* 요청사항

- package msi 가 무엇인지 : 마이크로소프트 인스톨러 내장돼 있다.

- vCPU 가 무엇인

 

https://www.scylladb.com/glossary/nosql-design-principles/ 

 

NoSQL Design Principles

Learn the definition of NoSQL design principles and get answers to FAQs regarding: What are NoSQL base design principles vs ACID, how do you design NoSQL schema & more.

www.scylladb.com

https://www.mongodb.com/try/download/community

 

나의 컴퓨터 자원 소모하지 않고 사용할 수 있는 원격 DB 가 생성된다. 

 

 

아래는 몽고디비 접속하는 경로이다. 

 

https://dev-cini.tistory.com/14

 

[MongoDB] 무료 몽고디비(MongoDB) Atlas

MongoDB Atlas 란? MongoDB Atlas는 MongoDB를 설계한 사람들이 만든 모든 것을 관리하는 클라우드 데이터베이스 AWS, Azure, GCP를 통해 배포에 관한 모든 것을 통합 관리해줌 -위키백과- - MongoDB를 설치하면

dev-cini.tistory.com

 

https://www.mongodb.com/cloud/atlas

 

MongoDB Atlas Database | Multi-Cloud Database Service

The multi-cloud database service at the heart of our developer data platform that accelerates and simplifies how you build with data. Try MongoDB Atlas today!

www.mongodb.com

 

 

구성은 다음과 같다. 

 

 

데이터 베이스 생성해준다.

 

 

insert document 클릭

 

 

json 형태이다.

 

 

다음과 같이 test 데이터 넣어준다.

 

 

새로운 프로젝트 생성

 

 

* 요청사항

- spring.thymeleaf.cache=false 무엇인지

- yml 이 무엇인지

 

 

컬렉션 = table

 

 

몽고디비 repository 랑 연결해주기

int 보다 큰 것을 쓰기 위해 long 쓴다. 

 

 

바꿔준다.

 

 

맵으로 변경해준다.

 

 

다음과 같이 데이터 출력이 가능하다. 

 

 

 

우리는 다음을 사용하고 있다.

 

 

보드 엔티티도 만들어준다.

 

 

보드 컨트롤러 생성해주기

 

 

서비스 생성

 

 

onsubmit : submit 버튼 눌렀을 때 동작하라는 뜻이다.  

 

 

?i : 소문자로 바꾼다.

. 뒤에 오는게 jpg gif png 인지 물어보는 것

 

bytes 로 읽어서 바이트 배열화 시킨다.

 

 @PostMapping("/write")
	   public String write(@RequestParam("img") MultipartFile img, HttpServletRequest request) throws IOException {
	      // System.out.println(board);
	      //System.out.println(img.getSize());
	      //System.out.println(img.getOriginalFilename());
	      //System.out.println(Arrays.toString(img2Byte));
	      Board board = new Board();
	      board.setTitle(request.getParameter("title"));
	      board.setContent(request.getParameter("content"));
	      board.setName("홍길동");
	      board.setDate(LocalDateTime.now());
	      if(img.getSize() > 0) {
	         String fileName = img.getOriginalFilename();
	         //String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
	         //System.out.println("확장자" + extension);
	         //String regExp = "/([^\\s]+(?=\\.(jpg|gif|png))\\.\\2)/";
	         //boolean b = Pattern.matches("([^\\s]+(\\.(?i)(jpg|gif|png))?)", fileName);
	         //System.out.println(b);
	         
	         if(Pattern.matches("([^\\s]+(\\.(?i)(jpg|gif|png))?)", fileName)) {            
	            byte[] img2Byte = Base64.encodeBase64(img.getBytes());
	            board.setImg("data:image/png;base64," + new String(img2Byte));         
	         }
	      }
	      boardService.save(board);
	      return "redirect:/board";
	   }

 

 

서비스 만들어준다.

몽고디비와 연결해서 repository 에 메소드 안넣어도 된다.

 

 

글쓰기 창에서 글 쓰고 write 누른다.

 

 

그러면 정상적으로 mongoDB 에 업로드 된 것을 볼 수 있다. 

 

 

optional<Board> 를 넣어주면 컨트롤러 정상 처리된다.

 

 

sort.order : 정렬

날짜 기준으로 정렬

 

 

10개 글 가져올 것이다.