Как программно проверить наличие отложенной загрузки - PullRequest
0 голосов
/ 11 января 2012

У меня есть несколько спящих запросов, где я ожидаю, что некоторые объекты загружаются раньше, а другие - ленивыми.Мой текущий подход к проверке загруженности - это измерение времени, необходимого для доступа к свойству.

//Call the method i want to test.
Customer customer = loadCustomerWithProducts();

long start = System.currentTimeMillis();

//Call a method on an object that sould have been eagerly loaded.
customer.getProducts().get(0).getName();

long end = System.currentTimeMillis();
long diff = end - start;

Assert.assertTrue(diff < 50); //Assuming that hitting the database takes longer than 50ms.

Этот подход очень ошибочен, так как тесты не пройдут в зависимости от производительности системы.Есть ли лучший способ?

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Я бы использовал

Hibernate.isInitialized(customer.getProducts())
0 голосов
/ 11 января 2012

Есть два способа:

  1. Убедитесь, что сессия закрыта после вызова вашего метода load, попробуйте получить доступ к коллекции и убедитесь, что она не вызывает исключение отложенной загрузки
  2. Звоните Hibernate.inInitialized(customer.getProducts()).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...