2012-06-30 12 views
7

Soy nuevo para hibernar. Por favor, ayúdame.¿Necesitamos el mapeo de Hibernate en este escenario?

Tengo 2 tablas llamadas Empleado y País. Necesito guardar al Empleado con el país seleccionado. En mi caso, no obtendré detalles de los empleados y los mostraré en la IU. ¿Debo mantener el mapeo (mapeo onetoone) entre los objetos Empleado y País? ¿No puedo guardar directamente al empleado con el país seleccionado?

¿Puedo hacer lo siguiente en mi objeto de dominio del empleado? En caso negativo, por favor díganos posibles problemas con esto?

@column (name = "CountryId")

privada int CountryId;

+0

Sí, puede hacerlo en su objeto de dominio del empleado. Si no necesita un objeto Country, ¿por qué crear uno? Solo asegúrese de mantener el miembro de datos correcto. ¿Debería ser la identificación del país, o es el nombre o la abreviatura una mejor opción? ¿Debería ser parte de Employee o, quizás más sensato, el objeto Address? – duffymo

+0

¿Por qué almacena empleados si nunca los usa? –

+0

Como otra aplicación necesita detalles de los empleados, la estoy guardando a través de mi aplicación. (He tomado al empleado solo para facilitar su comprensión, no es exactamente empleado) –

Respuesta

1

Sí, puede poner countryId en su objeto de empleado. Pero si no necesita necesita el objeto de país en el futuro, entonces, no tiene ningún sentido para guardar el objeto de país.

Si está desarrollando las cosas para prospectos futuros y puede ser requerido en el futuro pero no ahora, entonces mejor para guardar el objeto del país.

2

Creo que hay un par de opciones aquí.

  1. Puede dejar la primitiva country fuera de su clase de dominio por completo. Si no lo necesita, no hay razón para decirle a Hibernate que lo busque.
  2. Si no tiene la intención de modificarlo en absoluto mapeándolo en su clase de dominio y aplicando la anotación @Transitive puede obtener lo que está buscando. Esto le dice a Hibernate que nada sobre el ID de País necesita persistir en el nivel de la base de datos.

Cualquiera de estos métodos ayuda a garantizar la integridad referencial entre el objeto employee y el ID del país. Aunque recomendaría usar el primero. Si no tiene ninguna razón para necesitar el ID del país, no lo haga en primer lugar.

Si es necesario utilizar el ID de País para una relación en la parte de atrás, me gustaría sugerir asegurándose de que incluye este

@Column(name = "country", insertable = "false", updatable = "false"). 

Esto le permite obtener identificador de país sin temor a lo sobrescriba accidentalmente.

Espero que ayude!

Cuestiones relacionadas