Spring Boot

[몽고DB] SpringBoot 스프링부트 + 몽고DB 연동 및 CURD

dev.mk 2022. 8. 7. 21:46
반응형

#환경

jdk 1.8

Spring Boot 2.6.4

maven build

MongoRepository

 

 

터미널에서 미리 몽고디비 서버를 구동한다.

brew services start mongodb-community

 

1. pom.xml 의존성 추가

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

 

2. application.properties 데이터베이스 정보 추가

## MongoDB 설정
spring.data.mongodb.uri=mongodb://localhost:27017
spring.data.mongodb.database=admin
spring.data.mongodb.authentication-database=admin

 

# 아래의 에러 발생시

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

 

프로퍼티에 spring.autoconfigure.exclude = 추가

## MongoDB 설정
spring.data.mongodb.uri=mongodb://localhost:27017
spring.data.mongodb.database=admin
spring.data.mongodb.authentication-database=admin

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

 

3.  VO (Collections) 작성

몽고디비는 vo를 컬렉션이라고 일컫기 때문에 Collections 으로 작성함

AdminCollections.java

@Data는  lombok.jar 사용

@Data
@Document(collection = "admin")
public class AdminCollections {
	
    @Id
    private ObjectId _id;
	  
    @Field ("userId")
    private String userId;
    
    @Field ("userPw")
    private String userPw;

    @Builder
    public AdminCollections(String userId, String userPw) {
        this.userId = userId;
        this.userPw = userPw;
    }

}

중요한건 몽고디비 컬렉션이랑 필드명이 일치해야 한다.

실제 몽고디비 컬렉션이랑 AdminCollections.java 겟터와 일치함.

@Id어노테이션은 몽고디비 _id필드로 맵핑해준다.

 

 

4. Repository 레파지토리 작성 

AdminCollectionsRepository.java

public interface AdminCollectionsRepository extends MongoRepository<AdminCollections, String> {
	
	List<AdminCollections> findByUserId(String userId, String userPw);
	
}

MongoRepository를 상속받는 인터페이스를 필수로 하나 작성해야한다.

MongoRepository에서 기본적인 CRUD제공하기 때문에 따로 메소드를 작성할 필요는 없는데

findByUserId는 내가 추가로 넣은 임의의 메소드이다. 이름은 반드시 findBy* 로 시작해야한다.

 

5. Service 서비스 작성

서비스부분은 일반적인 컨트롤러 서비스라고 생각하자.  레파지토리를 @Autowired로 설정하고

각종 CRUD 서비스를 만들면된다.

@Service
public class AdminServiceImpl implements AdminService {

    @Autowired
    private AdminCollectionsRepository adminCollectionsRepository;
	
    public void testMongoCrud(AdminCollections col) {
		
        //저장
        adminCollectionsRepository.save(col);
        //전체 조회
        List<AdminCollections> list = adminCollectionsRepository.findAll();
        //and 검색 
        List<AdminCollections> list2 = adminCollectionsRepository.findByUserId("admin", "1234");
		
    }

}

save, findAllMongoRepository에서 기본적으로 제공해주는 메소드이다. 그밖에 여러가지있는데 자동완성 및 아래의 문서를 참조

https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/repository/MongoRepository.html

 

 

 

 

 

반응형