Nhiều-to-Nhiều mối quan hệ
Trong trường hợp đến nhiều mối quan hệ nhiều, mỗi hàng trong bảng A liên kết với nhiều hàng trong bảng B và ngược lại. Ở đây chúng tôi sẽ thực hiện-to-nhiều nhiều mối quan hệ giữa hai mục Author và Book. cuốn sách A có thể là tác giả của nhiều tác giả và tác giả người ta có thể tác giả nhiều sách.
Chúng tôi đang sử dụng hai bảng tác giả và cuốn sách và java thực thể Tác giả và sách bản đồ tương ứng. Sau đây là sơ đồ ER
Java Persistence Đối tượng:
Mã cho Author.java được đưa ra dưới đây:
gói roseindia;
nhập khẩu java.util.Set;
public class Tác giả (
tin int id;
tư nhân String authorName;
tư nhân Đặt sách;
/ **
* @ trả lại các id
* /
công int getId() (
trở lại id;
)
/ **
* @ param id id để thiết lập
* /
công void setId(int id) (
này. id = id;
)
/ **
* @ trả lại các authorName
* /
công getAuthorName String() (
trở về authorName;
)
/ **
* @ param authorName các authorName để thiết lập
* /
công void setAuthorName(String authorName) (
này. authorName = authorName;
)
công Set getBooks() (
trả lại sổ sách;
)
công void setBooks(Set sách) (
này=. sổ sách;
)
)
Mã cho Book.java được đưa ra dưới đây:
gói roseindia;
nhập khẩu java.util.Set;
public class Book (
tin int id;
tư nhân String bookName;
tư nhân Set tác giả;
/ **
* @ trả lại các id
* /
công int getId() (
trở lại id;
)
/ **
* @ param id id để thiết lập
* /
công void setId(int id) (
này. id = id;
)
/ **
* @ trả lại các bookName
* /
công getBookName String() (
trở về bookName;
)
/ **
* @ param bookName các bookName để thiết lập
* /
công void setBookName(String bookName) (
này. bookName = bookName;
)
/ **
* @ trả lại sổ sách
* /
công Set getAuthors() (
trở về tác giả;
)
công void setAuthors(Set tác giả) (
này=. tác giả tác giả;
)
)
Lập bản đồ file xml (author.hbm.xml:
File này có chứa các bản đồ cho các tổ chức Tác giả cả hai và sách mà bản đồ với tác giả bàn và nhóm tương ứng.
<đặt tên="sách" bảng="author_book" cascade="tất cả">
<đặt tên="tác giả" bảng="author_book" cascade="tất cả">
Các từ khóa lập bản đồ định nghĩa sau đây để lập bản đồ nhiều nhiều giữa Tác giả và các tổ chức Sách từ thực thể tác giả.
<đặt tên="sách" bảng="author_book" cascade="tất cả">
Đây bảng=author_book "" là tên của bảng được sử dụng để xác định các mối quan hệ giữa hai thực thể và authorId là chìa khóa của tác giả nước ngoài bàn. Tương tự như vậy bookId là chìa khóa nước ngoài của bảng sách. Tiếp theo mã xác định-to-nhiều mối quan hệ nhiều từ các tổ chức Book.
<đặt tên="tác giả" bảng="author_book" cascade="tất cả">
Trong Group.java chúng tôi có những câu chuyện biến của các loại danh sách, vì vậy chúng tôi đã sử dụng thẻ
Chạy chương trình:
Để chạy và kiểm tra chương trình bạn phải thực hiện các ManyToManyRelation.java. Dưới đây là đoạn code đầy đủ của ManyToManyRelation.java file:
gói roseindia;
nhập khẩu java.util.ArrayList;
nhập khẩu java.util.HashSet;
nhập khẩu java.util.Iterator;
nhập khẩu java.util.List;
nhập khẩu java.util.Set;
nhập khẩu org.hibernate.HibernateException;
nhập khẩu org.hibernate.Session;
nhập khẩu org.hibernate.SessionFactory;
nhập khẩu org.hibernate.Transaction;
nhập khẩu org.hibernate.cfg.Configuration;
public class ManyToManyRelation (
public static void chính(String[] args) (
SessionFactory sessFact = null;
Kỳ họp phiên = null;
thử (
sessFact =mới Configuration(). cấu hình()buildSessionFactory.();
session = sessFact.openSession();
Giao dịch tr = session.beginTransaction();
/ / Một tác giả và có thể cuốn sách
Tác giả tác giả = mới Tác giả();
author.setAuthorName("John");
Tác giả author2 = mới Tác giả();
author2.setAuthorName("Deepak");
Đặt bookSet = mới HashSet();
/ / Solaris
Sách bookSolaris = mới Sách();
bookSolaris.setBookName("Solaris trong một tuần");
bookSet.add(bookSolaris);
/ /Linux
Sách bookLinux = mới Sách();
bookLinux.setBookName("Linux trong một tuần");
bookSet.add(bookLinux);
/ / Oracle
Sách bookOracle = mới Sách();
bookOracle.setBookName("Oracle trong một tuần");
bookSet.add(bookOracle);
/ / Thêm cuốn sách thiết lập để các đối tượng tác giả
author.setBooks(bookSet);
session.save(tác giả);
/ *
Sổ sách = new Book ();
book.setBookName ("Phoenix");
Tác giả tác giả = Tác giả mới ();
Tác giả author1 = new Tác giả ();
Tác giả author2 = new Tác giả ();
Tác giả author3 = new Tác giả ();
author.setAuthorName ("Clifford Geertz");
author1.setAuthorName ("JP Morgenthal");
author2.setAuthorName ("Yaswant Kanitkar");
author3.setAuthorName ("Phola Pandit");
Đặt authorSet = new HashSet ();
authorSet.add (tác giả);
authorSet.add (author1);
authorSet.add (author2);
authorSet.add (author2);
book.setAuthors (authorSet);
session.save (sách);
* /
/ *
/ / Một tác giả và có thể cuốn sách
Tác giả tác giả = Tác giả mới ();
author.setAuthorName ("John");
Tác giả author2 = new Tác giả ();
author2.setAuthorName ("Deepak");
Đặt bookSet = new HashSet ();
/ / Solaris
Sách bookSolaris = new Book ();
bookSolaris.setBookName ("Solaris trong một tuần");
bookSet.add (bookSolaris);
/ / Linux
Sách bookLinux = new Book ();
bookLinux.setBookName ("Linux trong một tuần");
bookSet.add (bookLinux);
/ / Oracle
Sách bookOracle = new Book ();
bookOracle.setBookName ("Oracle trong một tuần");
bookSet.add (bookOracle);
/ / Thêm cuốn sách thiết lập để các đối tượng tác giả
author.setBooks (bookSet);
author2.setBooks (bookSet);
session.save (tác giả);
session.save (author2);
Đặt tác giả = new HashSet ();
authors.add (tác giả);
authors.add (author2);
/ / Một tác giả sách và có thể
/ / Tạo Book
Sách javaBook = new Book ();
javaBook.setBookName ("Java trong một tuần");
javaBook.setAuthors (tác giả);
/ / Lưu
session.save (javaBook);
* /
/ / Tạo tác giả thiết
/ / Set tác giả = new HashSet ();
/ *
Tác giả JohnAuth = new Tác giả ();
JohnAuth.setAuthorName ("John");
authors.add (JohnAuth);
Tác giả deepakAuth = new Tác giả ();
deepakAuth.setAuthorName ("Deepak");
authors.add (deepakAuth);
Tác giả manojAuth = new Tác giả ();
manojAuth.setAuthorName ("Manoj");
authors.add (manojAuth);
/ / Tạo và thêm các tác giả
/ / Thêm tác giả thiết lập để cuốn sách
javaBook.setAuthors (tác giả);
/ / Lưu
session.save (javaBook);
* /
/ *
/ / Hiển thị tất cả các cuốn sách cho các Tác giả 2
Tác giả a = (Tác giả) session.load (Author.class, 2);
Đặt sách = a.getBooks ();
System.out.println (a.getAuthorName ());
System.out.println ("tổng =" + book.size ());
Iterator ITER = book.iterator ();
trong khi (iter.hasNext ()) (
Sách b = (sách) (iter.next ());
System.out.println (b.getBookName ());
)
* /
tr.commit();
System.out.println("Done");
)
catch(HibernateException Anh) (
System.out.println(He.getMessage());
)
cuối cùng(
session.close();
)
)
)
Đoạn mã trên là tự giải thích, chúng ta đang tạo các đối tượng của Tác giả:
Tác giả tác giả = mới Tác giả ();
Sau đó đặt tên tác giả:
author.setAuthorName ("John");
Việc tạo ra các Sách thiết và thêm nhiều sách:
Đặt bookSet = mới HashSet();
/ /Solaris
Sách bookSolaris = mới Book ();
bookSolaris.setBookName ("Solaris trong một tuần");
bookSet.add (bookSolaris);
/ /Linux
Sách bookLinux = mới Book ();
bookLinux.setBookName ("Linux trong một tuần");
bookSet.add(bookLinux);
/ / Oracle
Sách bookOracle = mới Book ();
bookOracle.setBookName ("Oracle trong một tuần");
bookSet.add(bookOracle);
Cuối cùng thêm vào các cuốn sách thiết lập để các đối tượng tác giả và lưu các tác giả:
/ / Thêm cuốn sách thiết lập để các đối tượng tác giả
author.setBooks(bookSet);
session.save(author);
Đoạn mã trên sẽ tiết kiệm được tác giả và tác giả của những cuốn sách của tác giả. Bạn cũng có thể bỏ bình luận nhận xét các mã trong ManyToManyRelation.java và cố gắng nhiều hơn ví dụ như tác giả nhiều tác giả cùng một cuốn sách. Đây là đầu ra của chương trình khi thực hiện trong Eclipse IDE.
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select max(id) from author
Hibernate: insert into author (authorName, id) values (?, ?)
Hibernate: insert into book (bookName) values (?)
Hibernate: insert into book (bookName) values (?)
Hibernate: insert into book (bookName) values (?)
Hibernate: insert into author_book (authorId, bookId) values (?, ?)
Hibernate: insert into author_book (authorId, bookId) values (?, ?)
Hibernate: insert into author_book (authorId, bookId) values (?, ?)
Link Dowload vi du tren:taiday [thanhluandemo]
Không có nhận xét nào:
Đăng nhận xét