On Sat Aug 13 09:47:22 2011, John Huss wrote:
Is it possible to use ROP (serialized data objects) and regular data objects at 
the same time?  In EOF each editing context is backed by a different object 
store and the remote objects have a special remote object store.  As long as 
the two types of objects are separate you can use both at once.

It works like this:

DB (tier 1) ---> Server application (tier 2) --> Client application (tier 3)

So the ROP objects exist only on tier 3 (which might be a J2EE app, Swing client application, etc) and the regular server objects on tier 2. There is no cross over: when you commit in tier 3, the corresponding objects appear on tier 2. The two types of entity classes actually are in different packages so they are quite separate to each other. Normally the link between tier 2 and tier 3 is some sort of network connection: Cayenne uses the Hessian library to serialise objects (even objects which aren't serialisable!) so they can be transported easily over a connection. In my case I use Jetty.

Now it is possible to run tier 2 and tier 3 within the same application, faking the connection between the two. In fact one of my developers is doing that right now in order to make running test suites easier in a combined application rather than as server/client.

For those people unfamiliar with this 3 tier structure, an advantage is that the third tier doesn't talk to the database directly. That means that the server can implement any sort of business logic you want. For example, the client app might save a new record, but the server application has the listeners in place to create audit trail records, perform additional server-side validation, etc. Not only do you move processing load off the server, but you don't have to trust the client application with a write password to the whole database. This applies whether you are running J2EE, desktop applications, or whatever.

I think that Andrey has considered merging the ROP object classes with the regular server entity classes, and that would make sharing code (eg. validation) much easier between the two. However that hasn't happened yet and the object classes, and the context class is quite different. I am not sure whether Andrey is still working on that code or how hard it might be.

--
-------------------------->
Aristedes Maniatis
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A

Reply via email to