0

次の 2 つのオブジェクトがあるとします。

@NodeEntity  
class Foo  
{
   @GraphId   
   long id;  
   @RelatedTo(Bar.class,direction=Direction.BOTH, type="BAR")  
   Set<Bar> bars= new HashSet<Bar>();    
   @Indexed  
   String name;
}  

@NodeEntity  
class Bar
{
   @GraphId   
   long id;  
   @RelatedTo(Foo.class,direction=Direction.BOTH, type="Foo")  
   Set<Foo> foos= new HashSet<Foo>();    
   @Indexed  
   String name;
}    

次の永続性レベルのコードは非常に遅いです (永続化が遅いごとに 5 ~ 20 秒)。

@Service  
class Persister  
{  
   @Autowired  
   Neo4JTemplate template;    
   @Autowired  
   FooRepository fooRepo;    
   @Autowired  
   BarRepository barRepo;  
void go()  
{  
    Bar bar = barRepo.findByName("myBar");  
    if(null != bar)  
    {    
        bar.getFoos().addAll(fooRepo.readAll());    
        return bar;  
    }
     template.save(bar);  
 }    
}

interface BarRepository extends Repository<Bar>  
{  
     Bar findByName(String name);  
}
4

2 に答える 2

0

にいくつの foo を追加していbarますか?

シンプルなマッピングまたは高度なマッピングを使用していますか?

そうしないと、追加されたエンティティごとに何千もの小さなトランザクションが作成されます@Transactionalgo()(詳細モードでは、コードが変更を保存しないシンプル モードでは。)

于 2013-04-11T07:16:19.893 に答える
0

Neo4j REST インターフェイスを使用していますか? もしそうなら、私のこの投稿は手がかりを提供するかもしれません - spring-data-neo4j で @MapResult を使用したパフォーマンス

于 2013-04-10T12:48:29.460 に答える