Posted on 2008-11-01 10:01
Neil's NoteBook 阅读(55)
评论(0) 编辑 收藏
Working With Objects
Hibernate is a full object/relational mapping solution that not only shields
the developer from the details of the underlying database management system, but
also offers state management of objects.
This is, contrary to the management of SQL statements
in common JDBC/SQL persistence layers, a very natural object-oriented view of
persistence in Java applications.
In other words, Hibernate application developers should always think about
the state of their objects, and not
necessarily about the execution of SQL statements. This part is taken care of by
Hibernate and is only relevant for the application developer when tuning the
performance of the system.
Hibernate object states
Hibernate defines and supports the following object states:
-
Transient - an object is transient if it
has just been instantiated using the new
operator,
and it is not associated with a Hibernate Session
. It
has no persistent representation in the database and no identifier value has
been assigned. Transient instances will be destroyed by the garbage collector if
the application doesn't hold a reference anymore. Use the Hibernate Session
to make an object persistent (and let Hibernate
take care of the SQL statements that need to be executed for this transition).
-
Persistent - a persistent instance has a
representation in the database and an identifier value. It might just have been
saved or loaded, however, it is by definition in the scope of a Session
. Hibernate will detect any changes made to an
object in persistent state and synchronize the state with the database when the
unit of work completes. Developers don't execute manual UPDATE
statements, or DELETE
statements when an object should be made transient.
-
Detached - a detached instance is an
object that has been persistent, but its Session
has
been closed. The reference to the object is still valid, of course, and the
detached instance might even be modified in this state. A detached instance can
be reattached to a new Session
at a later point in
time, making it (and all the modifications) persistent again. This feature
enables a programming model for long running units of work that require user
think-time. We call them application
transactions, i.e. a unit of work from the point of view of the
user.
We'll now discuss the states and state transitions (and the Hibernate methods
that trigger a transition) in more detail.