[몽고디비 설치]
2022.03.02 - [맥북 M1] - 맥북으로 도커에 mongoDB 설치하기
[스프링부트 프로젝트 가져오기]
start.spring.io로 아래 Dependencies를 추가했습니다.
편의를 위해 Lombok 정도만 추가로 가져오겠습니다.
[application.properties]: yml로 하셔도 무방합니다. database 부분을 선언하신 데이터베이스 이름으로 할당해주세요.
아래 세 줄은 선언하신 계정 이름과 패스워드에 맞게 바꿔주세요.
spring.data.mongodb.database=test
spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost
#아래 세 줄을 꼭 추가해야 권한 오류가 나지 않습니다.
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=root
spring.data.mongodb.password=1234
[Entity 선언]
@Document를 통해 collection의 이름을 설정합니다. RDBMS의 @Entity 같은 역할을 합니다.
@Document(collection = "accounts")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Account {
@Id
private String account_id;
private String username;
private String email;
}
[Repository 선언]
RDBMS하듯 JPARepository와는 다르게 MongoRepository를 사용합니다.
@Repository
public interface AccountRepository extends MongoRepository<Account, String> {
}
[Controller 작성]
원래는 Service를 거쳐야 하지만 실습 목적이기 때문에 Controller만 작성하겠습니다.
@RequiredArgsConstructor
@RestController
public class AccountController {
private final AccountRepository accountRepository;
@GetMapping("/account/{id}")
public Account findById(@PathVariable String id) {
return accountRepository.findById(id).get();
}
@GetMapping("/account")
public List<Account> findAll() {
return accountRepository.findAll();
}
@PostMapping("/account")
public Account save(@RequestBody Account account) {
return accountRepository.save(account);
}
@PutMapping("/account/{id}")
public Account update(@RequestBody Account account,@PathVariable String id) {
Account updateAccount = accountRepository.findById(id).orElse(null);
updateAccount.setUsername(account.getUsername());
updateAccount.setEmail(account.getEmail());
return accountRepository.save(updateAccount);
}
@DeleteMapping("/account/{id}")
public boolean deleteById(@PathVariable String id) {
accountRepository.deleteById(id);
return true;
}
}
[계정 등록 테스트]
디비에도 잘 등록이 되었습니다.Id 끝에 3자리가 순차증가함을 확인할 수 있습니다. _class라는 것도 추가됨을 확인할 수 있습니다.
[계정 조회 테스트]
[계정 전체 조회 테스트]
[계정 삭제 테스트]
[계정 수정 테스트]
간단하게 CRUD를 해보면서 궁금했던 점이 생겼습니다.
NoSQL에서 복잡한 쿼리문은 어떻게 작성하는가에 대한 의문입니다.
공부를 추가적으로 한 후에 포스팅해드릴게요.
'스프링 부트' 카테고리의 다른 글
[스프링] 빈 등록 Bean, Configuraition, Component 비교 (0) | 2022.04.06 |
---|---|
DTO vs VO vs Entity 비교 (0) | 2022.04.04 |
[스프링부트] javax.persistence와 org.springframework.data.annotation의 차이 (0) | 2022.03.02 |
스프링 시큐리티 인증 필터 처리 (0) | 2022.02.19 |
스프링부트 Application.properties에서 H2 설정 하는법 (0) | 2022.01.19 |
댓글