Hibernate, implementowanie inrerfejsu Serializable

0

Hej, w jakim celu podczas korzystania z Hibernate należy implementować interfejs Serializable ?

Mam klasę oznaczoną adnotacją @Entity i wszystko (na moje oko :) działą poprawnie, a więc jaki jest sens w implementowaniu interfejsu Serializable ? Dotychczas uzywalem, gdy byla potrzeba zapisu klasy do pliku/odczytu jej z pliku.

Dzięki

0

I tu mniej więcej do tego samego. Interfejs ten służy do oznaczenia klasy jako "zapisywalnej". Sam w sobie nic nie daje, ale jest markerem. To trochę jak stary dobry zielony listek albo znaczek BMW. Widzisz i wiesz czym masz do czynienia.

0
Koziołek napisał(a):

I tu mniej więcej do tego samego. Interfejs ten służy do oznaczenia klasy jako "zapisywalnej". Sam w sobie nic nie daje, ale jest markerem. To trochę jak stary dobry zielony listek albo znaczek BMW. Widzisz i wiesz czym masz do czynienia.

No właśnie, dziwne to, bo dopiero teraz zajrzałem do definicji interfejsu Serializable, a tam:

public interface Serializable {
}

Pusto...

0

Bo to jest interfejs znacznikowy. Jego implementacja oznacza tyle i tylko tyle, że obiekty danej klasy można serializować, czyli utrwalać w taki czy inny sposób.

Zasada jest jedna - klasa może implementować Serializable tylko wtedy kiedy:
a) wszystkie jej pola też implementują ten interfejs (by nie wypierniczyło się przy serializacji, bo pole nie może zostać zapisane).
b) jeżeli pole nie implementuje tego interfejsu powinno zostać oznaczone jako transient i zostanie olane ciepłym moczem w czasie serializacji.

0

Jak jeszcze dawno temu uzywalem hibernate to zasada byla taka: encje nie musza byc serializable, chyba ze beda przesylane miedzy warstwami, za pomoca remoting itp. Jesli np. wysylasz encje do / z remote EJB to musza byc serializable. Jesli nie masz takich wymagan to sobie daruj, oszczedzisz sobie nawet problemow ze np. twoje obiekty moga nagle byc kopiowane niemalze dowolnie.

0

@mućka, serializacja jest akurat przydatna z powodów "około http://www.adam-bien.com/roller/abien/entry/do_jpa_entities_have_tohave_to

0

Albo nie umiesz czytac, albo nie chcesz rozumiec tekstu. Napisalem przeciez o remotingu i przesylaniu miedzy warstwami (dla mnie przesylanie danych z backendu do warstwy prezentacji sie tutaj zalicza).
Ale prosze, jak masz wklejac linki to nie do blogu Adama Biena - znam go osobiscie, mialem okazje rozmawiac na kilku konferencjach, byl nawet gosciem na wykladach u mnie w firmie i nie uwazam go za autorytet. Jacek Laskowski to co innego ;d

0

Trzeba by tu Jacka ściągnąć... generalnie encje oznaczamy, bo poco potem mieć problemy...

0
Koziołek napisał(a):

Trzeba by tu Jacka ściągnąć... generalnie encje oznaczamy, bo poco potem mieć problemy...

xD

I wszystko jasne, dzięki

1

Podejscie typu - nie potrzebuje ale moze sie przydac... To jeszcze implementuj cloneable i cokolwiek. Zbierasz kartony i stare pudelka, metalowe puszki itp.?
Serializable bezmyslnie implementowane moze sprawiac klopoty. Na przyklad, encja ktora ma klucz oznaczony @transient pozwala na stworzenie identycznego obiektu z takim samym kluczem za pomoca serializacji.

0

Tak, ale ile znasz takich przypadków? Oznaczanie encji jako serializowalnych ma pewną zaletę - od razu uważasz by nie robić takich cudów jak napisałeś. Co do clonable to chyba raz to musialem zaimplementować w taki naprawdę solidny sposób, a odpady... cóż... segreguję.

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