hibernate, pole typu List

0

Witam,
Jak mam w klasie encji pole typu java.util.List i zapisuję sobie tam np ArrayList to skąd hibernate będzie wiedział po odczytaniu że tam jest ArrayList a nie np. LinkedList. Przepraszam jeżeli pytanie jest głupie ale coś się mi misza :(

0

Nie będzie wiedział ponieważ przy odczycie i tak opakuje go w swoje proxy. Tu ważne jest to, że korzystasz z interfejsu. Interfejs pozwala na używanie bez znajomości konkretów implementacji.

0
Koziołek napisał(a):

Nie będzie wiedział ponieważ przy odczycie i tak opakuje go w swoje proxy. Tu ważne jest to, że korzystasz z interfejsu. Interfejs pozwala na używanie bez znajomości konkretów implementacji.

Swoje proxy czyli własna implementacja interfejsu "java.utils.List"? Da się może jakoś skonfigurować żeby przy odczycie był wykorzystany np LinkedList?

0

A po co? Skoro i tak korzystasz z List?

0
Koziołek napisał(a):

A po co? Skoro i tak korzystasz z List?

Różne implementacji interfejsu List różnią się do siebie, chociażby złożonością obliczeniową dla różnych operacji. Chciałbym korzystać z implementacji która będzie najbardziej wydajna w kontekście w jakim będę pracował z pobraną z hibernata listą.

0

Hm... skoro tak to zaproponuję trochę inne podejście. Zamiast używać "gołej listy" obudują w klasę, która będzie udostępniać tylko metody biznesowe, wykonywane na poszczególnych elementach listy. Dodatkowo metodę setList, ktorej będzie używał Hibernate do ustawiania listy pobranej z bazy napisz tak by na podstawie listy od hibernate tworzyła Array/LinkedList czy co tam chcesz. Pamiętaj jednak, że tak utworzona lista wypada z pod zarządzania hibernate i zmiany w jej zawartości będą dłużej obrabiane przez ORM.

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.