hibernate里面的一对多和多对一映射

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());





  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值