개발 공부 기록/02. Spring Boot

SpringBoot와 MongoDB 연동하기

박세류 2024. 1. 24. 10:16

1. mongoDB설치

 

Try MongoDB Community Edition

Try MongoDB Community Edition on premise non-relational database including the Community Server and Community Kubernetes Operator for your next big project!

www.mongodb.com

에서 MongoDB Community Server를 받아 설치해준다.

 

보통 mongoDB compass도 같이 설치할 것인데, 

위와같이 Databases쪽에 사용할 db를 생성해준다.

또한, RDBTable과 비슷한 개념인 Collection(콜렉션)을 생성해준다.

그러면 compass에 이런식으로 보여질것이다.

 

 

 

2. Spring Boot 프로젝트 생성

MongoDB 버전은 7.0, Spring Boot 버전은 3.2.2 버전으로 진행하였다.

gradle에 web과 mongodb 라이브러리를 추가해준다. 

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

3. MongoDB 연결

application.properties에 MongoDB연결을 설정해준다.

spring.data.mongodb.uri=mongodb://localhost:27017/생성한 db이름

 

 

4. Entity 및 Repository 클래스 생성

MongoDB 컬렉션에 매핑되는 엔티티 클래스 및 Repository를 만들어주자.

 

Entity

@Document(collection = "user")
public class User {

    @Id
    private String id;
    private String name;
    private int age;

    // 생성자, getter, setter 등 필요한 메서드 추가

}

 

Repository

public interface UserRepository extends MongoRepository<User, String> {

}

 

5. 기본 CRUD 서비스 레이어 생성

@Service
public class UserService {

    private UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public List<User> getAllUser() {
        return userRepository.findAll();
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public void deleteUserById(String id) {
        userRepository.deleteById(id);
    }

}

 

6. 컨트롤러 생성

@RestController
public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/user")
    public List<User> getAllUserList() {
        return userService.getAllUser();
    }

    @PostMapping("/user")
    public User saveUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

    @DeleteMapping("/user")
    public void deleteUserById(@RequestParam String id) {
        userService.deleteUserById(id);
    }

}

 

7. 테스트

간단하게 PostMan으로 확인해보겠다.

 

잘 되었음을 확인할 수 있다. 

반응형