Set czy Collection w deklaracji OneToMany

Set czy Collection w deklaracji OneToMany
P4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 159
0

Dzień dobry, mam pytanie dotyczące deklaracji w definicji encji np. związku OneToMany

u siebie używam Set np.

Kopiuj
 @OneToMany(cascade = CascadeType.ALL, mappedBy = "idNaglowka")
    private Set<Pozycje> pozycjeSet;

na forum tym kilkakrotnie podkreślano, że tak trzeba, jednak przed wyświetleniem danych na stronie JSF w postaci DataTable zmieniam go na listę. Jest to jednak dodatkowa czynność a zależy mi na testach wydajności ? czy ma to jakieś znaczenie, czy użyć lepiej innej deklaracji np. jakiej ? ( Collection lub List )

matt_z
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 56
0

Hej.

W skrócie nie ma to większego znaczenia. Jeżeli chcesz listę, to możesz zamapować kolekcję jako listę i tak będzie pewnie najwydajniej. Jeżeli zamapujesz jako Collection pod spodem i tak będzie najpewniej Set.

FI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 470
1

, jesli dobre zrozumialem to roznica jest

DQ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 141
0

Polecam artykuł: https://vladmihalcea.com/2013/10/16/hibernate-facts-favoring-sets-vs-bags/ . Zgodnie z nim lista będzie szybsza.

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
0

Szybsza nie znaczy lepsza. Autor poleca Set jednak tam gdzie Set pasuje -> "correctness". Jak mamy zbiór 100 elementów to naprawdę wydajność List s Set nie ma znaczenia.
(Miałem przypadek 125 tysięcy elementów i wtedy różnice sa już bardzo widoczne - a przy niektórych zepsutych implementacjach JPA nawet bardzo. Nie ma się co przed czasem jednak martwić, a dodatkowo czytanie 125 tysięcy elementów przez JPA to też zdrowe zwykle nie jest).

P4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 159
0

Dziękuję za odpowiedzi i pomoc.

W moim programie,testy będą miały krótkie listy danych ( w data table ) ale wielu użytkowników pracujących w tym samym momencie.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
0

W przypadku pracy z typowym GUI nie ma to większego znaczenia. Jednakże należy pamiętać o głównych różnicach pomiędzy Set, a List. List uwzględnia kolejność elementów oraz może zawierać duplikaty. Jeżeli nie zależy ci na żadnym z tych elementów, to należy użyć Set. Pozwala to na uniknięcie problemów z duplikatami. Jeżeli jednak zależy ci na kolejności elementów (albo chcesz mieć duplikaty co nie ma większego sensu), to wtedy należy użyć List oraz doposażyć encje w @OrderBy.

P4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 159
0

dzięki

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.