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

Reply via email to