2009-02-04 2 views
1

SQL 삽입 및 SQL 업데이트에서 불필요한/빈 필드를 줄이는 방법이 있습니까?최대 절전 모드 엔티티 저장 최적화?

예를 들어, 최대 10 자리 열이있는 테이블에 매핑 된 단일 최대 절전 모드 엔티티 클래스가 있습니다. 실제로 데이터를 채우는 과정은 두 단계로 이루어집니다. 사용자가 요청을 제출할 때 최대 절전 모드 엔티티가있는 테이블에 요청 정보를 삽입하지만 7 개의 필드 만 채 웁니다. 일부 처리 후 (예를 들어 다른 사용자 상호 작용을 기다리는), 나머지 3 개의 필드 (이전 삽입에서 제공된 ID로)를 채 웁니다.

1) ID로 식별 엔티티를로드하는

2) 생성 엔티티를 저장, 다음과 같이

내가 두 번째 업데이트, 하나의 엔티티 클래스에 충실하면, 내가 할 단계입니다 모든 필드를 넘기는 것 같습니다.

또는 두 개의 엔티티 클래스를 만들고 동일한 테이블을 가리킨 다음 별도로 저장하십시오.

누구에게 더 좋은 제안이 있습니까?

켄트

편집 : 정말 달성하기 위해 좋아하는 무엇

는 다음과 같은 효과에 뭔가 (???) 삽입 t (ID, 필드 1, FIELD2) 갱신 t 세트 FIELD3 =? field4 =? 여기서 id =?

지금은 = 사실 dynamicUpdate는 t에서 삽입 t (ID, 필드 1, FIELD2) (?,?,?) 선택 필드 1, FIELD2, FIELD3, 입력란 4 인으로 달성 할 수있는 가장 좋은 곳 ID =? 업데이트 t 설정 field3 =? field4 =? 여기서 id =?

select 문을 제거 할 수있는 방법이 있습니까? 원래 지속 된 개체는 삽입 후 메모리의 아무 곳에도 저장되지 않습니다.

추가 참고 사항. 엔티티 클래스는 Hibernate 유효성 검사와 함께 주석이 달려있다. 저는 현재 위의 원하는 효과를 얻기 위해 노력하고 있습니다. 그래서 나는 그것들을 주석 처리했습니다. 하지만 다시 켜면 @NotNull 및 @NotEmpty로 인해 유효성 검사 오류가 발생합니다. 단지 변경된 필드가 데이터베이스로 전송됩니다 엔티티의 상단에

@org.hibernate.annotations.Entity(dynamicUpdate = true) 

: 당신은 주석을 추가 할 경우

+0

dynamicUpdate = true가 완벽하게 작동합니다. – sqlnewbie

답변

3

.

+0

나는 그것을 시험해 보았다. 하지만 엔티티를 먼저로드해야하는 단계를 제거 할 수있는 방법이 있습니까? 엔티티가 세션에서 캐시되지 않는다고 가정하고 데이터베이스에 대한 추가 '선택'문을 제거하고 싶습니다. –

+0

이 작업을 수행하기 위해 해킹이 발생했습니다. (예 : 원래 개체를 어딘가에 유지 한 다음 병합을 수행하거나 일괄 업데이트를 사용) 그러나 추가 선택문이 최대 절전 모드로 전환하는 것이 올바른 선택이 아니라면 걱정하지 마십시오. 저에게 성능에 대한 질문은 유지 보수성과 관련이 있습니다. – Sam