[hibernate-dev] [OGM] Transactions in Neo4j datastore

Gunnar Morling gunnar at hibernate.org
Fri Oct 25 07:40:19 EDT 2013


Hi Davide,

I'm wondering why instead of creating Neo4jJtaPlatform we don't provide the
TransactionManager as retrieved from ORM's JtaPlatform to Neo4j (as we e.g.
do for ISPN)? I find the isNeo4j() code in ogm-core a bit discomforting.

Neo4j seems to allow for this via the TransactionManagerProvider SPI.
Unfortunately one isn't in control of instantiating such providers, though.
So one would have to do some hackery using a static variable, ThreadLocal
or similar to pass in the JtaPlatform. WDYT, would that make sense?

--Gunnar




2013/3/13 Davide D'Alto <daltodavide at gmail.com>

> Well...I don't have alternative at the moment.
>
> I think we could keep it as it is now and wait for some feedback from the
> users.
>
> On Mon, Mar 4, 2013 at 1:17 PM, Emmanuel Bernard <emmanuel at hibernate.org>
> wrote:
> > Do you have an alternative in mind?
> >
> > My understanding is that if you write a Neo4J JtaPlatform, then the
> > transaction will be started:
> >
> > - if the transaction is manually started by the wrapping code
> > - if someone uses Session.beginTransaction() or
> >   EntityManager.getTransaction().begin()
> >
> > You wanted the Neo4J transaction to be started if @Transactional is
> > added to a CDI bean? I'd say that's the job of the Neo4J team to amke
> > sure that one works, no?
> >
> > If we can find a better solution that would be nice but I'm not sure I
> > understand the problem :)
> >
> > Emmanuel
> >
> > On Mon 2013-02-25 15:08, Davide D'Alto wrote:
> >> Hi,
> >> I'm working at the integration between OGM and Neo4j.
> >>
> >> Neo4j is fully transactional and it requires to open a transaction
> >> before the execution of any operation on the DB.
> >> To integrate this mechanism with OGM I've created the class
> >> Neo4jJtaPlatform.java[1] that extends AbstractJtaPlatform and it's
> >> registered using the configuration parameter
> >> hibernate.transaction.jta.platform
> >> If I'm correct, while this solution is working, it requires the
> >> application to manage transactions using the Neo4j transaction
> >> manager. Are there alternatives to this approach?
> >>
> >> The related pull request can be found at
> >> https://github.com/hibernate/hibernate-ogm/pull/132
> >>
> >> Thanks,
> >> Davide
> >>
> >> [1]
> https://github.com/DavideD/hibernate-ogm/blob/2b6588998673bce8a9ccd973f693d7fe091e8c9c/hibernate-ogm-neo4j/src/main/java/org/hibernate/ogm/dialect/neo4j/Neo4jJtaPlatform.java
> >> _______________________________________________
> >> hibernate-dev mailing list
> >> hibernate-dev at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/hibernate-dev
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>


More information about the hibernate-dev mailing list