-
(국비교육) 68 - 몽고디비개발/국비교육 2023. 9. 7. 14:55
■ 몽고DB
NoSQL 비관계형 데이터베이스
여러개의 저장 방식을 가지고 있다.
※ 참고
JPA : mybatis 역할 스스로 함
자바와 db 사이의 인터페이스 역할
* 요청사항
- package msi 가 무엇인지 : 마이크로소프트 인스톨러 내장돼 있다.
- vCPU 가 무엇인
https://www.scylladb.com/glossary/nosql-design-principles/
https://www.mongodb.com/try/download/community
나의 컴퓨터 자원 소모하지 않고 사용할 수 있는 원격 DB 가 생성된다.
아래는 몽고디비 접속하는 경로이다.
https://dev-cini.tistory.com/14
https://www.mongodb.com/cloud/atlas
구성은 다음과 같다.
데이터 베이스 생성해준다.
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개 글 가져올 것이다.
'개발 > 국비교육' 카테고리의 다른 글
(국비교육) 70 - 자바 버전 에러 (0) 2023.09.11 (국비교육) 69 - Docker + 리눅스 계보 + os계보 (0) 2023.09.08 (국비교육) 67 - 파이썬 문제 (0) 2023.09.05 (국비교육) 66 - 파이썬 + (0) 2023.09.04 (국비교육) 65 - 프로젝트 참고 사이트 + 오류 페이지 (0) 2023.09.01