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
