Niclas Hedhman wrote:
2009/10/2 Krzysztof Białek <[email protected]>:
I'm considering if it is possible to use Qi4j for modelling business logic
when the persistence is done by relational database which exposes only
stored procedures.
The conditions are as follows:
1. I don't know the schema and have no access to the tables.
2. I can only call the stored procedures.
3. Typically there are CRUD SPs available plus some specialized SPs for
fetching filtered data.
4. Business logic is located only in Java application.
I'm not going to implement such application at the moment but I think that
this impedance mismatch might become an obstacle for Qi4j adoption in many
(huge) companies.
If you on top of that add the SPs that does the updates, and you have
the complete picture. Ok?
1. Reuse existing EntityStore implementation - I don't know which one should
I pick. Maybe QRM?
2. Write dedicated EntityStore implementation.
3. Use database as a regular service.
From my own experience, when SPs enter the picture the uniformity
tends to disappear, and generic interfacing solutions become near
impossible, so I think the EntityStore route will in most cases be
hopeless.
I think 3. is the your preferred choice. Your domain model creates an
anticorruption layer around the SP, which is available to the domain
model. Some of that AC could potentially be generic, so that heaps of
boiler-plate code won't be needed to write.
Exactly.
Now, compare that with the "competition", like Hibernate... I am no
Hibernate expert, but I have a hard time imagining the possibility of
attempting to map Hibernate against randomly organized SPs.
Especially, since Hibernate caching will probably be totally buggered,
since the update in the SP can reach "any data", making it impossible
for Hibernate (or any similar technology) to invalidate the caches.
I did try to do this some time ago but it's a dead end.
Caching might be a important aspect in a Service oriented approach as
well, but since you will be in charge of the cache implementation, you
know how to tailor it to do proper cache invalidations, whereas in
Hibernate, such attempt is probably foolish.
Caching is not necessary at the moment.
Does this answer your questions?
Yes, thanks a lot.
Cheers.
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev