我正在构建一个使用顶点和边缘对象的图算法,并使用hibernate持久化。在检查边缘以发现它们是否处于状态时(以及另一个“识别”顶点的代码应该做类似的事情),这段代码需要做大量工作。
类:
Vertex(long id, String name);
Edge(long id, Vertex v, Vertex w, boolean visited);
VertexDAO(Vertex vertex);//persistence class for vertex implemented with hibernate
EdgeDAO(Edge edge);//persistence class for vertex implemented with hibernate
我有两个选项来设置/更新我的图表中的访问边缘:
查询DAO对象以检索(取消)访问过的边(通过休眠)并根据需要设置它们; 问题:我不知道这些操作的成本,以及当图形变大时它是否有效;在我看来,这不是最好的解决方案;
测试我自己的一组边缘以检索所有(未)访问过的边缘。 问题:可能我的searh算法比hibernate算法差,并且如果hibernate在内存中有效地管理对象并且不需要持久或开销那么多,它可能表示与之前的替代方案相比性能下降。
你有这方面的经验或小费吗?谢谢你的帮助。