[hibernate-dev] SynchronizationRegistry: expose read (lookup) operations?
Jonathan Halliday
jonathan.halliday at redhat.com
Wed Oct 25 11:37:52 EDT 2017
right, a lot of JTA works on the 'tx bound to thread' approach and it's
a right pain in async I/O thread pooled environments like vert.x That's
one of the reasons why sticking a get/put api on the Transaction
instance abstraction instead may make more sense, though I'm guessing
your SynchronizationRegistry is instance per tx rather than a singleton
like the JTA one is, so it may not make much difference which object
carries the functionality for your case?
Jonathan.
On 25/10/17 16:25, Steve Ebersole wrote:
> Also, unless I am mistaken `TransactionSynchronizationRegistry#put`
> works on the principle that the "current transaction" is associated with
> the current thread. I absolutely want to stay away from that as an
> assumption here. It simply does not hold true in the JDBC txn case.
>
> On Wed, Oct 25, 2017 at 10:24 AM Steve Ebersole <steve at hibernate.org
> <mailto:steve at hibernate.org>> wrote:
>
> Jonathan, we aren't going to be exposing this or using this
> via TransactionSynchronizationRegistry. Your comment about a
> "dummy" in the JDBC txn case is exactly why. We already have such
> an abstraction : SynchronizationRegistry
>
> On Wed, Oct 25, 2017 at 10:22 AM Steve Ebersole <steve at hibernate.org
> <mailto:steve at hibernate.org>> wrote:
>
> Yes that would work for me, but thinking about the
> implementation it
> implies you'd need to hold on to both a Set and a Map, and
> then we'd
> be exposed to silly usage like people adding the same
> synchronization
> twice in two different ways?
>
>
> Does it? Nothing in the SPI requires us to store things in any
> specific way. E.g. we can keep just a Map - when we are passed
> a KeyableSynchronization we'd use that key, when we are passed a
> non-KeyableSynchronization Synchronization we'd generate one
> ourselves.
>
> And we cant stop people from every conceivable "silly usage".
> At some point we are professional developers and should be able
> to do the non-silly things ;)
>
> And as far as your "register the thing twice" worry...
> rhetorically, what stops them from calling:
>
> reg.register( "abc", MySync.INSTANCE )
> reg.register( "123", MySync.INSTANCE )
>
> Nothing.
>
>
> I'd rather expose a single consistent way: having to make up
> an id
> doesn't seem too inconvenient considering it's an SPI.
>
>
> Well, again, I don't see how KeyableSynchronization is a
> "inconsistent" approach. In fact out of the 2, it is my preferance.
>
--
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander
More information about the hibernate-dev
mailing list