관련포스팅 ↓
현재위치→mongoDB 설정 / 데이터 넣기 (Create)
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\
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 를 이용해 데이터를 넣어보았다.
@RestController
@RequiredArgsConstructor
public class MongoController {
private final MongService mongService;
@GetMapping("/api/test")
public void testMong(){
this.mongService.textCreate();
}
}
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
gradle , springboot , java 버전문제.
(호환을 잘 체크하고 프로젝트를 설정하자.. )
mongodb 계정 권한문제
(구글에 다른분들이 올리신 게시글을 참고하여 yml을 작성했으나 결국엔 계정정보를 넣지않은 yml 을 작생했을 때 오류가 나지 않았다.. [추가공부가 필요함..])
DB 연동 후 Create 를 해봤으니 다음엔 RUD 를 포스팅 해야겠다.