THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
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()
toOpenJPAObjectId() / toOpenJPAObjectIds()
I think that we should move these methods to o.a.o.persistence.impl.ImplHelper or some other impl-specific class.
- 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 getRollbackOnly(); (also already part of EntityTransaction)
public boolean isStoreActive();
public void beginStore();
I'm not quite as sure where these belong:
public void setSavepoint(String name);
public void rollbackToSavepoint();
public void rollbackToSavepoint(String name);
public void releaseSavepoint();
public void releaseSavepoint(String name);
public void preFlush();
public void validateChanges();
- 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.)