Diego, I'm sorry. I must have turned my brain off after reading "you could
have an interface..." in you first reply. I thought you were suggesting to
have IHaveNotes mapped and all implementations mapped as subclasses, and
single table Notes would then reference IHaveNotes. That was the only
mapping I could come up with and I assumed you were suggesting the same.

This is your original suggestion:
> - Note is a component type, there is one table per Notes collection
> - Note is an entity, there is one table for the Notes and a many-to-many
> table per each collection, mapped with cascade="all-delete-orphan"
and I don't understand it very well since my knowledge in this area is very
limited.
1. I haven't used Component before, would you care to explain exactly how to
implement this?
2. I don't understand the need for many-to-many; a single Note cannot be
attached to multiple entities. With that in mind, this would become
"one-to-many per each collection" and Notes table would simply reference
IHaveNotes implementations' tables, right? Or am I missing something? (I was
going to mention performance issues again, but remembered your point #1 and
got scared :))

I only glanced at description of <any>, but if I my assumptions about it are
correct, it would allow me to attach a note to anything, I could still have
IList<Note> where I needed it and navigate Notes via IHaveNotes and changes
to the model would be slightly easier to implement (i.e. I wouldn't have to
change the model, the db and the mappings to add or remove an IHaveNotes
implementation. Just implement the interface and add the type to <any>). Am
I wrong about that?

I am really thankful for the time you spent helping me with this, and ask
you to spend just a little bit more :)


On Tue, Jul 13, 2010 at 3:18 PM, Diego Mijelshon <[email protected]>wrote:

> Vekaz,
>
> 1. You first have to try a design before deciding for something more
> complicated because of performance issues you can't measure or describe
> 2. There is no inheritance in the proposed model
> 3. <any> has its own problems, and, in this case in particular, I don't
> think it's the best fit, as the relationship would be on the Note side, not
> on the entity, so it's not easy to retrieve all the notes for an entity,
> whereas the other model allows for navigation.
> 4. You write the mappings once (and you can get a tool like ConfORM to do
> most of the heavy lifting), but you use the model in many places. So it's
> the model what needs to be simple and easy to use, not the mappings (which
> are there to abstract the complexity of the relational implementation)
>
>     Diego
>
>
> On Tue, Jul 13, 2010 at 08:44, Vekaz Turković <[email protected]> wrote:
>
>> @Peter
>> Maybe this will help:
>> http://ayende.com/Blog/archive/2006/06/05/NHibernatesAssociationIsCool.aspx
>>  It's a bit dated but I guess it's still relevant.
>>
>> @Diego
>> Nothing in particular, Diego. I don't know much about db/nhib performance,
>> but from what I hear, having as many relationships as that design suggests,
>> on the most frequently used tables, might cause performance issues. And,
>> IIRC, I read somewhere that when working with inheritance queries should be
>> given more thought than 'regular' queries, and that design would have
>> inheritance everywhere. Why chose design that implies more thinking? :)
>> <any> seems much more simple. Again, that's what I remember hearing/reading
>> and isn't necessarily true, so... Feel free to educate me ;)
>>
>> On Tue, Jul 13, 2010 at 8:37 AM, Kenneth <[email protected]> wrote:
>>
>>> Yes, as Fabio wrote, use the <any> tag
>>>
>>> /K
>>>
>>> On Jul 13, 7:37 am, Peter Forstmeier <[email protected]>
>>> wrote:
>>> > Hi all,
>>> > i follow this thread because i'm very interested on the same subject.
>>> > I didn't see any solution right now. Did i miss something.
>>> >
>>> > Peter
>>> >
>>> > On 12 Jul., 13:53, Diego Mijelshon <[email protected]> wrote:
>>> >
>>> > > Uh?
>>> >
>>> > > What performance problem are you worried about exactly?
>>> >
>>> > >     Diego
>>> >
>>> > > On Sun, Jul 11, 2010 at 22:50, Vekaz Turković <[email protected]>
>>> wrote:
>>> > > > Thank you Diego, I was afraid this will end up unanswered :) That
>>> was one
>>> > > > way I considered doing it, but there's also Activities who are,
>>> > > > relationship-wise, the same as notes. Both Notes and Activities
>>> will most
>>> > > > probably hold a lot of data. I am afraid that, with so many
>>> relationships,
>>> > > > performance might become an issue pretty soon. Would it be possible
>>> to use a
>>> > > > denormalized database; Note would hold type and id of the entity it
>>> is
>>> > > > attached to?
>>> >
>>> > > > On Sun, Jul 11, 2010 at 11:43 PM, Diego Mijelshon <
>>> [email protected]>wrote:
>>> >
>>> > > >> This was discussed last month (
>>> > > >>
>>> http://groups.google.com/group/nhusers/browse_thread/thread/973df7dce..
>>> .)
>>> > > >> and it is certainly on topic :-)
>>> >
>>> > > >> In short: the model is simple. Several classes have a collection
>>> of notes
>>> > > >> (or, more precisely, a List, because the order probably matters).
>>> You could
>>> > > >> create an interface (IHaveNotes) to deal with this in your code
>>> and make it
>>> > > >> easy to add/retrieve notes from any entity.
>>> >
>>> > > >> Then, you have at least two possible ways to map this:
>>> > > >> - Note is a component type, there is one table per Notes
>>> collection
>>> > > >> - Note is an entity, there is one table for the Notes and a
>>> many-to-many
>>> > > >> table per each collection, mapped with cascade="all-delete-orphan"
>>> >
>>> > > >> Note that the data implementation should NOT change your model.
>>> It's
>>> > > >> always an IList<Note>.
>>> >
>>> > > >>     Diego
>>> >
>>> > > >> On Sun, Jul 11, 2010 at 08:01, moohzor <[email protected]> wrote:
>>> >
>>> > > >>> Hi,
>>> >
>>> > > >>> This isn't strictly nhibernate related, but I thought this would
>>> still
>>> > > >>> be the right place to ask.
>>> >
>>> > > >>> I have a Note entity, related to almost all other entities (you
>>> can
>>> > > >>> attach a note to pretty much anything else). All these entities
>>> have a
>>> > > >>> property to hold a collection of notes (but notes don't have to
>>> have
>>> > > >>> reference to the entity they're related to). I don't know how to
>>> best
>>> > > >>> model this in the database and map in hbm. How would you do this?
>>> >
>>> > > >>> Thanks in advance.
>>> >
>>> > > >>> --
>>> > > >>> You received this message because you are subscribed to the
>>> Google Groups
>>> > > >>> "nhusers" group.
>>> > > >>> To post to this group, send email to [email protected].
>>> > > >>> To unsubscribe from this group, send email to
>>> > > >>> [email protected]<nhusers%[email protected]>
>>> <nhusers%[email protected]<nhusers%[email protected]>
>>> ­>
>>> > > >>> .
>>> > > >>> For more options, visit this group at
>>> > > >>>http://groups.google.com/group/nhusers?hl=en.
>>> >
>>> > > >> --
>>> > > >> You received this message because you are subscribed to the Google
>>> Groups
>>> > > >> "nhusers" group.
>>> > > >> To post to this group, send email to [email protected].
>>> > > >> To unsubscribe from this group, send email to
>>> > > >> [email protected]<nhusers%[email protected]>
>>> <nhusers%[email protected]<nhusers%[email protected]>
>>> ­>
>>> > > >> .
>>> > > >> For more options, visit this group at
>>> > > >>http://groups.google.com/group/nhusers?hl=en.
>>> >
>>> > > >  --
>>> > > > You received this message because you are subscribed to the Google
>>> Groups
>>> > > > "nhusers" group.
>>> > > > To post to this group, send email to [email protected].
>>> > > > To unsubscribe from this group, send email to
>>> > > > [email protected]<nhusers%[email protected]>
>>> <nhusers%[email protected]<nhusers%[email protected]>
>>> ­>
>>> > > > .
>>> > > > For more options, visit this group at
>>> > > >http://groups.google.com/group/nhusers?hl=en.-Zitierten Text
>>> ausblenden -
>>> >
>>> > > - Zitierten Text anzeigen -
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "nhusers" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<nhusers%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/nhusers?hl=en.
>>>
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to