문서 데이터 형식: 레코드
이 페이지의 내용
개요
이 가이드에서는 Java 레코드를 사용하여 MongoDB Java 드라이버에 데이터를 저장하고 조회하는 방법에 대해 설명합니다. Java 레코드는 데이터를 모델링하고 비즈니스 논리를 데이터 표현과 분리하는 데 자주 사용되는 Java 클래스 유형입니다.
팁
Java 16 이상에서 Java 레코드를 선언할 수 있습니다. Java 17 언어 업데이트: 레코드 클래스에서 레코드의 기능 및 제한 사항에 대해 자세히 알아보세요.
이전 버전의 Java 를 사용하는 경우 일반 Java 객체를 대신 사용할 수 있습니다. 구현 에 대한 자세한 내용은 문서 데이터 형식: POJO 가이드 를 참조하세요.
레코드 직렬화 및 역직렬화
이 드라이버는 기본 코덱 레지스트리를 사용하여 MongoDB 읽기 및 쓰기 작업에 대한 Java 레코드 인코딩 및 디코딩을 기본적으로 지원합니다. 기본 코덱 레지스트리는 Java 유형을 인코딩 및 디코딩하는 방법을 정의하는 코덱이라는 클래스의 컬렉션입니다. 코덱 가이드에서 코덱 및 기본 코덱 레지스트리에 대해 자세히 알아보세요
레코드 예시
이 섹션의 코드 예시는 데이터 스토리지 기기를 설명하는 다음 샘플 레코드를 참조합니다.
public record DataStorageRecord( String productName, double capacity ) {}
레코드 삽입
다음 코드에 표시된 대로 DataStorageRecord
인스턴스를 삽입할 수 있습니다.
MongoCollection<DataStorageRecord> collection = database.getCollection("data_storage_devices", DataStorageRecord.class); // insert the record collection.insertOne(new DataStorageRecord("2TB SSD", 1.71));
레코드 조회
다음 코드에 표시된 대로 문서를 DataStorageRecord
인스턴스로 검색하고 출력할 수 있습니다.
MongoCollection<DataStorageRecord> collection = database.getCollection("data_storage_devices", DataStorageRecord.class); // retrieve and print the records List<DataStorageRecord> records = new ArrayList<DataStorageRecord>(); collection.find().into(records); records.forEach(System.out::println);
DataStorageRecord[productName=1TB SSD, capacity=1.71]
주석을 사용하여 구성 요소 변환 지정하기
이 섹션에서는 레코드 구성 요소의 직렬화 동작을 구성하는 데 사용할 수 있는 주석을 설명하고 주석 동작을 보여주는 예시를 제공합니다.
팁
org.bson.codecs.records.annotations
패키지는 더 이상 사용되지 않습니다. org.bson.codecs.pojo.annotations 에서 동등한 것을 사용합니다. 패키지를 대신 사용합니다.
레코드 구성 요소에서 다음 주석을 사용할 수 있습니다.
주석 이름 | 설명 |
---|---|
BsonId | 직렬화할 구성 요소를 _id 속성으로 지정합니다. |
BsonProperty | 레코드 구성 요소를 BSON으로 변환할 때 사용자 정의 문서 필드 이름을 지정합니다. 필드 이름을 매개 변수로 허용합니다. |
BsonRepresentation | 레코드 구성 요소 유형과 다른 경우 저장할 BSON type을 지정합니다. BSON type을 매개 변수로 허용합니다. |
주석 처리된 레코드 예시
이 섹션의 코드 예시에서는 네트워크 기기를 설명하는 다음 샘플 레코드를 참조합니다.
import org.bson.BsonType; import org.bson.codecs.pojo.annotations.BsonProperty; import org.bson.codecs.pojo.annotations.BsonId; import org.bson.codecs.pojo.annotations.BsonRepresentation; public record NetworkDeviceRecord( @BsonId() String deviceId, String name, String deviceType ) {}
주석 처리된 레코드 삽입
다음 코드에 표시된 대로 DataStorageRecord
인스턴스를 삽입할 수 있습니다.
MongoCollection<NetworkDeviceRecord> collection = database.getCollection("network_devices", NetworkDeviceRecord.class); // insert the record String deviceId = new ObjectId().toHexString(); collection.insertOne(new NetworkDeviceRecord(deviceId, "Enterprise Wi-fi", "router"));
MongoDB에 삽입된 문서는 다음과 같습니다.
{ _id: ObjectId("fedc..."), name: 'Enterprise Wi-fi', type: 'router' }
주석 처리된 레코드 조회
다음 코드에 표시된 대로 문서를 NetworkDeviceRecord
인스턴스로 검색하고 출력할 수 있습니다.
MongoCollection<NetworkDeviceRecord> collection = database.getCollection("network_devices", NetworkDeviceRecord.class); // return all documents in the collection as records List<NetworkDeviceRecord> records = new ArrayList<NetworkDeviceRecord>(); collection.find().into(records); records.forEach(System.out::println);
NetworkDeviceRecord[deviceId=fedc..., name=Enterprise Wi-fi, deviceType=router]