我使用 spring 和 hibernate 作为我的数据访问层 我想获得一些关于如何构建我的单元测试以测试 hibernate 是否有效地插入到子表中的指导(父 hibernate 映射具有全部级联)。 据我所知,我不应该混合 dao 的单元测试。所以假设我正在测试父 DAO 方法 saveWithChild:
public void testSaveWithChild() {
Child c1 = new Child("prop1", "prop2", prop3);
Child c2 = new Child("prop4", "prop4", prop3);
Parent p = new Parent("prop6","prop7");
p.addChild(c1);
p.addChild(c2);
Session session = MysessionImplementation.getSession();
Transaction tx = session.begingTransaction();
ParentDAO.saveWithChild(p);
tx.commit();
Session session1 = MysessionImplementation.getSession();
//now it is right to call child table in here?
Child c1fromdb = (Child)session1.get(ChildClass.class,c1.getID());
Child c2fromdb = (Child)session1.get(ChildClass.class,c2.getID());
//parent asserts goes here
//children asserts goes here.
}
我不知道,但我觉得这样做不舒服。有没有更好的方法? 你将如何检查这些东西?谢谢阅读。 ;)
最佳答案
你可以改为:
public void testSaveWithChild() {
Child c1 = new Child("prop1", "prop2", prop3);
Child c2 = new Child("prop4", "prop4", prop3);
Parent p = new Parent("prop6","prop7");
p.addChild(c1);
p.addChild(c2);
Session session = MysessionImplementation.getSession();
Transaction tx = session.begingTransaction();
ParentDAO.saveWithChild(p);
tx.commit();
Session session1 = MysessionImplementation.getSession();
Parent p2 = session1.get(ParentClass.class,p.getID());
// children from db should be in p2.getChildren()
}
这样,至少您不会混合 DAO。
关于java - 测试 hibernate 父/子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1234053/