2015-12-20 3 views
0

Мне нужно только однонаправленное отношение OneToMany, но с точки зрения производительности я хочу спросить, какая лучшая практика ?.Perfomance in Hibernate 4.2 с @OneToMany - однонаправленный против двунаправленного

Я сделал тест с JUnit, и результат с двунаправленной является: 1.9s и однонаправленный код 2.4S, кажется, для однонаправленных требует больше времени

Я использую Hibernate 4.2.21

@Unidirectional 2.4s

Parent.class

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
@JoinColumn(name = "parentuni_id") 
private Set<ChildUni> childs; 

Hibernate: select nextval ('parentuni_seq') 
Hibernate: select nextval ('childuni_seq') 
Hibernate: select nextval ('childuni_seq') 
Hibernate: insert into parentuni (parentuni_name, parentuni_id) values (?, ?) 
Hibernate: insert into childuni (childuni_name, childuni_id) values (?, ?) 
Hibernate: insert into childuni (childuni_name, childuni_id) values (?, ?) 
Hibernate: update childuni set parentuni_id=? where childuni_id=? 
Hibernate: update childuni set parentuni_id=? where childuni_id=? 

@Bidirectional 1.9s

Parent.class

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "parent") 
private Set<Child> childs; 

Child.class

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "parent_id", nullable = false) 
private Parent parent; 

Hibernate: select nextval ('parent_seq') 
Hibernate: select nextval ('child_seq') 
Hibernate: select nextval ('child_seq') 
Hibernate: insert into parent (parent_name, parent_id) values (?, ?) 
Hibernate: insert into Child (child_name, parent_id, child_id) values (?, ?, ?) 
Hibernate: insert into Child (child_name, parent_id, child_id) values (?, ?, ?) 

ответ

0

В Hibernate best practices, он говорит

Предпочитают двунаправленной ассоциации:

  • Однонаправленные ассоциации сложнее запросить. В большом приложении почти все ассоциации должны быть судоходными в обоих направлениях в запросах.

Полезных источники: http://www.javacodegeeks.com/2011/02/hibernate-mapped-collections.html

Надеется, что это помогает.

Смежные вопросы