Java에서 MongoDB 데이터베이스를 생성하기 위한 별도의 전용 메서드는 존재하지 않습니다. 대신 com.mongodb.MongoClient 클래스의 getDatabase() 메서드를 호출하면 원하는 이름의 데이터베이스를 손쉽게 생성할 수 있습니다.
MongoDB 데이터베이스의 지연 생성(Lazy Creation)
MongoDB는 데이터베이스를 즉시 물리적으로 생성하지 않는 특징이 있습니다. getDatabase() 메서드를 호출하면 해당 데이터베이스에 대한 참조만 반환되며, 실제 데이터베이스는 그 안에 컬렉션(collection)을 만들고 문서(document)를 삽입하는 시점에 생성됩니다. 따라서 아래 예제처럼 여러 개의 데이터베이스 이름을 지정해도, 데이터를 저장하기 전까지는 서버에 빈 데이터베이스가 쌓이지 않습니다.
예제 코드
import com.mongodb.MongoClient;
public class CreatingDatabase {
public static void main(String args[]) {
// MongoDB 클라이언트 생성
@SuppressWarnings("resource")
MongoClient mongo = new MongoClient("localhost", 27017);
// 데이터베이스 접근 및 생성
mongo.getDatabase("myDatabase1");
mongo.getDatabase("myDatabase2");
mongo.getDatabase("myDatabase3");
System.out.println("Databases created successfully");
}
}실행 결과
Databases created successfully
위 코드는 localhost의 기본 포트인 27017번으로 MongoDB 서버에 연결한 뒤, 세 개의 데이터베이스(myDatabase1, myDatabase2, myDatabase3)에 대한 참조를 얻어오는 예제입니다. 참고로 이 상태에서 mongo 셸의 show dbs 명령으로 데이터베이스 목록을 확인하면, 문서를 삽입하기 전까지는 해당 데이터베이스가 목록에 나타나지 않습니다. 이것이 바로 앞서 설명한 MongoDB의 지연 생성 방식 때문입니다.