Традиционно мы стараемся избегать LazyInitializationException
с. Однако мне нужно временно позволить им быть брошенными. Вот псевдокод того, что я пытаюсь сделать:
Session session = ...;
Customer customer = (Customer) session.get(Customer.class, 56);
// All eagerly fetched data is now in memory.
disconnectSession(session);
// Attempts to access lazy data throw LazyInitializationExceptions.
// I want to take advantage of this fact to *only* access data that
// is currently in memory.
magicallySerializeDataCurrentlyInMemory(customer);
// Now that the in-memory data has been serialized, I want to re-connect
// the session.
reconnectSession(session);
Метод magicallySerializeDataCurrentlyInMemory
рекурсивно пытается сериализовать в памяти данные customer
и связанных с ним объектов, поглощая на этом пути LazyInitializationException
s.
Попытка # 1: session.disconnect
/ session.reconnect
В этой попытке я использовал этот шаблон:
Connection connection = session.disconnect();
magicallySerializeDataCurrentlyInMemory(customer);
session.reconnect(connection);
К сожалению, это не бросило LazyInitializationException
с.
Попытка № 2: session.close
/ session.reconnect
В этой попытке я использовал этот шаблон:
Connection connection = session.close();
magicallySerializeDataCurrentlyInMemory(customer);
session.reconnect(connection);
К сожалению, это session
стало бесполезным после session.reconnect(connection)
.
Как я могу временно сила LazyInitializationException
с?