Khi làm việc với cơ sở dữ liệu (Database - DB) trong lĩnh vực công nghệ phần mềm hiện nay, chúng ta thường hay tiếp cận theo hướng Code First (Từ code sinh ra cơ sở dữ liệu, so sánh với Data first).
Như các bạn đã biết (hoặc chưa biết), trong một cơ sở dữ liệu có những ràng buộc toàn vẹn và các loại ràng buộc khác. Trong Spring Data JPA có một thuật ngữ là Annotation (đánh dấu) để chúng ta gắn những ràng buộc đó lên các thuộc tính (properties).
Bài viết này sẽ giới thiệu cho bạn một số annotation thường gặp khi làm việc với Spring Boot.
1. One To One
Dùng để đánh dấu quan hệ tham chiếu 1-1 giữa một khoá ngoại ở table này và khoá chính ở table mà nó tham chiếu.
Ví dụ bảng User có thuộc tính userDetailId tham chiếu đến thuộc tính id trong bảng UserDetail. Một user có 1 userDetail duy nhất và ngược lại. Vì thế quan hệ này là 1-1.
Ở table chứa khoá chính (UserDetail), ta cài đặt như sau:
@OneToOne()
@JoinColumn()
private User user;
Còn ở table chứa khoá ngoại ta cài đặt như sau:
@OneToOne( mappedBy = "user" cascade = "EAGER" )
private UserDetail userDetailId;
Để ý sẽ thấy, thuộc tính mappedBy được đề cập trong chi tiết của @OneToOne sẽ nằm ở table chứa thuộc tính cần tham chiếu, và annotation @JoinColumn sẽ được đặt ở table được tham chiếu.
2. OneToMany và ManyToOne
Được dùng để đánh dấu ở bên 1 và bên n trong mối quan hệ 1-n.
3. ManyToMany và ManyToOne
Dùng để đánh dấu bên tham chiếu và bên được tham chiếu trong quan hệ n-n.