mongodb connecting
// application.properties
spring.data.mongodb.host= ~~
spring.data.mongodb.port=27017
spring.data.mongodb.database=test
spring.data.mongodb.username=root
spring.data.mongodb.password=1234
spring.data.mongodb.authentication-database=admin
authentication admin 설정 없을 시, authentication 관련 예외가 발생했다.
Collection 정의
@Document(collection = "testCollection")
@Getter
@Setter
@ToString
public class MongoTestEntity {
@Id
private String id;
private String firstName;
private String lastName;
public MongoTestEntity(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
spring mongodb repository

public interface MongoTestRepository extends MongoRepository<MongoTestEntity, String> {
public List<MongoTestEntity> findByFirstName(String firstName);
}
repository 형태로 사용할 경우 properties에서 정의된 값으로 spring container에 자동으로 bean을 등록한다.
spring mongodb template
//Docs 예시
@Configuration
class AppConfig {
@Bean
MongoClient mongoClient() {
return MongoClients.create("mongodb://localhost:27017");
}
@Bean
MongoTemplate mongoTemplate(MongoClient mongoClient) {
return new MongoTemplate(mongoClient, "geospatial");
}
}
MongoTemplate 의 경우 Configuration에서 직접 bean을 등록한다.
기본 CRUD TEST
@SpringBootTest
class MongoTestRepositoryTest {
@Autowired
private MongoTestRepository mongoTestRepository;
@DisplayName("saveTest")
@Test
public void saveTest() {
MongoTestEntity mongoTestEntity = new MongoTestEntity("choi", "XX");
MongoTestEntity insertedEntity = mongoTestRepository.insert(mongoTestEntity);
}
@DisplayName("deleteTest")
@Test
public void deleteTest() {
List<MongoTestEntity> findList = mongoTestRepository.findByFirstName("choi");
mongoTestRepository.deleteAll(findList);
}
@DisplayName("updateTest")
@Test
public void updateTest() {
MongoTestEntity mongoTestEntity = new MongoTestEntity("jeon", "XX");
MongoTestEntity inserted = mongoTestRepository.insert(mongoTestEntity);
inserted.setFirstName("choi");
mongoTestRepository.save(inserted);
//insert 는 _id 중복시 예외
//save 는 _id 중복시 update
}
@DisplayName("findTest")
@Test
public void findTest() {
List<MongoTestEntity> findList = mongoTestRepository.findByFirstName("choi");
}
}
spring mongodb에서 transaction을 사용하려면 TransactionManager/Template 등의 추가 bean등록이 필요하다.
spring mongodb은 동기로 동작하고 비동기로 사용하려면 mongodb-reactive를 사용한다.
참고 자료
https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.repositories
Spring Data MongoDB - Reference Documentation
abs, acos, acosh, add (* via plus), asin, asin, atan, atan2, atanh, ceil, cos, cosh, derivative, divide, exp, floor, integral, ln, log, log10, mod, multiply, pow, round, sqrt, subtract (* via minus), sin, sinh, tan, tanh, trunc
docs.spring.io
https://www.baeldung.com/spring-data-mongodb-connection
Spring Data MongoDB – Configure Connection | Baeldung
Different ways of setting up a MongoDB connection.
www.baeldung.com
회사에서 Spring Boot + mongoDB 트랜잭션 도입하기
1. 왜 mongoDB에서 트랜잭션을 도입하는거야? 우선 업무에서 왜 mongoDB를 사용하고 있는지 부터 이야기 해야 할 것 같아요. 일반적인 회사에서는 관계형 데이터베이스를 사용하고 있는데, 제가 머물
jh2021.tistory.com
https://ckddn9496.tistory.com/100
MongoRepository를 이용한 MongoDB와 Spring boot 연동
SpringBoot와 MongoDB를 연결하고 MongoRepository를 사용해보자. 의존성 주입 pom.xml에 spring-boot-starter-data-mongodb를 추가합니다. org.springframework.boot spring-boot-starter-data-mongodb MongoDB 접속 정보 세팅 application.ym
ckddn9496.tistory.com
'spring' 카테고리의 다른 글
| spring mapstruct (0) | 2023.10.15 |
|---|---|
| spring lombok SuperBuilder (0) | 2023.10.08 |
| lombok @Builder (0) | 2023.08.06 |
| Json 직렬/역직렬, @RequestBody, @ModelAttribute (0) | 2023.08.04 |
| Spring boot DI 주입 방식 (필드/수정자/생성자) (0) | 2023.07.22 |