-
[몽고DB] SpringBoot 스프링부트 + 몽고DB 연동 및 CURDSpring Boot 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에서 기본적으로 제공해주는 메소드이다. 그밖에 여러가지있는데 자동완성 및 아래의 문서를 참조
반응형'Spring Boot' 카테고리의 다른 글
스프링 Spring @Autowired? @Component? @Bean?차이 (0) 2023.07.16 스프링부트 3.0 javax/servlet/jsp/tagext/TagLibraryValidator 에러 해결하기 (0) 2023.06.10 스프링부트 배포시 ORA-01882: timezone region not found 오류 해결하기 (0) 2022.09.18 스프링부트 EC2 배포시 org.thymeleaf.exceptions.TemplateInputException 에러 (0) 2022.09.18 Spring boot에서 WebMvcConfigurerAdapter 노란 밑줄 일때 (0) 2019.04.06