On 9 November 2015 at 19:11, Cesar Lugo <cesar.l...@sisorg.com.mx> wrote:

> Dan, this statement you made cached my attention,



s/cached/caught


> as it might help reduce foreign keys and make the application more
> maintainable:
>

It doesn't reduce them, but it does move them out of the "child" table and
into the join table.




>
> "I prefer to use a join table for unidirectional, but FK for
> bidirectional; that way the database tables model the domain classes quite
> nicely (in particular, with a unidirectional and a join table the child
> table doesn't "know" about its parent)."
>
> How can I implement this with Isis / Datanucleous?
>
>
http://www.datanucleus.org/products/accessplatform/jdo/orm/one_to_many_collection.html





> Cesar.
>
> -----Original Message-----
> From: Dan Haywood [mailto:d...@haywood-associates.co.uk]
> Sent: Friday, November 6, 2015 2:03 AM
> To: users; David Tildesley
> Subject: Re: Compuond objects
>
> Hi David,
> thanks for chipping in on this thread.  To answer your last question, I
> think I agree very broadly with your analysis.  More detail within...
>
>
> On 5 November 2015 at 20:08, David Tildesley <davo...@yahoo.co.nz> wrote:
>
> > Hi Cesar,
> > I think you are saying you currently have :
> >
> > Business - ------> 1..* BusinessLocation Where one way navigation.
> > Whereas in the first use case you want two way navigation so it looks
> > like
> > this:
> > Business 1 <--------> 1..* BusinessLocation
> >
>
>
>
>
> > So if you have a BusinessLocation "in focus" then it is associated to
> > single Business. This two way navigation between objects has always
> > been an "expensive thing" to build - hence it is normally avoided
> > unless the tradeoff suggests it should be done - but maybe ISIS makes
> this easier.
> >
>
> With JDO/DataNucleus, bidirectional relationships are no more difficult
> than unidirectional.  With both bidirectional and undirectional, DN
> supports either using a join table to hold the tuples between parent/child,
> or alternatively a more traditional FK in the child.  I prefer to use a
> join table for unidirectional, but FK for bidirectional; that way the
> database tables model the domain classes quite nicely (in particular, with
> a unidirectional and a join table the child table doesn't "know" about its
> parent).
>
>
>
> > But it sounds like you want a view which consolidates the information
> > from one graph instance of the above into a single "form". So I
> > believe the correct answer is yes: that is what the View Model is for.
> > In terms of update behaviour - you need to add the operation on the
> > View Model that explicitly sets the values on the domain object graph
> > and persists them - I would suggest a single operation on Business for
> > that purpose because Business should know about it's BusinessLocations
> > - you pass the user values in including the BusinessLocation.id
> > because Business has to know which BusinessLocation to update.
> > Put all your View models in a separate package - they are not part of
> > the domain. Make sure all the domain behaviour belongs to the domain
> > objects and doesn't leak out into View objects. Never reference a View
> > Model from the Domain Model the dependency should be View --> Domain
> > and never the other way around. Domain is stable, View is volatile.
> > Just create as many View Models as you need for the UI - after all that
> is what they are for.
>
>
> What you are saying is true in this case, but you'll remember a long
> thread from about a year ago when we enumerated various different "types"
> of view model.  We came to the conclusion that the view model
> implementation is also appropriate for what are really domain entities that
> just happen to be persisted externally, eg over a SOAP service.
>
> We express this using the @DomainObject(nature=...) attribute [1]
>
>
>
> > In fact your application may not need to expose any domain objects as
> > naked objects - but then again, there may some user experience
> > downside to that (e.g. having to explicit operation for update).
> > Folk - correct me if I am wrong - I need to catch up with where ISIS
> > is currently at and so having folk correct me is very welcome for my
> education.
> >
>
> As per.  If you're just catching up, check out:
>
> - changes to Isis itself in the release notes [2] ; 1.10.0 is imminent.
> - (non ASF) Isis addons, [3]  - for reusable cross-cutting concerns
> - (non ASF) incode catalog, [4]  - for reusable business functionality
>
>
>
> > Regards,David.
> >
> >
> >
> Thx
> Dan
>
>
> [1]
>
> http://isis.apache.org/guides/rg.html#_rg_annotations_manpage-DomainObject_nature
> [2] http://isis.apache.org/release-notes.html
> [3] http://www.isisaddons.org/
> [4] http://catalog.incode.org/
>
>
>
>
>
> >
> >
> >
> >      On Friday, 6 November 2015 4:16 AM, Cesar Lugo <
> > cesar.l...@sisorg.com.mx> wrote:
> >
> >
> >  Hello. I have the need to create some objects that are compound from
> > some other domain objects (similar to a "view" in a relational
> > database, updatable views). Let's say I have Business with businessId
> > and name properties, 1:n to another entity named BusinessLocation with
> > properties businessLocationId and name and address properties (to keep
> > things simple for now). So, for example, I need to create a new object
> > that is BuisinessLocationView, which contains BuinessLocation.id,
> > BusinessLocation.name, Business.id and Buiness.name . Then, in some
> > cases, I want to use such views like BusinessLocationView as a
> > collection within Business, and as a standalone collection, and also
> > have the ability to update its fields so the corresponding entities
> > are updated with the changes (Business and BusinessLocation), and in
> > some cases even add a new view like BusinessLocationView so it adds a
> > new BusinessLocation.
> >
> >
> >
> > Is there a way to do this? Is that what @ViewModel is for?
> >
> >
> >
> > I would appreciate If you could point me to any sample that might help.
> >
> >
> >
> > Cesar.
> >
> >
> >
> >
> >
> >
> >
> > ---
> > This email has been checked for viruses by Avast antivirus software.
> > https://www.avast.com/antivirus
> >
> >
> >
> >
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
>

Reply via email to