mappedby trong JPA (và chuyện đọc sách)

Annotation element “mappedby” được dùng trong JPA để chỉ đến field bên phía relationship owner.

Khi mới tìm hiểu về mappedby thì thuật ngữ “relationship owner” làm tôi cảm thấy khá mơ hồ. Lí do chủ yếu là sách giải thích rất qua loa thuật ngữ này. Tìm kiếm trên Internet có vẻ không đem lại kết quả gì đáng kể. Một cấp trên của tôi giải thích rằng việc lựa chọn relationship owner tùy thuộc vào ý nghĩa về mặt business của các entity càng khiến tôi rối loạn hơn.

Hóa ra, chỉ dẫn về “relationship owner” đã được phát biểu rất rõ ràng trong JSR 220:

Relationships may be bidirectional or unidirectional. A bidirectional relationship has both an owning side and an inverse side. A unidirectional relationship has only an owning side. The owning side of a relationship determines the updates to the relationship in the database, as described in section 3.2.3.

The following rules apply to bidirectional relationships:

  • The inverse side of a bidirectional relationship must refer to its owning side by use of the mappedBy element of the OneToOne, OneToMany, or ManyToMany annotation. The mappedBy element designates the property or field in the entity that is the owner of the relationship.
  • The many side of one-to-many / many-to-one bidirectional relationships must be the owning side, hence the mappedBy element cannot be specified on the ManyToOne annotation.
  • For one-to-one bidirectional relationships, the owning side corresponds to the side that contains the corresponding foreign key.
  • For many-to-many bidirectional relationships either side may be the owning side.

Chứng tỏ trong một số trường hợp đọc specification lại tiết kiệm thời gian hơn tìm kiếm trên Internet :D.

Advertisements

Cài PEAR trên WAMP

Giả sử WAMP được cài vào C:\wamp.

Thêm đường dẫn tới thư mục cài php (C:\wamp\bin\php\php5.3.5) vào biến môi trường PATH.

Chuyển tới thư mục C:\wamp\bin\php\php5.3.5, chạy lệnh: php -d phar.require_hash=0 PEAR/go-pear.phar. Đừng chạy file go-pear.bat như thường được chỉ. Sau đó merge file PEAR_ENV.reg vào registry.

Khi chạy lệnh trên, nếu có báo lỗi liên quan đến việc giải nén gói Structures_Graph thì xử lí như sau:

  • Tải gói Structures_Graph tử trang http://pear.php.net.
  • Giải nén, chép thư mục Structures vào C:\wamp\bin\php\php5.3.5\pear\pear
  • Tạo biến môi trường PHP_PEAR_PHP_BIN với giá trị C:\wamp\bin\php\php5.3.5\php.exe.
  • Chuyển tới thư mục C:\wamp\bin\php\php5.3.5\pear\pear, chạy lệnh pear upgrade-all.

Xong :D.