2010-08-12 19 views
23

Dlaczego klasa jednostek w WZP nie może być ostateczna lub mieć ostateczne metody? Powołując się od here -Dlaczego klasa jednostek w WZP nie może być ostateczna?

klasa Jednostka musi następujące wymagania:

...

Klasa nie może być uznana za final. Żadne metody ani trwałe instancyjne zmienne nie muszą być zadeklarowane jako final.

Jaki jest tego powód? Czy podporządkowanie WZP klasami encji i przedefiniowanie metod?

+0

Podobne pytanie [Dostawca trwałości dla Java obsługujący pola końcowe] (http://stackoverflow.com/questions/2455906/perspence-provider-for-java-that-supports-final-fields). –

Odpowiedz

27

Z definicji jednostka jest klasą, która może być utrwalona w bazie danych, więc posiadanie ostatecznego pola nie ma sensu w kontekście czegoś, co w efekcie stanie się rekordem w bazie danych. Wymóg braku klasy końcowej i żadnych ostatecznych metod ma związek ze sposobem, w jaki implementacje JPA faktycznie zajmują się utrzymującymi się instancjami klas twoich jednostek.

Powszechnie stosowane implementacje podklasy klasy w czasie wykonywania i/lub dynamicznie dodawać kod bajtowy do klas, w celu wykrycia, kiedy nastąpiła zmiana obiektu obiektu. Jeśli twoja klasa zostanie uznana za ostateczną, nie będzie to możliwe.

Jest oczywiście o wiele więcej powodów niż tylko te, tutaj jest article, który podaje więcej informacji o tym, jak ORM w ogóle działa za pokrywami, co może pomóc w lepszym zrozumieniu innych wymagań dla podmiotów WZP.

+0

Dzięki! Wiedziałem o końcowych polach, ale nie byłem pewien co do ostatecznych metod/klas. –

+0

Nie ma za co;) –

+4

Pamiętaj, że * ładowanie * niezmiennych klas z bazy danych ma sens. –

Powiązane problemy