> I agree with John, and will like to add that I don't see the point of a > tool generating code for another tool that generates code.
I do see value in that. FNH is much more readable and editable than ordinary XML. > Is like if the FNH team choose to generate LLLBlGen Pro dsl. > I hope this will be taken as a constructive comment. > > XML in his both representations as raw XML or as HBM* classes is the lowest > common denominator. > See? I read Fabio's blog. > > > 2010/8/12 John Davidson <[email protected]> > > Frans, >> >> Fleunt NHibernate is almost a non-starter as there is no documentation on >> how to use it with VB.Net, if it would even work. XML is a lowest common >> denominator type solution and should always be retained. Higher level >> solutions are great, but not always accessible >> >> John Davidson >> >> >> On Thu, Aug 12, 2010 at 12:51 PM, Frans Bouma <[email protected]> wrote: >> >>> > Same XML please. >>> >>> that's trivial if I define the model like you did in code. >>> >>> > btw Frans, you product is a code generator I can't skip 42 slides >>> because >>> in >>> > the early slides you are describing the domain relations and relational >>> > mapping... >>> >>> no, not the mapping, just the entities and the relationships. I >>> don't define any mapping in that video by hand, nor the DDL SQL. Mappings >>> + >>> table stuff is created by 1 mouseclick using settings to configure what >>> will >>> I end up with. >>> >>> > would be the same than explain that you have a whole application >>> running >>> > starting from "press F5". >>> >>> you wrote classes to start with, I didn't. The classes contain >>> the >>> info used by confORM, I created a model, which produces classes + >>> mappings + >>> DDL SQL, using very few keystrokes btw. >>> >>> But, like I said, let's not end up in a pissing contest :) Being >>> in >>> a rush to get things done a.s.a.p. is never going to end well, so that's >>> not >>> what people should focus on. It's about maintainability etc., and confORM >>> could be a good choice for that as well, I don't want to have that >>> debate, >>> as it's besides the point. The point is: with all the options, is yet >>> another option from the team around NH really helping, or just confusing >>> users? >>> >>> Also, is it or isn't it the future _preferred_ way of doing NH >>> mappings from the point of view of the NH team? (so others have to adapt >>> to >>> confORM, and if they want support xml as well, but that's really not the >>> way >>> to go) >>> >>> FB >>> >>> >>> > >>> > >>> > On Thu, Aug 12, 2010 at 1:11 PM, Frans Bouma <[email protected]> wrote: >>> > >>> > >>> > >>> > > Now that you saw something more about ConfORM I will happy if >>> you >>> > can >>> > answer >>> > > my annoying question. >>> > > Can you show me the equivalent-mapping/procedure using what >>> ever >>> > you want >>> > ? >>> > >>> > >>> > (it's an old video of the alpha build, I'll soon make a >>> new, >>> > more >>> > extensive one with quickmodel and NH. It's for our own framework, >>> but >>> > choosing NH is 2 clicks) >>> > >>> > >>> > >>> http://www.xs4all.nl/~perseus/LLBLGenPro/Videos/LLBLGenProv3.0_QuickM >>> > odel.ht >>> > ml >>> > >>> < >>> http://www.xs4all.nl/~perseus/LLBLGenPro/Videos/LLBLGenProv3.0_QuickModel.h >>> > t ml> >>> > >>> > skip to slide 42, press play >>> > >>> > I know, you start with code, I with the model, same thing. >>> > >>> > FB >>> > >>> > >>> > > >>> > > Thanks. >>> > > >>> > > >>> > > On Thu, Aug 12, 2010 at 12:34 PM, Fabio Maulo >>> > <[email protected]> >>> > wrote: >>> > > >>> > > >>> > > On Thu, Aug 12, 2010 at 11:43 AM, Tom Allard >>> > <[email protected]> >>> > > wrote: >>> > > >>> > > >>> > > "Make everything as simple as possible, but not >>> > simpler." >>> > > -- Albert Einstein >>> > > >>> > > >>> > > >>> > > >>> > > Sure. >>> > > For that reason this ConfORM mapping >>> > > >>> > > >>> > > var orm = new ObjectRelationalMapper(); >>> > > >>> > > orm.TablePerClass<Animal>(); >>> > > >>> > > >>> > > orm.TablePerClass<User>(); >>> > > orm.TablePerClass<StateProvince>(); >>> > > orm.TablePerClassHierarchy<Zoo>(); >>> > > >>> > > >>> > > >>> > > orm.ManyToMany<Human, Human>(); >>> > > orm.OneToOne<User, Human>(); >>> > > >>> > > >>> > > >>> > > orm.PoidStrategies.Add(new NativePoidPattern()); >>> > > is equivalent to this XML mapping >>> > > >>> > > >>> > > <hibernate-mapping >>> > xmlns:xsi="http://www.w3.org/2001/XMLSchema- >>> > > instance" >>> > > >>> > > >>> > > >>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >>> > > >>> > > >>> > > namespace="ConfOrmExample.Domain" >>> > > assembly="ConfOrmExample" >>> > > >>> > > >>> > > xmlns="urn:nhibernate-mapping-2.2"> >>> > > <class name="User"> >>> > > >>> > > >>> > > <id name="Id" type="Int64"> >>> > > >>> > > >>> > > <generator class="native" /> >>> > > >>> > > >>> > > </id> >>> > > <property name="UserName" /> >>> > > >>> > > >>> > > <one-to-one name="Human" /> >>> > > >>> > > >>> > > <list name="Permissions"> >>> > > >>> > > >>> > > <key column="user_key" /> >>> > > >>> > > >>> > > <list-index /> >>> > > <element type="String" /> >>> > > >>> > > >>> > > </list> >>> > > </class> >>> > > <class name="Animal"> >>> > > >>> > > >>> > > <id name="Id" type="Int64"> >>> > > >>> > > >>> > > <generator class="native" /> >>> > > >>> > > >>> > > </id> >>> > > <property name="BodyWeight" /> >>> > > >>> > > >>> > > <set name="Offspring" inverse="true" >>> > cascade="all,delete- >>> > > orphan"> >>> > > >>> > > >>> > > <key column="Mother" /> >>> > > >>> > > >>> > > <one-to-many class="Animal" /> >>> > > >>> > > >>> > > </set> >>> > > <many-to-one name="Mother" cascade="all" /> >>> > > >>> > > >>> > > <many-to-one name="Father" cascade="all" /> >>> > > >>> > > >>> > > <property name="Description" /> >>> > > >>> > > >>> > > <many-to-one name="Zoo" /> >>> > > >>> > > >>> > > <property name="SerialNumber" /> >>> > > >>> > > >>> > > </class> >>> > > <class name="StateProvince"> >>> > > >>> > > >>> > > <id name="Id" type="Int64"> >>> > > >>> > > >>> > > <generator class="native" /> >>> > > >>> > > >>> > > </id> >>> > > <property name="Name" /> >>> > > >>> > > >>> > > <property name="IsoCode" /> >>> > > >>> > > >>> > > </class> >>> > > <class name="Zoo"> >>> > > >>> > > >>> > > <id name="Id" type="Int64"> >>> > > >>> > > >>> > > <generator class="native" /> >>> > > >>> > > >>> > > </id> >>> > > <discriminator /> >>> > > <property name="Name" /> >>> > > >>> > > >>> > > <property name="Classification" /> >>> > > >>> > > >>> > > <map name="Animals" inverse="true"> >>> > > >>> > > >>> > > <key column="Zoo" /> >>> > > >>> > > >>> > > <map-key type="String" /> >>> > > >>> > > >>> > > <one-to-many class="Animal" /> >>> > > >>> > > >>> > > </map> >>> > > <map name="Mammals" inverse="true"> >>> > > >>> > > >>> > > <key column="Zoo" /> >>> > > >>> > > >>> > > <map-key type="String" /> >>> > > >>> > > >>> > > <one-to-many class="Mammal" /> >>> > > >>> > > >>> > > </map> >>> > > <component class="Address" name="Address"> >>> > > >>> > > >>> > > <property name="Street" /> >>> > > >>> > > >>> > > <property name="City" /> >>> > > >>> > > >>> > > <property name="PostalCode" /> >>> > > >>> > > >>> > > <property name="Country" /> >>> > > >>> > > >>> > > <many-to-one name="StateProvince" /> >>> > > >>> > > >>> > > </component> >>> > > </class> >>> > > <joined-subclass name="Mammal" extends="Animal"> >>> > > >>> > > >>> > > <key column="animal_key" /> >>> > > >>> > > >>> > > <property name="Pregnant" /> >>> > > >>> > > >>> > > <property name="Birthdate" /> >>> > > >>> > > >>> > > </joined-subclass> >>> > > <joined-subclass name="DomesticAnimal" >>> extends="Mammal"> >>> > > >>> > > >>> > > <key column="mammal_key" /> >>> > > >>> > > >>> > > <many-to-one name="Owner" cascade="all" /> >>> > > >>> > > >>> > > </joined-subclass> >>> > > <joined-subclass name="Cat" extends="DomesticAnimal"> >>> > > >>> > > >>> > > <key column="domesticanimal_key" /> >>> > > >>> > > >>> > > </joined-subclass> >>> > > <joined-subclass name="Dog" extends="DomesticAnimal"> >>> > > >>> > > >>> > > <key column="domesticanimal_key" /> >>> > > >>> > > >>> > > </joined-subclass> >>> > > <joined-subclass name="Reptile" extends="Animal"> >>> > > >>> > > >>> > > <key column="animal_key" /> >>> > > >>> > > >>> > > <property name="BodyTemperature" /> >>> > > >>> > > >>> > > </joined-subclass> >>> > > <joined-subclass name="Lizard" extends="Reptile"> >>> > > >>> > > >>> > > <key column="reptile_key" /> >>> > > >>> > > >>> > > </joined-subclass> >>> > > <subclass name="PettingZoo" extends="Zoo" /> >>> > > >>> > > >>> > > <joined-subclass name="Human" extends="Mammal"> >>> > > >>> > > >>> > > <key column="mammal_key" /> >>> > > >>> > > >>> > > <component class="Name" name="Name"> >>> > > >>> > > >>> > > <property name="First" /> >>> > > >>> > > >>> > > <property name="Initial" /> >>> > > >>> > > >>> > > <property name="Last" /> >>> > > >>> > > >>> > > </component> >>> > > <property name="NickName" /> >>> > > >>> > > >>> > > <bag name="Friends" cascade="all,delete-orphan"> >>> > > >>> > > >>> > > <key column="human_key" /> >>> > > >>> > > >>> > > <many-to-many class="Human" /> >>> > > >>> > > >>> > > </bag> >>> > > <bag name="Pets" inverse="true" >>> cascade="all,delete- >>> > orphan"> >>> > > >>> > > >>> > > <key column="Owner" /> >>> > > >>> > > >>> > > <one-to-many class="DomesticAnimal" /> >>> > > >>> > > >>> > > </bag> >>> > > <map name="Family" cascade="all,delete-orphan"> >>> > > >>> > > >>> > > <key column="human_key" /> >>> > > >>> > > >>> > > <map-key type="String" /> >>> > > >>> > > >>> > > <many-to-many class="Human" /> >>> > > >>> > > >>> > > </map> >>> > > <property name="Height" /> >>> > > >>> > > >>> > > <property name="BigIntegerValue" /> >>> > > >>> > > >>> > > <property name="BigDecimalValue" /> >>> > > >>> > > >>> > > <property name="IntValue" /> >>> > > >>> > > >>> > > <property name="FloatValue" /> >>> > > >>> > > >>> > > <set name="NickNames"> >>> > > >>> > > <key column="human_key" /> >>> > > >>> > > >>> > > <element type="String" /> >>> > > >>> > > >>> > > </set> >>> > > <map name="Addresses"> >>> > > >>> > > >>> > > <key column="human_key" /> >>> > > >>> > > >>> > > <map-key type="String" /> >>> > > >>> > > >>> > > <composite-element class="Address"> >>> > > >>> > > >>> > > <property name="Street" /> >>> > > >>> > > >>> > > <property name="City" /> >>> > > >>> > > >>> > > <property name="PostalCode" /> >>> > > >>> > > >>> > > <property name="Country" /> >>> > > >>> > > >>> > > <many-to-one name="StateProvince" /> >>> > > >>> > > >>> > > </composite-element> >>> > > </map> >>> > > >>> > > </joined-subclass> >>> > > >>> > > </hibernate-mapping> >>> > > >>> > > Who wrote the XML mapping ? >>> > > >>> > > -- >>> > > Fabio Maulo >>> > > >>> > > >>> > > >>> > > >>> > > >>> > > >>> > > -- >>> > > Fabio Maulo >>> > > >>> > > >>> > > >>> > >>> > > -- >>> > >>> > > 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]> >>> > <mailto: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]> >>> > <mailto:nhusers%[email protected]<nhusers%[email protected]>> >>> . >>> > For more options, visit this group at >>> > http://groups.google.com/group/nhusers?hl=en. >>> > >>> > >>> > >>> > >>> > >>> > >>> > -- >>> > Fabio Maulo >>> > >>> > >>> > >>> > -- >>> > 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]<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.
