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, findAll은 MongoRepository에서 기본적으로 제공해주는 메소드이다. 그밖에 여러가지있는데 자동완성 및 아래의 문서를 참조
반응형