前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Java从入门到放弃》框架入门篇:使用注解的方式配置hibernate映射关系

《Java从入门到放弃》框架入门篇:使用注解的方式配置hibernate映射关系

作者头像
十方上下
发布2019-03-14 10:18:56
6220
发布2019-03-14 10:18:56
举报
文章被收录于专栏:学习力

之前我们都是使用配置文件的方式来生成的代码,虽然和JDBC比较简单了很多,但每次都在修改时需要既改实体类又改映射文件。还是有点麻烦。

所以,这一篇,我们来说说使用注解的方式来在接在实体类上配置映射关系。

第一步:新建一个项目,或者把之前项目中的实体类、映射文件,还有hibernate中的mapping标签都删除,然后在DBBrowser中再次生成实体类。如下图:

红框中的选项就表示直接在POJO上以注解的方式加上映射关系。注意括号内的hibernate版本,必须是3.2及以上的才行。

生成后的实体类(Author和Blog)代码我就不复制上来了,内容太多。使用到的注解如下所示:

@Entity @Table(name = "author", catalog = "blogdb")

@Id @GeneratedValue @Column(name = "id", unique = true, nullable = false)

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "author")

@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "author_id")

这些注解就不一一介绍了。主要说明一下映射关系的注解。

cascade属性的值对应有javax.persistence.CascadeType的几个选项。

PERSIST:添加时级联。

MERGE:更新时级联。

REMOVE:删除时级联。

ALL:    所有操作都级联(默认)。

如果你设置为ALL以外的值,你会发现,完全没有级联!!!

骗子啊骗子!!!!!

所以,如果你只需要在添加或更新时级联,一般这样设置。

@Cascade(value = {CascadeType.SAVE_UPDATE}),注意这儿的CascadeType是org.hibernate.annotations.CascadeType。

fetch属性:是否延时加载。值有:FetchType.LAZY和FetchType.EAGER。

mappedBy = "author":相当于之前的inverse="true"。

别的东西就没什么好说的了,随便猜都能猜出来效果,哈哈!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/08/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档