반응형
일일 배움을 위한 Today I Learned !
소경관
MongoDB 공통 로직을 짜봤다.
package project.SPM.mapper;
import com.mongodb.client.model.Indexes;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.core.MongoTemplate;
@Slf4j
@RequiredArgsConstructor
public abstract class AbstractMongoDBComon {
protected MongoTemplate mongodb;
/**
* 컬렉션 생성하기
* @param colNm 생성할 컬렉션 명
* @return 생성 결과
*/
protected boolean createCollection(String colNm) {
boolean res;
if (mongodb.collectionExists(colNm)) {
res = false;
} else {
mongodb.createCollection(colNm);
res = true;
}
return res;
}
/**
* 인덱스 컬럼이 한 개일 때 컬렉션 생성
* @param colNm 생성할 컬렉션명
* @param index 생성할 인덱스
* @return 생성 결과
*/
protected boolean createCollection(String colNm, String index) {
String[] indexArr = {index};
return createCollection(colNm, indexArr);
}
/**
* 인덱스 컬럼이 여러 개일 때 컬렉션 생성
* @param colNm 생성할 컬렉션명
* @param index 생성할 인덱스
* @return 생성결과
*/
protected boolean createCollection(String colNm, String[] index) {
log.debug("### .createCollection start! : {}", this.getClass().getName());
boolean res = false;
// 기존에 등록된 컬렉션 이름이 존재하는지 체크 후 없다면 생성
if (!mongodb.collectionExists(colNm)) {
// 인덱스 값이 존재하는 경우
if (index.length > 0) {
// 컬렉션 생성 및 인덱스 생성
mongodb.createCollection(colNm).createIndex(Indexes.ascending(index));
} else {
// 인덱스가 없으면 인덱스 없이 컬렉션 생성
mongodb.createCollection(colNm);
}
log.debug("### .createCollection End! : {}", this.getClass().getName());
res = true;
}
return res;
}
/**
* 컬렉션 삭제
* @param colNm 삭제할 컬렉션명
* @return 삭제 결과
*/
protected boolean dropCollection(String colNm) {
boolean res = false;
if (mongodb.collectionExists(colNm)) {
mongodb.dropCollection(colNm);
res = true;
}
return res;
}
}
일단 이렇게 코딩해 주었는데 근무 체를 할 때 일자나 시간 별로 새로운 컬렉션을 생성하도록 하고 만약 컬렉션이 존재하는 경우 삭제를 하고 다시 생성을 하게 하는 것을 고민중인데 일단 구현해 보면서 어떤 식으로 할까 고민을 더 해봐야겠다.
애초에 일자와 시간으로 나눠서 시간별로 여러번 저장이 되도록 만들 수도 있겠고, 일자로 나눠서 일자 별로만 저장되면서 같은 일자는 사전에 체크하고 삭제하는 경우(위에 코딩한 것)가 있겠다.
구현해 보면서 좀 더 적당할 것 같은 것을 적용하는 쪽으로 생각해 봐야겠다.
반응형
'발전소 > [T.I.L] : Today I Learned' 카테고리의 다른 글
[TIL] : 203 (0) | 2022.05.17 |
---|---|
[TIL] : 202 (0) | 2022.05.16 |
[TIL] : 200 🎉 (0) | 2022.05.14 |
[TIL] : 199 (0) | 2022.05.13 |
[TIL] : 198 (0) | 2022.05.12 |
댓글