Title: APIDiscussionFollowUp
After our meeting, Patrick did some analysis of our current API and where we might want to take it. Here are some initial observations. Please comment as appropriate.
OpenJPAEntityManager extends EntityTransaction; should it?
StoreCache, QueryResultCache, Extent, FetchPlan, Generator, OpenJPAQuery all have getDelegate() calls that return an underlying kernel implementation detail. Maybe these should be pushed down to theh impl classes only?
OpenJPAEntityManager and OpenJPAEntityManagerFactory both have a getConfiguration() method. Maybe this should be pushed down to the impl classes only?
OpenJPAEntityManager.getManagedRuntime() should be pushed down to impl only
The following methods in OpenJPAPersistence return things that are not currently part of what I consider a user-focused API:
toBrokerFactory() toBroker() toEntityManagerFactory() toEntityManager() getMetaData()
We have a bunch of methods in OpenJPAEntityManager that seem like they should belong on a new OpenJPAEntityTransaction interface:
public void commitAndResume(); public void rollbackAndResume(); public void setRollbackOnly(); (already part of EntityTransaction) public void setRollbackOnly(Throwable cause); public Throwable getRollbackCause(); public boolean isStoreActive(); public void setSavepoint(String name); public void rollbackToSavepoint(); public void rollbackToSavepoint(String name); public void releaseSavepoint(); public void preFlush();
I don‘t like the OpenJPAEntityManager.setLargeTransaction() method name - I’d like to rename it to setTrackChangesByType() instead, since it better reflects what the method does. (We can easily deprecate the old method if desired.)
I think that it might make sense to move OpenJPAEntityManager.setPopulateDataCache() to FetchPlan, and rename FetchPlan.setQueryResultCache() to setPopulateQueryResultCache(). (We can easily deprecate the old methods if desired.)