Set czy Collection w deklaracji OneToMany

0

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

u siebie używam Set np.

 @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 )

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.

1

, jesli dobre zrozumialem to roznica jest

0

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

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).

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.

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.

0

dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1