1. 这里作者用的是mysql所以直接用逆向工程直接生成了基本的文件
在DB Bowser中选择要用的2个表,右键选择Hibernate Reverse Engineering
点击 next
这里选择java还是hibernate看个人习惯吧,然后点击finish就生
成了基本的java文件和hbm文件
2.首先一对多,这里我们可以创建一个set集合,因为set是无序
不可重复的,如果用list集合会出现空指针错误,而且删除起来
很麻烦,所以不建议用list集合
private Set<Book> books;<!-- 一个作者可以有多本书,所以把书
放在set集合里面--> 添加get/set方法
然后去 作者.hbm.xml文件中配置set信息
<!-- 映射集合 -->
<set name="books" >
<key column="author_id"></key>
<one-to-many class="com.note.model.Book"/>
</set>
test文件中去调用查看
//查询作者信息按照主键查询
Author author = (Author) session.get(Author.class, 1);
System.out.println("作者的ID是:"+author.getId());
System.out.println("作者的名字是:"+author.getName());
//查询书籍的信息
Set<Book> books = author.getBooks();
for(Book book: books){
System.out.println("书籍ID:"+book.getId());
System.out.println("书籍名字:"+book.getName());
}
结果:
3. 多对一比较抽象,这里通俗的解释一下,假设一本书只有一个作
者的话,这样书→ 作者就是一条关系,那么很多书→ 作者的时候就
时多对一,其实实现起来就是一对一的实现方法。
//添加作者信息
private Author author;
在hbm.xml中
<!-- 多对一的实现 -->
<many-to-one name="author" column="author_id"
class="com.note.model.Author">
</many-to-one>
test.java中就比较简单了
Book book = (Book)session.get(Book.class, 2001);
System.out.println("书籍的ID是:"+book.getId());
System.out.println("书籍的名字是:"+book.getName());
System.out.println("作者ID是:"+book.getAuthor().getId());
System.out.println("作者姓名是:"+book.getAuthor().getName());