/ / Pregunta sobre el diseño de la clase Hibernate POJO - java, hibernate, orm

Pregunta sobre el diseño de la clase Hibernate POJO - java, hibernate, orm

Estoy aprendiendo hibernación y tengo una pregunta sobre el diseño de mi clase POJO Tengo un destino de clase con pocas propiedades como

private Set<AirTransport> airTransport;
private Set<RoadTransport> roadTransport;
private Set<TrainTransport> trainTransport;

ya que estos son referentes a alguna otra entidadclases, mi pregunta es cuándo buscaré mi clase de destino, no quiero que estas referencias se carguen en la memoria para que puedan buscarlas más adelante cuando el usuario haga clic en cualquiera de los enlaces como (airtransport). lograr de la mejor manera. Estoy cerca de Hibernate, por favor corríjame donde sea que esté equivocado.

Thnaks por adelantado

Respuestas

2 para la respuesta № 1

Esto se llama "carga perezosa". Por defecto, todas las colecciones en hibernación (y JPA) se cargan perezosamente, es decir, no se cargan hasta que se accede a ellas. Entonces, por defecto, su objeto no recuperará todos los datos.

Pero la carga perezosa tiene sus complicaciones. Si intenta acceder a una colección cuando la sesión de hibernación se ha cerrado, se produce una excepción. Y como parece que necesitará las colecciones después de que el usuario realice alguna acción (haga clic en un botón).

Para ese caso tienes dos opciones:

  • cuando el usuario hace clic en el botón, vuelve a cargar la entidad e inicializa la colección deseada. Ya sea por Hibernate.initialize(..) o iterándolo en la vista. Tenga en cuenta que las sesiones normalmente se cierran antes de renderizar la vista, por lo que es posible que necesite OpenSessionInViewFilter

  • No use las colecciones en absoluto. Tienen un comportamiento limitado de todos modos. Uso HQL o la API de criterios para obtener los resultados. Esto le permite tener avisos y no está pensando en problemas perezosos.


0 para la respuesta № 2

Esto se llama Lazy Fetch en el mundo ORM. Lee el tutorial aquí. También es posible que desee leer sobre el patrón relacionado: Abrir sesión en vista