

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 속성의 업데이트 동작 변경
<a name="ddb-en-client-adv-features-upd-behavior"></a>

*업데이트* 작업을 수행할 때 개별 속성의 업데이트 동작을 사용자 지정할 수 있습니다. DynamoDB 향상된 클라이언트 API의 업데이트 작업 예로는 [updateItem()](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/DynamoDbTable.html#updateItem(T)) 및 [transactWriteItems()](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClient.html#transactWriteItems(java.util.function.Consumer))가 있습니다.

예를 들어 *생성된* 타임스탬프를 레코드에 저장하고 싶다고 가정해 보겠습니다. 그러나 데이터베이스에 이미 속성에 대한 기존 값이 없는 경우에만 해당 값이 기록되기를 원합니다. 이 경우에는 `[WRITE\$1IF\$1NOT\$1EXISTS](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/enhanced/dynamodb/mapper/UpdateBehavior.html#WRITE_IF_NOT_EXISTS)` 업데이트 동작을 사용합니다.

다음 예제는 `createdOn` 속성에 동작을 추가하는 주석을 보여줍니다.

```
@DynamoDbBean
public class Customer extends GenericRecord {
    private String id;
    private Instant createdOn;

    @DynamoDbPartitionKey
    public String getId() { return this.id; }
    public void setId(String id) { this.name = id; }

    @DynamoDbUpdateBehavior(UpdateBehavior.WRITE_IF_NOT_EXISTS)
    public Instant getCreatedOn() { return this.createdOn; }    
    public void setCreatedOn(Instant createdOn) { this.createdOn = createdOn; }
}
```

주석 행 1 다음에 다음 예에 표시된 대로 정적 테이블 스키마를 빌드할 때 동일한 업데이트 동작을 선언할 수 있습니다.

```
static final TableSchema<Customer> CUSTOMER_TABLE_SCHEMA =
     TableSchema.builder(Customer.class)
       .newItemSupplier(Customer::new)
       .addAttribute(String.class, a -> a.name("id")
                                         .getter(Customer::getId)
                                         .setter(Customer::setId)
                                         .tags(StaticAttributeTags.primaryPartitionKey()))
       .addAttribute(Instant.class, a -> a.name("createdOn")
                                          .getter(Customer::getCreatedOn)
                                          .setter(Customer::setCreatedOn)
                                          // 1. Add an UpdateBehavior.
                                          .tags(StaticAttributeTags.updateBehavior(UpdateBehavior.WRITE_IF_NOT_EXISTS)))
       .build();
```