gpt4 book ai didi

java - 测试 hibernate 父/子关系

转载 作者:行者123 更新时间:2023-11-29 09:26:11 26 4
gpt4 key购买 nike

我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com