For DateCreated I can set the property to generated = always
and set a default constraint (yes that reads right damn MS) on MS SQL 2008 to a default value of GetDate()
Well, you should actually use generated = insert
for the creation date, it is not supposed to change upon subsequent updates and this will save an additional select for this column during updates.
How would I go about it for DateModified?
And this is where you should use generated = always
(and a trigger on the database side).
Here is what the reference documentation writes about them:
Generated properties are properties
that have their values generated by
the database. Typically, Hibernate
applications needed to refresh objects
that contain any properties for which
the database was generating values.
Marking properties as generated,
however, lets the application delegate
this responsibility to Hibernate. When
Hibernate issues an SQL INSERT or
UPDATE for an entity that has defined
generated properties, it immediately
issues a select afterwards to retrieve
the generated values.
Properties marked as generated must
additionally be non-insertable and
non-updateable. Only versions,
timestamps, and simple properties, can
be marked as generated.
never
: (the default): the given property value is not generated within
the database.
insert
: the given property value is generated on insert, but is not
regenerated on subsequent updates.
Properties like created-date fall into
this category. Even though version and
timestamp properties can be marked as
generated, this option is not
available.
always
: the property value is generated both on insert and on
update.