2015-03-29 19 views
9

Tôi đang học JPA trong ứng dụng Mùa xuân và tôi có một số tiền thưởng liên quan đến chú thích @Entity.Ý nghĩa chính xác của chú thích JPA @Entity là gì?

Vì vậy, tôi có một lớp mô hình như thế này:

@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, tôi biết rằng @Entity chú thích là ở cấp độ lớp và nó có nghĩa là các lĩnh vực của đối tượng đó là trường hợp của này lớp được ánh xạ tới trường của bảng cơ sở dữ liệu T_CUSTOMER.

Nhưng tại sao trong JPA là bắt buộc việc sử dụng @Entity chú thích và tôi có thể không chỉ sử dụng @Table chú thích để ánh xạ một đối tượng mô hình vào một bảng cơ sở dữ liệu cụ thể? Nó có một số ý nghĩa khác \ hành vi mà thực sự tôi đang mất tích?

Tôi đang thiếu gì? Ý nghĩa chính xác của chú thích @Entity là gì?

+0

Chú thích '@ Table' là tùy chọn. Vậy làm thế nào để JPA biết một lớp được ánh xạ để được sử dụng trong quy trình ORM nếu nó không có mặt? – geoand

+1

@Entity cũng là tùy chọn, vì bạn có thể xác định lớp nào là thực thể trong tệp orm.xml –

Trả lời

12

@Entity chú thích xác định rằng một lớp có thể được ánh xạ tới một bảng. Và đó là nó, nó chỉ là một điểm đánh dấu, ví dụ như giao diện Serializable.

Và tại sao @Entity chú thích là bắt buộc? ... tốt, đó là cách mà JPA được thiết kế. Khi bạn tạo ra một thực thể mới, bạn phải làm ít nhất hai điều

  1. chú thích nó với @Entity

  2. tạo ra một trường id và chú thích nó với @Id

Bất cứ điều gì khác là không bắt buộc , ví dụ tên bảng có nguồn gốc từ tên lớp thực thể (và do đó @Table chú thích có thể là tùy chọn), cột của bảng có nguồn gốc từ các biến thực thể (và do đó @Column chú thích tion có thể là tùy chọn), và cứ thế ...

JPA đang cố gắng cung cấp sự khởi đầu nhanh chóng và dễ dàng cho các nhà phát triển muốn tìm hiểu/sử dụng API này và cung cấp tùy chọn cho nhà phát triển để cấu hình càng ít thứ càng tốt một cái gì đó chức năng là một trong những cách làm thế nào API này muốn đạt được điều này "dễ sử dụng/tìm hiểu" mục tiêu. Do đó chú thích @Entity (cùng với chú thích @Id) là mức tối thiểu bạn phải làm để tạo một thực thể.

Các vấn đề liên quan