참조 : http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html

OpenSeed의 물개 선생님께서 지난 강의에서 Hibernate의 특징 중에 하나로 Transparent Persistency라는 용어를 설명해 주셨습니다. 어떤 객체가 자기 자신이 Persistent 객체임을 전혀 모르는 상태에서 Persistent와 관련된 일들이 벌어지기 때문에 "투명한 영속성"이라고 한다고 이해를 했습니다.

그렇다면 누가 어떤 객체를 Persistent와 관련된 일을 처리해 주는가? Persistent Manager가 그 일을 해 주는데 그러한 역할을 하는 대표적인 녀석으로 Session이 있다는 설명도 해주셨습니다.

Hibernate에서 사용하게 되는 객체는 Transient, Persistent, Detached 상태 중에 하나로 존재 하게 되는데 Session에 있는 메소드를 사용함에 따라 그 상태가 바뀌게 됩니다.

위 API에 있는 것을 그림으로 옮기면 다음과 같습니다.
bm210.bmp
merge()는 그리기가 불편해서 안그렸는데요. Tarsient나 Detached상태에서 merge()를 호출하면 '새로운 Persistent'가 된다고 합니다.

'새로운 Persistent'는 해당 객체가 주키는 가졌지만 아직 DB에는 들어가지 않은 상태를 말합니다.

지난 번에 각각의 객체들의 특징을 살짝 공부했던 적이 있네요.
Transient Object
Persistent Object
Detached Obejct