[
https://issues.apache.org/jira/browse/ODE-704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12840702#action_12840702
]
Aaron Anderson commented on ODE-704:
------------------------------------
Hi Jeff,
Thanks for the pointers on helping me get started on this task. I have setup a
github project and created a fork of your JPA branch. I have made some progress
with separating the JPA and hibernate code apart based on your initial effort
and I also have started to attempt to unify the JPA DAO patterns used in the
DAO and bpel-store modules. I had a few questions and I was hoping you could
provide me some guidance on them.
1) Maven modules - To prevent module proliferation I was thinking that the DAO,
store, and scheduler implementations could be stored in the same module per
implementation. For example,
ode-dao - contains new generic DAO ConnectionFactory interface(s) and the
existing core DAOConnection interfaces
dao-jpa - contains all the JPA entities, including dao, store, and soon to be
scheduler. The store and scheduler implementations would still be in different
packages and persistence units.
dao-hibernate - contains all the hibernate entities, including dao, store, and
soon to be scheduler. Includes factory implementation classes that implement
generic interfaces in ode-dao
dao-jpa-ojpa - contains factory implementation classes that implement generic
interfaces in ode-dao. The factory primes the JPA environment with the the
openjpa specific properties
dao-jpa-hibernate - same as dao-jpa-ojpa but for hibernate
bpel-store - contains factory implementation classes that implement generic
interfaces in ode-dao and the existing store connection code.
bpel-scheduler-simple - the same as bpel-store with new connection based DAO
il-common - OdeConfigProperties updated to include new factory class lookups
for the store and scheduler implementations
What do you think of this approach?
2) OpenJPA class enhancements - OpenJPA requires that the classes be annotated
in order to be utilized unless a JavaEE container is used or their runtime
agent is utilized. The problem is that these class enhancements would interfere
with a different JPA implementations and duplicating the entities per
implementation module would lead to too much redundancy. To address this I took
the approach of extending the dao-jpa maven pom to duplicate the target
classes, run the enhancer on the copy, and then run the maven-jar plugin again
with a classifer of openjpa so that two versions of the module will be stored
in the maven repo. Is this a valid approach?
3) When examining the ode 2.0 source code I found a lot of references to JDBC
datasources and transaction managers in the DAO classes. To me the DAO
abstraction classes should be storage implementation agnostic. I would like to
refactor the connection interfaces to use the same interface and introduce a
common DAO strategy.
//new common interface
public interface DAOConnectionFactory<C> {
C getConnection();
<E> void init(OdeConfigProperties p, E envCtx);
void shutdown();
}
//Module specific DAO access implementation (dao, store, scheduler, etc)
public interface BpelDAOConnectionFactory extends
DAOConnectionFactory<BpelDAOConnection> {
BpelDAOConnection getConnection();
}
//Implementation specific factory that can be instantiated by the module using
an OdeConfigProperties lookup
public class BpelDAOConnectionFactoryJPAImpl implements
BpelDAOConnectionFactory {
public BpelDAOConnection getConnection() {
return new BpelDAOConnectionJpaImpl();
}
public <JDBCContext>void init(OdeConfigProperties p, JDBCContext envCtx) {
}
public void shutdown() {
}
}
//This is a implementation specific environment context that the runtime the
ode is executed in can pass opaquely through the DAO layer into the
implementation.
public class JDBCContext {
DataSource getDataSource(){}
TransactionManager getTransactionManager(){}
}
What are your thoughts on this approach?
Regards,
Aaron
> clean up the JPA module, supports botht openJPA and Hibernate
> -------------------------------------------------------------
>
> Key: ODE-704
> URL: https://issues.apache.org/jira/browse/ODE-704
> Project: ODE
> Issue Type: Improvement
> Components: BPEL Runtime
> Affects Versions: 1.3.3
> Reporter: Jeff Yu
> Assignee: Jeff Yu
> Fix For: 2.0
>
>
> see this thread for detail.
> http://mail-archives.apache.org/mod_mbox/ode-dev/200911.mbox/%[email protected]%3e
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.