nhibernate-hispano  

[NHibernate-Hispano] Re: Herencia

Nicolás Marzoni
Mon, 09 Nov 2009 12:55:12 -0800

Muchas gracias Carlos... voy a mirar esos libros que me pasaste.
Saludos.

On 9 nov, 17:45, Carlos Peix <carlos.p...@gmail.com> wrote:
> Hola Nicolas,
>
> Has llegado por el camino rapido a una de las mayores limitaciones de la
> herencia (entre otras muchas).
>
> Lo cierto es que en tu caso, Alumno y Profesor no son subclases de persona,
> son roles que una Persona desempeña ante un cierto contexto.
>
> Por ejemplo, imaginaque que una persona pueda ser alumno y profesor al mismo
> tiempo y que luego pueda dejar de ser uno de los dos. Esto te da la pauta de
> que el ciclo de vida del objeto rol (alumno y profesor) es muy distinto del
> ciclo de vida de la persona (afortunadamente :-)).
>
> Incluso, el rol alumno y el rol profesor deberian contener las propiedades
> relacionadas con estos roles, estas no deberian estar en la clase persona.
>
> Si solo hacemos un analisis estructural la solucion de la herencia funciona
> bien pero rapidamente queda corta cuando agregamos comportamiento al
> analisis.
>
> Dos libros que tratan muy bien el tema son [1] y [2] pero tambien hay buen
> material disponible en [3].
>
> Suerte
>
> [1]http://www.amazon.com/Streamlined-Object-Modeling-Patterns-Implementa...
> [2]http://www.amazon.co.uk/Java-Modeling-Color-UML-Enterprise/dp/013011510X
> [3]http://martinfowler.com/apsupp/roles.pdf
>
> ----------------------------------
> Carlos Peix
>
> 2009/11/9 Nicolás Marzoni <nmarz...@gmail.com>
>
>
>
>
>
> > Hola a todos.
> > Tengo el siguiente problema... hice una aplicación en donde estoy
> > probando y aprendiendo a usar NH.
> > Hasta ahora venía todo bien, pero me encontré con el siguiente
> > problema.
> > Para hacerlo sencillo: Tengo una clase Persona. Alumno y Profesor
> > heredan de persona. Puedo crear los objetos de Alumno y Profesor sin
> > ningun problema, siempre y cuando la Persona no exista.
> > Es decir, al crear el Alumno me crea el registro en la tabla personas
> > y en la tabla alumnos.
>
> > Mi pregunta es: ¿Como puedo crear un Alumno o Profesor, que hereden de
> > una persona que ya esté creada?
>
> > Les dejo mi archivo de mapeo.
>
> > <?xml version="1.0" encoding="utf-8" ?>
> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> > namespace="Entidades" assembly="Entidades">
>
> >  <class name="Persona" table="Persona" lazy="false">
>
> >    <id name="Id" column="Id" unsaved-value="0">
> >      <generator class="native" />
> >    </id>
>
> >    <property name="Nombre">
> >      <column name="Nombre" not-null="true" />
> >    </property>
>
> >    <property name="Apellido">
> >      <column name="Apellido" not-null="true" />
> >    </property>
>
> >    <joined-subclass table="Alumnos" name="Alumno">
> >        <key column="Id"/>
> >        <property name="Matricula"/>
> >    </joined-subclass>
>
> >    <joined-subclass table="Profesores" name="Profesor">
> >        <key column="Id"/>
> >        <property name="Matricula"/>
> >    </joined-subclass>
>
> >  </class>
> > </hibernate-mapping>
>
> > Muchas Gracias.
> > Nicolás- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
NHibernate-Hispano@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---