ziarnista POJO Java taki kod może być korzystne, zwłaszcza w kolekcji:Czy dobrą praktyką jest inicjowanie pól wewnątrz obiektu pobierającego jednostki JPA?
class POJO {
private Collection<X> col;
public Collection<X> getCol() {
if (col == null)
col = new SomeCollection<X>();
return col;
}
}
Umożliwia kodu przy użyciu POJO
zadzwonić pojo.getCol().isEmpty()
bez dodatkowego sprawdzenia null, dzięki czemu kod jaśniejsze.
Załóżmy, że klasa POJO
jest jednostką JPA, czy nadal jest to bezpieczne? Przez inicjalizację kolekcji od pustej do pustej dane trwałe nie zostaną zmienione, ale wciąż modyfikujemy obiekt, a zatem dostawca trwałości może wywoływać pewne skutki uboczne po wypłukaniu kontekstu utrwalania. Co ryzykujemy? Przenośność może?
Dzięki, tego właśnie szukałem - ostrzeżenia od kogoś, kto został spalony. Miałem przeczucie, że może być źle, tylko chciałem się upewnić, że nie fantazjowałem. – MaDa
pewnie. Skończyło się na tym, że spędziliśmy 2 dni na śledzeniu, gdzie obiekt się brudził. To było dość bolesne. – digitaljoel