On 02/13/2012 04:31 AM, Denis Gervalle wrote:
Hi Devs,
I would like to commit the following change on the internal API of the
hibernate store:
Deprecate
public boolean beginTransaction(boolean withTransaction, XWikiContext
context)
public boolean beginTransaction(SessionFactory sfactory, boolean
withTransaction, XWikiContext context)
in favor of
public boolean beginTransaction(SessionFactory sfactory, XWikiContext
context)
Deprecate
public void endTransaction(XWikiContext context, boolean commit,
boolean withTransaction)
public<T> T execute(XWikiContext context, boolean bTransaction,
boolean doCommit, HibernateCallback<T> cb)
in favor of
public<T> T execute(XWikiContext context, boolean doCommit,
HibernateCallback<T> cb)
and add new method
public<T> T failSafeExecute(XWikiContext context, boolean doCommit,
HibernateCallback<T> cb)
Deprecate
public<T> T executeRead(XWikiContext context, boolean bTransaction,
HibernateCallback<T> cb) throws XWikiException
in favor of
public<T> T executeRead(XWikiContext context, HibernateCallback<T>
cb)
throws XWikiException
and add new method
public<T> T executeFailSafeRead(XWikiContext context,
HibernateCallback<T> cb)
Deprecate
public<T> T executeWrite(XWikiContext context, boolean bTransaction,
HibernateCallback<T> cb)
in favor of
public<T> T executeWrite(XWikiContext context, HibernateCallback<T>
cb) throws XWikiException
and add new method
public<T> T failSafeExecuteWrite(XWikiContext context,
HibernateCallback<T> cb)
My motivation:
- reduce confusion, since the current signature let you think that
sub-transaction are possible, and these are not, since the withTransaction
argument is unused.
- provide an easy way to run potentially failing transaction, that will
not do logging and neither throw. It is the responsability of the caller to
manager the situation.
The later could be use to easily check the state of the database during a
migration for example. Is a table exists ? is column exists ? could be done
by simple fail safe selection, if these fail, you are almost sure the table
or column is missing.
Anything against these changes ?
+1, looks good.
--
Sergiu Dumitriu
http://purl.org/net/sergiu/