2015-03-29 14 views
9

Studiuję aplikację JPA na wiosnę i mam pewne kwoty związane z adnotacją @Entity.Jakie jest dokładne znaczenie adnotacji JPA @Entity?

Więc mam klasa modelu tak:

@Entity 
@Table(name= “T_CUSTOMER”) 
public class Customer { 

    @Id 
    @Column(name=“cust_id”) 
    private Long id; 

    @Column(name=“first_name”) 
    private String firstName; 

    @Transient 
    private User currentUser; 

    ........................... 
    ........................... 
    ........................... 
} 

Ok, wiem, że @Entity adnotacja znajduje się na poziomie klasy, a to oznacza, że ​​pola obiektu, które są instancjami tego klasa ma być odwzorowana na pole tabeli bazy danych T_CUSTOMER.

Ale dlaczego w JPA jest obowiązkowe stosowanie @Entity adnotacji i nie mogę używać tylko @Table adnotacji do mapowania obiekt modelu do określonej tabeli bazy danych? Czy mam jakieś inne znaczenie, które właściwie brakuje?

Czego mi brakuje? Jakie jest dokładne znaczenie adnotacji @Entity?

+0

Adnotacja "@ Table" jest opcjonalna. Jak więc WZP wiedziałoby, że klasa jest mapowana do użycia w procesie ORM, jeśli nie jest obecna? – geoand

+1

Atrybut @Entity jest opcjonalny, ponieważ można zdefiniować, które klasy są elementami w pliku orm.xml –

Odpowiedz

12

@Entity adnotacja definiuje, że klasę można przypisać do tabeli. I to jest to, jest to tylko znacznik, jak na przykład interfejs Serializable.

A dlaczego adnotacja @Entity jest obowiązkowa? ... cóż, tak właśnie zaprojektowano JPA. Po utworzeniu nowego podmiotu trzeba zrobić co najmniej dwie rzeczy

  1. adnotacją go @Entity

  2. utworzyć pole id i opisywanie go @Id

nic innego nie jest obowiązkowe , na przykład nazwa tabeli pochodzi od nazwy klasy encji (dlatego też adnotacja @Table może być opcjonalna), kolumny tabeli pochodzą od zmiennych encji (i dlatego @Column annota może być opcjonalne), i tak dalej ... i tak dalej ...

JPA stara się zapewnić szybki i łatwy start programistom, którzy chcą nauczyć się/korzystać z tego interfejsu API, i dać programistom opcję skonfigurowania jak najmniejszej liczby rzeczy do zrobienia. coś funkcjonalnego to jeden ze sposobów, w jaki ten interfejs API chce osiągnąć ten cel "łatwy w użyciu/uczenie się". W związku z tym adnotacja @Entity (wraz z adnotacją @Id) to minimum, które należy wykonać, aby utworzyć encję.

Powiązane problemy