MongoDB

2023. 12. 28. 19:49Spring Boot

Spring boot에서 DB를 이용할 때

만들어야 하는 요소는 3가지이다

 

 

우선 사용할 Entity 의 양식을 정하는 class

import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Document(collection = "test")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class test_db {

    @Id
    private ObjectId id;

    private String title;

    private String data;

    public test_db(String title, String data) {
        this.title = title;
        this.data = data;
    }

}

이때 사용할 MongoDB Collection의 이름을 넣어준다

또한 ObjectID 객체로 id를 선언한다

 

 

데이터베이스와 서비스를 연결하는 Repository

import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface db_repository extends MongoRepository<test_db, ObjectId> {
    
}

 

MongoRepository를 상속받아 만들기 때문에

기본적인 검색 수정 생성의 Method는 존재해 따로 만들지는 않는다

다만 필요에 따라 새로 만들 수도 있다. 

 

 

Controller에게 정해진 method로 필요한 데이터를 넘겨주는 Service

import java.util.List;
import java.util.Optional;

import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class db_service {
    @Autowired
    private db_repository repository;

    public List<test_db> all_data() {
        return repository.findAll();
    }

    public Optional<test_db> get_data(ObjectId id) {
        return repository.findById(id);
    }

    public test_db create_data(String title, String data) {
        test_db test = repository.insert(new test_db(title, data));
        return test; 
    }
    public test_db create_data2(String title, String data) {
        test_db test = new test_db(title, data);
        repository.save(test);
        return test; 
    }
    public test_db update_data(ObjectId id, String title, String data) {
        Optional<test_db> tmp = repository.findById(id);
        
        if(tmp != null) {
            test_db test = tmp.get();
            if(title != null) {
                test.setTitle(title);
            }
            if(data != null)
                test.setData(data);

            repository.save(test);
            
            return test;
        }
        return null;
        
    }

    public void delete_data(ObjectId id) {
        repository.deleteById(id);
    }
}

 

 

appljcation.properties에

기본적으로는 uri와 database의 이름만 정의해주면 된다

 

build.gradle에는

 

spring-boot-starter-data-mongodb를 추가해준다

'Spring Boot' 카테고리의 다른 글

Json Web Token  (2) 2024.01.02
CustomFilter  (0) 2024.01.02
SecurityFilterChain  (0) 2024.01.02
CSRF Token  (0) 2023.12.28
Form Post  (0) 2023.12.12