Have you looked into Spring's transaction management?
Gregg D Bolinger wrote:
I actually talked about this approach with a colleague just last night. We are using a singleton for our daoManager so this would work perfectly, I think. I'll try it out and let you know.
On 5/4/05, Clinton Begin <[EMAIL PROTECTED]> wrote:
Oops....forgot to mention another pattern...
One thing you can do is have a BatchDAO which basically just defines two methods: startBatch and endBatch. Then you could do:
daoManager.startTransaction() batchDao.startBatch() someDao.insert() someOtherDao.update() anotherDao.delete() batchDao.endBatch() daoManager.commitTransaction()
That would give you the flexibility of batching in some cases, but not all. You could even delegate the call to daoManager.startTransaction() and batchDao.startBatch() to a base service method, so you wouldn't always have to call both. I typically put such methods in around advice or just a simple dynamic proxy at my service layer.
Cheers, Clinton
On 5/4/05, Clinton Begin <[EMAIL PROTECTED]> wrote:
That is actually an option. I thought about adding that in 2.0, and IIRC
it wouldn't be hard to add.
Of course, you'd have to live with the challenges of what basically
amounts to a write cache. That is, in this scenario:
start TX insert into PEOPLE select from PEOPLE end TX select from PEOPLE
...the result of the first insert would not be seen by the first select,
but would be seen by the second.
Cheers, Clinton
On 5/4/05, Gregg D Bolinger < [EMAIL PROTECTED]> wrote:
Well, my approach won't work. You can't get to the startBatch from
the service. DaoManager only handles transactions. SqlMpa handles
batching. So the batches have to be done in the DAO which makes it
impossible to batch more than one DAO.
What would be nice is if iBatis just batched transactions by default.
On 5/4/05, Clinton Begin < [EMAIL PROTECTED]> wrote:
Your approach sounds good. I wouldn't try to overcomplicate this.
Cheers, Clinton
On 5/2/05, Gregg D Bolinger <[EMAIL PROTECTED] > wrote:
I am using iBatis SqlMap and iBatis DAO. I am trying to look into doing batch inserts/updates/delete within a single transaction for
multiple DAO's. So should I create a Service that just handles my
batches and has an instance of each DAO that it needs, or is there a
different way? Anyone have any tips or hints on doing this?
Thanks.