항목 만들기, 검색, 업데이트, 삭제

Datastore의 데이터 객체를 항목이라고 하며, 각 항목은 쿼리를 위해 특정한 종류로 분류됩니다. 예를 들어 인사 관리 애플리케이션을 작성하는 경우 각 직원을 Employee 종류의 항목으로 나타낼 수 있습니다. 항목 데이터 값의 형식은 속성이라는 점에 유의하세요. 항목에 대한 자세한 내용은 항목, 속성, 키 개념 문서를 참조하세요.

항목 생성 및 속성 설정

Java에서는 Entity 클래스의 인스턴스를 생성하면서 Entity() 생성자에 항목 종류를 인수로 제공하여 새 항목을 만듭니다. 필요한 경우 항목 속성에 값을 채운 후 DatastoreService.put() 메서드에 인수로 전달하여 Datastore에 저장합니다. 항목의 키 이름을 지정하려면 생성자의 두 번째 인수로 전달하면 됩니다.

다음 예시에서는 Employee 종류의 항목을 만들고, 속성 값을 채우고, 데이터 스토어에 저장합니다.

Entity employee = new Entity("Employee", "asalieri");
employee.setProperty("firstName", "Antonio");
employee.setProperty("lastName", "Salieri");
employee.setProperty("hireDate", new Date());
employee.setProperty("attendedHrTraining", true);

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(employee);

키 이름을 제공하지 않으면 Datastore가 항목 키의 숫자 ID를 자동으로 생성합니다.

Entity employee = new Entity("Employee");
// Set the entity properties.
// ...
datastore.put(employee);

항목 검색

특정 키로 식별되는 항목을 검색하려면 Key 객체를 DatastoreService.get() 메서드에 전달합니다.

// Key employeeKey = ...;
Entity employee = datastore.get(employeeKey);

항목 업데이트

기존 항목을 업데이트하려면 항목 객체의 속성을 수정한 후 DatastoreService.put() 메서드에 전달합니다. 이렇게 하면 객체 데이터가 기존 항목을 덮어씁니다. put()을 호출할 때마다 전체 객체가 Datastore로 전송됩니다.

Entity employee = new Entity("Employee", "asalieri");
employee.setProperty("firstName", "Antonio");
employee.setProperty("lastName", "Salieri");
employee.setProperty("hireDate", new Date());
employee.setProperty("attendedHrTraining", true);

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(employee);

항목 삭제

항목 키가 지정되면 DatastoreService.delete() 메서드로 항목을 삭제할 수 있습니다.

// Key employeeKey = ...;
datastore.delete(employeeKey);

대량 항목 삭제

다수의 항목을 삭제해야 하는 경우 Dataflow를 사용하여 항목을 일괄 삭제하는 것이 좋습니다.

일괄 작업 사용

단일 Datastore 호출에서 여러 항목을 작업하려는 경우 일괄 작업을 사용하면 됩니다.

일괄 호출의 예시는 다음과 같습니다.

Entity employee1 = new Entity("Employee");
Entity employee2 = new Entity("Employee");
Entity employee3 = new Entity("Employee");
// ...

List<Entity> employees = Arrays.asList(employee1, employee2, employee3);
datastore.put(employees);

이러한 일괄 작업에서는 모든 항목 또는 키를 항목 그룹으로 묶은 후 요청된 작업을 각 항목 그룹에 대해 병렬로 수행합니다. 이 방식은 서비스 호출에 따르는 오버헤드가 한 번만 발생하므로 개별 항목을 일일이 따로 호출하는 방식보다 속도가 빠릅니다. 일괄 처리에 여러 항목 그룹이 사용되는 경우 서버 측에서 모든 그룹에 대한 작업이 병렬로 수행됩니다.

put() 또는 delete() 일괄 호출은 항목에 따라 성공적으로 작동하거나 그렇지 않을 수 있습니다. 호출이 완전히 성공하거나 완전히 실패하는 것이 중요한 경우에는 모든 항목이 동일한 항목 그룹에 포함된 트랜잭션을 사용하세요.