Jonas, Awesome! i look forward to digging into this stuff!
Best wishes, --greg On Tue, Jun 9, 2009 at 6:18 AM, Jonas Bonér <jbo...@gmail.com> wrote: > > Hey guys. > > I have hacked together an early draft of the JTA transaction stuff. > > I have wrapped it up in a monad. Here are some examples of usage: > > for { > ctx <- TransactionContext.Required > entity <- updatedEntities > if !ctx.isRollbackOnly > } { > // transactional stuff > ctx.getEntityManager.merge(entity) > } > > val users = for { > ctx <- TransactionContext.Required > name <- userNames > } yield { > // transactional stuff > val query = ctx.getEntityManager.createNamedQuery("findUserByName") > query.setParameter("userName", name) > query.getSingleResult > } > > If you don't like the monadic approach you can just use the high-order > functions: > > TransactionContext.withTxRequired { > ... // REQUIRED semantics > > TransactionContext.withTxRequiresNew { > ... // REQUIRES_NEW semantics > } > } > > I have implemented the same semantics as used in the EJB spec. > Required, RequiresNew, Mandatory, Supports, Never. All these are > monadic objects in the TransactionContext object. > I don't have a webapp to try this out, so I would be happy to get all > kinds of feedback, but API wise and bug reports or fixes. > > This API is hooked into Derek's Scala-JPA stuff. I had my own impl of > this but replaced it with Derek's work. > > Derek, > please go through the integration to see if I have done it correctly, > and where things code be improved. > > All committers, > feel free to hack and change this code anyway you want. > > The code is in a branch (wip-jta-jonas), you can find it here: > > http://github.com/dpp/liftweb/tree/3783b9e2200cc57dd72baa1bd8cabdb1365ee923/lift-jta > > Check the ScalaDoc (or the source) for the documentation on usage, > semantics etc. > Also see the README for configuration in persistence.xml etc. > > Currently it is hard-coded to use the Atomikos Transaction library and > Hibernate JPA, that would have to be configurable + some other options > as well. See the TODOs in the code. > > As I said, this needs feedback and testing. Thanks. > > -- > Jonas Bonér > > twitter: @jboner > blog: http://jonasboner.com > work: http://crisp.se > work: http://scalablesolutions.se > code: http://github.com/jboner > > > > -- L.G. Meredith Managing Partner Biosimilarity LLC 1219 NW 83rd St Seattle, WA 98117 +1 206.650.3740 http://biosimilarity.blogspot.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---