2010-11-27 5 views
2

변경되지 않은 엔티티가 주어진 경우 Hibernatesession.update(entity)SQLUPDATE 문을 데이터베이스 서버로 보냅니 까?Hibernate는 변경되지 않은 엔티티를 갱신합니까?

예를 들어, 다음 코드에서 Hibernate는 데이터베이스 UPDATE을 데이터베이스 서버로 보냅니 까?

Session session = factory.openSession(); 
Person me = new Person(null, "Derek Mahar"); 
session.save(me); 
Person me2 = new Person(me.getId(), "Derek Mahar"); 
session.update(me2); 
session.flush(); 
+0

퀴즈가 맞습니까? – cherouvim

+0

개체가 여전히 세션에 연결되어 있어도 업데이트가 작동합니까? 'update()'의 API는 주어진 detached 인스턴스로 영속 인스턴스를 갱신한다는 것을 알려준다. – kraftan

+0

크래프 턴, 나는 당신이 옳을 수도 있다고 생각합니다. 설명서에 따르면이 예제는 예외를 throw합니다. 이 예제를 수정하여 원본과 동일한 ID를 가진 분리 된 인스턴스를 업데이트합니다. –

답변

6

엄밀히 말하면, Hibernate는 update에서 SQL 업데이트를 전송하지 않습니다. update은 단순히 현재 세션의 개체를 업데이트합니다. Hibernate는 세션이 flush 될 때 질의를 수행한다.

+0

Bozho, 맞습니다,하지만 제 질문은 마지막 업데이트 후에 세션을 비울 것으로 가정합니다. 내 질문은이 점에 대해 명시 적으로 언급하지 않았으므로 명시 적으로 마지막 flush()를 포함하도록 코드 예제를 수정했습니다. –

+0

내 대답은 (그리고 여전히) "아니오"나머지는 추가 정보 :) – Bozho

관련 문제