2012-06-30 23 views
7

Tôi mới đến ngủ đông. Làm ơn giúp tôi.Chúng ta có cần bản đồ Hibernate trong trường hợp này không?

Tôi có 2 bảng có tên là Nhân viên và Quốc gia. Tôi cần lưu Nhân viên với quốc gia đã chọn. Trong trường hợp của tôi, tôi sẽ không nhận được chi tiết nhân viên và hiển thị nó trên giao diện người dùng. Tôi có cần duy trì ánh xạ (ánh xạ onetoone) giữa các đối tượng Nhân viên và Quốc gia không? Tôi không thể trực tiếp cứu nhân viên với quốc gia đã chọn?

tôi có thể làm như dưới đây trong đối tượng tên miền của nhân viên của tôi không? Nếu không, hãy cho tôi biết các vấn đề tiềm ẩn với điều này?

@column (name = "countryId")

riêng int countryId;

+0

Có, bạn có thể thực hiện việc này trong đối tượng miền Nhân viên của mình. Nếu bạn không cần một đối tượng Quốc gia, tại sao lại tạo một đối tượng? Chỉ cần chắc chắn rằng bạn giữ đúng thành viên dữ liệu. Nó có phải là ID quốc gia hay là tên hay viết tắt là lựa chọn tốt hơn? Nó có phải là một phần của nhân viên hoặc, có lẽ hợp lý hơn, đối tượng Địa chỉ? – duffymo

+0

Tại sao bạn lưu trữ nhân viên nếu bạn không bao giờ sử dụng chúng? –

+0

Như ứng dụng Someother cần chi tiết nhân viên, tôi tiết kiệm nó thông qua ứng dụng của tôi. (Tôi đã lấy nhân viên chỉ để hiểu dễ dàng, nó không phải là nhân viên chính xác) –

Trả lời

1

Có bạn có thể đặt countryId vào đối tượng nhân viên của bạn. Nhưng nếu bạn không cần đối tượng quốc gia trong tương lai thì, sẽ không có ý nghĩa gì đối với việc lưu đối tượng quốc gia.

Nếu bạn đang phát triển những điều cho tương lai trong tương lai và có thể là được yêu cầu trong tương lai nhưng hiện tại không tốt hơn để lưu đối tượng quốc gia.

2

Tôi tin rằng bạn có thể có một vài tùy chọn tại đây.

  1. Bạn chỉ có thể để nguyên bản gốc hoàn toàn khỏi lớp miền của mình. Nếu bạn không cần nó, không có lý do gì để nói với Hibernate để lấy nó.
  2. Nếu bạn không có ý định sửa đổi nó ở tất cả ánh xạ nó trong lớp miền của bạn và áp dụng chú thích @Transitive có thể giúp bạn có được những gì bạn đang theo dõi. Điều này nói với Hibernate rằng không có gì về ID quốc gia cần sự bền bỉ ở cấp cơ sở dữ liệu.

Một trong các phương pháp này giúp đảm bảo tính toàn vẹn tham chiếu giữa đối tượng employee và ID quốc gia. Tôi khuyên bạn nên sử dụng đầu tiên, mặc dù. Nếu bạn không có lý do gì để cần ID quốc gia, đừng làm cho nó trở thành một phần của đối tượng ngay từ đầu.

Nếu bạn cần phải sử dụng ID Country for một mối quan hệ trên mặt sau, tôi muốn đề nghị đảm bảo rằng bạn bao gồm này

@Column(name = "country", insertable = "false", updatable = "false"). 

Điều này cho phép bạn để có được ID đất nước mà không sợ bạn ghi đè lên nó vô tình.

Hy vọng điều đó sẽ hữu ích!

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