MongoDB NoSQL Booster 다운로드, 설정 / SpringBoot 연결

Glen(OH TaekJoo)·2023년 11월 17일
1
post-thumbnail

관련포스팅 ↓

현재위치→mongoDB 설정 / 데이터 넣기 (Create)

MongoDB 데이터 가져오기 (Read)

MongoDB 데이터 수정하기 (Update)

MongoDB 데이터 삭제하기 / DeleteMapping 사용해보기 (Delete)


사용 버전
몽고db:7
SDK:18.0.2
gradle:18.0.2
springBoot:2.7.18-SNAPSHOT

Spring Boot gradle 에 의존성 추가

implementation ('org.springframework.boot:spring-boot-starter-data-mongodb')
implementation ('org.springframework.boot:spring-boot-starter-data-mongodb-reactive')

reactive 없을 시 mongorepo 만 사용.

reactive가 없을경우 = 몽고db 만 사용할 경우.

몽고DB 다운로드

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

몽고db 홈페이지 에서 다운로드

시스템환경변수 편집

시스템 환경변수 편집 path 에서 설치한 몽고db bin 파일 경로를 추가.

cmd mongodb 실행

cmd 몽고db 서버실행: mongod --dbpath C:\Program Files\MongoDB\Server\7.0\data\

  • 추후 cmd 에서 mongod 입력시 몽고db 실행.
  • 또는 mongodb 파일 폴더 > bin 폴더 내에 있는 실행파일 실행시 MongoDB 가 실행됨.

NoSQL Booster for MongoDB 에서 db 실행

사용할 데이터베이스 와 컬렉션(테이블) 생성

application.yml

server:
    port: 8080

spring:
    data:
        mongodb:
            uri: mongodb://localhost:27017/123123

추후 Url 맵핑 으로도 데이터를 넣어보기 위해 포트번호 설정함.

-- host,username,pw 를 사용하는 yml을 작성했었는데 권한오류로 실행이 끊겨 위처럼 수정 후
작동하니 정상작동 되었다.

Model 객체 생성 (Document)

@Data
@Document("1234")
public class Mongo {

    @Id
    private String id;

    private String text1;
    private String text2;


    public Mongo(String text1, String text2) {
        this.text1 = text1;
        this.text2 = text2;
    }

    public Mongo(String id, String text1, String text2){
        this.text1=text1;
        this.text2=text2;
        this.id=id;

    }
}

@Document 어노테이션 옆 괄호에는 컬렉션 명을 적어준다.
NoSQL 은 도큐먼트 형태로 저장한다.

NoSQL은 대용량 데이터의 읽기와 쓰기 작업을 위해 기존 관계형 데이터베이스 구조로는 부족한 점에 대한 대안으로서 출현

러너 수정

@SpringBootApplication
public class Mong3Application implements CommandLineRunner {

	@Autowired
	private MongoRepo mongoRepo;

	public static void main(String[] args) {

		SpringApplication.run(Mong3Application.class, args);
	}

	@Override
	public void run(String... args) throws Exception {
		Mongo customer1 = new Mongo("text1","text2");
		Mongo customer2 = new Mongo( "textTest1","textTest2");

		// insert
		mongoRepo.insert(Arrays.asList(customer1, customer2));

		// get
		List<Mongo> result = this.mongoRepo.findByText1("s1");
		System.out.println(result);
	}


}

CommandLineRunner 를 상속하고 run 메소드 를 위와같이 override 한다.

DB 확인

러너 수정 후 실행 시 테스트데이터가 2개 들어간다.

여기까지 MongoDB 와 SpringBoot 의 연결을 끝냈다.

GetMapping 을 통해 데이터 넣기

추가로 controller 와 service 를 이용해 데이터를 넣어보았다.

  • controller
@RestController
@RequiredArgsConstructor
public class MongoController {

    private final MongService mongService;


@GetMapping("/api/test")
    public void testMong(){

        this.mongService.textCreate();
    }

}
  • service
public  void  textCreate(){


        for(int i=0; i<10 ; i++){

            Mongo mongo = new Mongo(i+"",i+"번째 테스트 데이터",i+"-2 번째 테스트 데이터");
            this.mongoRepo.insert(mongo);
        }
    }

컨트롤러에서 localhost:8080/api/test 을 GetMapping 으로 선언하고 실행해보았다.

브라우져에서 맵핑된 url 을 실행했을 경우,

Service 에서 메소드를 작성한 대로 10개의 데이터가 잘 들어갔다.

Review

  • 오류 났던 부분.
  1. gradle , springboot , java 버전문제.
    (호환을 잘 체크하고 프로젝트를 설정하자.. )

  2. mongodb 계정 권한문제
    (구글에 다른분들이 올리신 게시글을 참고하여 yml을 작성했으나 결국엔 계정정보를 넣지않은 yml 을 작생했을 때 오류가 나지 않았다.. [추가공부가 필요함..])

  1. MongoDB 설치 및 실행문제
    ( cmd 에서 실행하는 쪽에서 좀 헤메고 1번에 버전문제에 mongodb 버전도 호환이 안되나 싶어 재설치를 했다.. )

DB 연동 후 Create 를 해봤으니 다음엔 RUD 를 포스팅 해야겠다.

profile
병아리 개발자 의 우당탕탕 성장기

0개의 댓글