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


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

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

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

    wKioL1maUzmi09tQAAEWd6m-wt4387.png

    红框中的选项就表示直接在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以外的值,你会发现,完全没有级联!!!j_0041.gif

    骗子啊骗子!!!!!

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

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

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

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

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

    “软件思维”博客地址:

    http://softi.blog.51cto.com/

    http://www.cnblogs.com/yixueyuan/

    感兴趣的小伙伴可以到上面两个地址看相关的其它博文。

  • 相关阅读:
    一轮项目冲刺9
    一轮项目冲刺8
    一轮项目冲刺7
    一轮项目冲刺6
    一轮项目冲刺5
    一轮项目冲刺4
    一轮项目冲刺3
    一轮项目冲刺2
    一轮项目冲刺1
    移山小分队---每日记录01
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7403607.html
Copyright © 2020-2023  润新知