There was a reason that I didn't specify NH Prof out front, it is because I don't think that this is just as useful for users without it.
On Wed, Jan 13, 2010 at 4:59 PM, Fabio Maulo <[email protected]> wrote: > aaaaaaaaaaahhhh you mean for NH-Prof. > Well... after BuildSessionFactory you can throw the Configuration instance. > In that example I'm using Hbm* as information holders. > Perhaps you can ask to the user to give the Configuration instance to > NH-Prof and you can keep those classes inside NH-Prof. > > > 2010/1/13 Ayende Rahien <[email protected]> > >> That really depend on who is doing the inspecting. >> I know that _I_ can't really read the persisters/tuplizers and understand >> what is going on the same way I can from reading the mapping files. >> The idea of keeping that information around, especially since it is going >> to be as a set of lightweight classes, means that we can regenerate the >> mapping files and show the user what he fed into NH. >> >> >> On Wed, Jan 13, 2010 at 4:47 PM, Fabio Maulo <[email protected]>wrote: >> >>> If needed we can "improve" inspection of Persisters, Tuplizers and so >>> on... btw, the "inspection" and usage of those classes is the main work done >>> by NH ;) >>> >>> >>> 2010/1/13 Ayende Rahien <[email protected]> >>> >>>> Oh, I don't want to modify them, I just want to be able to inspect them. >>>> >>>> On Wed, Jan 13, 2010 at 4:23 PM, Fabio Maulo <[email protected]>wrote: >>>> >>>>> The session-factory is using Metadata classes to generate Persisters >>>>> and so on... >>>>> You know... the session-factory is immutable (about mappings)... to >>>>> change a mapping would mean change a lot of things created at >>>>> session-factory-build (all queries for example). >>>>> >>>>> 2010/1/13 Ayende Rahien <[email protected]> >>>>> >>>>> As long as we are doing things this way, can we keep those classes >>>>>> around in the session factory? >>>>>> It would be very useful to be able to access them at some later point >>>>>> in life. >>>>>> >>>>>> >>>>>> On Wed, Jan 13, 2010 at 4:14 PM, Fabio Maulo <[email protected]>wrote: >>>>>> >>>>>>> For sure we can serialize Hbm* to have the XML. >>>>>>> In the code you can see the example in >>>>>>> : MapDslTests.CreateXmlDemo.ShowXml() >>>>>>> >>>>>>> And this is the result of that mapping (readable as written by hand >>>>>>> using NH's conventions): >>>>>>> <?xml version="1.0" encoding="utf-8"?> >>>>>>> <hibernate-mapping xmlns:xsi=" >>>>>>> http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd=" >>>>>>> http://www.w3.org/2001/XMLSchema >>>>>>> " namespace="MapDsl" assembly="MapDsl" >>>>>>> xmlns="urn:nhibernate-mapping-2.2"> >>>>>>> <class name="Animal"> >>>>>>> <id name="Id"> >>>>>>> <generator class="native" /> >>>>>>> </id> >>>>>>> <property name="Description" /> >>>>>>> <property name="BodyWeight" /> >>>>>>> <many-to-one name="Mother" /> >>>>>>> <many-to-one name="Father" /> >>>>>>> <many-to-one name="Zoo" /> >>>>>>> <property name="SerialNumber" /> >>>>>>> <set name="Offspring" order-by="Father"> >>>>>>> <key column="animal_key" /> >>>>>>> <one-to-many class="Animal" /> >>>>>>> </set> >>>>>>> </class> >>>>>>> <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> >>>>>>> <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" /> >>>>>>> </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="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" /> >>>>>>> <property name="Height" /> >>>>>>> <property name="IntValue" /> >>>>>>> <property name="FloatValue" /> >>>>>>> <property name="BigDecimalValue" /> >>>>>>> <property name="BigIntegerValue" /> >>>>>>> <bag name="Friends"> >>>>>>> <key column="human_key" /> >>>>>>> <many-to-many class="Human" /> >>>>>>> </bag> >>>>>>> <map name="Family"> >>>>>>> <key column="human_key" /> >>>>>>> <map-key type="String" /> >>>>>>> <many-to-many class="Human" /> >>>>>>> </map> >>>>>>> <bag name="Pets" inverse="true"> >>>>>>> <key column="human_key" /> >>>>>>> <one-to-many class="DomesticAnimal" /> >>>>>>> </bag> >>>>>>> <set name="NickNames" lazy="false" sort="natural"> >>>>>>> <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> >>>>>>> <class name="User"> >>>>>>> <id name="Id"> >>>>>>> <generator class="foreign"> >>>>>>> <param name="property">Human</param> >>>>>>> </generator> >>>>>>> </id> >>>>>>> <property name="UserName" /> >>>>>>> <one-to-one name="Human" constrained="true" /> >>>>>>> <list name="Permissions"> >>>>>>> <key column="user_key" /> >>>>>>> <list-index /> >>>>>>> <element type="String" /> >>>>>>> </list> >>>>>>> </class> >>>>>>> <class name="Zoo"> >>>>>>> <id name="Id"> >>>>>>> <generator class="native" /> >>>>>>> </id> >>>>>>> <discriminator /> >>>>>>> <property name="Name" /> >>>>>>> <property name="Classification" /> >>>>>>> <map name="Mammals"> >>>>>>> <key column="zoo_key" /> >>>>>>> <map-key type="String" /> >>>>>>> <one-to-many class="Mammal" /> >>>>>>> </map> >>>>>>> <map name="Animals" inverse="true"> >>>>>>> <key column="zoo_key" /> >>>>>>> <map-key type="String" /> >>>>>>> <one-to-many class="Animal" /> >>>>>>> </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> >>>>>>> <subclass name="PettingZoo" extends="Zoo" /> >>>>>>> <class name="StateProvince"> >>>>>>> <id name="Id"> >>>>>>> <generator class="native" /> >>>>>>> </id> >>>>>>> <property name="Name" /> >>>>>>> <property name="IsoCode" /> >>>>>>> </class> >>>>>>> </hibernate-mapping> >>>>>>> >>>>>>> >>>>>>> 2010/1/13 Richard Brown (gmail) <[email protected]> >>>>>>> >>>>>>>> > The usage of Hbm* is more like a joke and will give us >>>>>>>> the ability to see the XML. >>>>>>>> >>>>>>>> Can we re-serialise the Hbm* classes back into XML? (If so, then >>>>>>>> definitely keep using them). >>>>>>>> >>>>>>> >>>>>>>> >>>>>>>> > In both cases what we should talk about is the API: >>>>>>>> >what I have used in the post is a "hbm-xml-mimic" style and, IMO, >>>>>>>> it is the best way for various reasons... >>>>>>>> >>>>>>>> I'm happy with the example shown ... I suspect I'd need to use it in >>>>>>>> anger for a while to have anything more concrete to say. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Fabio Maulo >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Fabio Maulo >>>>> >>>>> >>>> >>> >>> >>> -- >>> Fabio Maulo >>> >>> >> > > > -- > Fabio Maulo > >
