Прежде всего, вам обязательно нужно закрыть сеанс после того, как вы позвонили tx.commit()
.
Если MysessionImplementation.getSession()
возвращает активный сеанс (аналогично SessionFactory.getCurrentSession()
), тогда ваш тест даже не попадет в базу данных, поскольку session1
будет таким же, как session
, и оба потомка все равно будут связаны с ним.
Если MysessionImplementation.getSession()
каждый раз возвращает новый сеанс, вы теряете ресурсы.
Во-вторых, являются ли дети в вашем примере ИСТИННЫМИ детьми (связан ли их жизненный цикл с родителем)? Если это так, у вас вообще не должно быть ChildDAO
(а может и нет), и вы можете иметь или не иметь метод getChildInstance(id)
(как бы он ни назывался) в вашем ParentDAO. Вполне нормально вызывать такой метод (или, если у вас его нет, использовать session.load()
) в ParentDAOTest
, потому что вы тестируете функциональность ParentDao
.
Наконец, имейте в виду, что просто проверить, что детей вставили, недостаточно. Вам также нужно проверить, что они были вставлены с правильным родителем (если ваши отношения родитель-ребенок двунаправлены, вы можете сделать это с помощью метода child.getParent()
или как там это называется в вашем случае). Вам также следует проверить удаление потомков, если это поддерживается вашим дао.