Attendees: Matthew Adams, Michael Bouschen
Agenda:
1. Embedded object and evict
Looks like JDOHelper.isPersistent(embedded) should return false after
the embedded was evicted, because with evict th embedded hast lost the
connection to its owner and cannot e stored anymore. Questions:
- What does it mean that an embedded transitions to hollow on evict?
- Do we need a new life cycle state representing an orphaned embedded
instance or is transient the right life cycle state?
- Do we need a new method on PM and/or PMF allowing to figure out
whether a field is embedded:
isEmbedded(Class owner, String Field) and
isEmbedded(java.lang.reflect.Field field)
alternate method name: isEmbeddedField
More email discussion needed.
2. Fetch notifications
Concept of use cases seems useful in order to tune the application w/o
the need to change the actual code. In the corresponding email thread
Andy gave a list of possible PM and Transaction properties that can set
as part of a use case (PM: "multithreaded", "detachAllOnCommit",
"IgnoreCache", "queryTimeoutInMillis", "copyOnAttach", "fetchPlan",
Transaction: "optimistic", "nontx-read", "nontx-write", "restoreValues",
"retainValues", "txnIsolationLevel", "txnRollbackOnly") plus vendor
specific extensions. The API to specify a use case would be
PM.setUseCase(String name) and PM.getUseCase(). Setting a new use case
removes any previous use case, passing null to setUseCase stops using
the current use case.
Comparing the FetchListener and the StateManagerListener approach from
Matthew's proposal (see email with subject "Fetch notifications"), the
StateManagerListener is the more general approach.
The StateManagerListener and support for use cases are orthogonal and
not mutually exclusive.
3. Other issues: no
Action Items from weeks past:
[Feb 13 2007] AI Craig update the spec and make clear the relationship
between Query.cancel and multithreading.
[Nov 30 2007] AI Christiaan propose more details on Update/copy by query
for post-JDO 2.1.
[May 25 2007] AI everyone download the Grails demo from grails.org and
check it out. Also look at Grails/Groovy ExpandoMetaClass that has the
magic to avoid reflection and enhancement.
[May 25 2007] AI Matthew Adams prepare a proposal with just the basics
of schema synchronization with jdo and orm metadata.