工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下声明属性

当项目变得比较大的时候,如何还应用hbm.xml文件来配置Hibernate实体就会变得比较复杂。这里Hibernate提供了Annotation注解方式,使得Hibernate的映射文件变得很便利管理了。

这里简略分析Hibernate的Annotation注解

一、声明实体

@Entity

对实体注释。任何Hibernate映射对象都要有这个注释

@Table

声明此对象映射到数据库的数据表,通过它可认为实体指定表(talbe),目录(Catalog)和schema的名字。该注释不是必须的,如果没有则系统应用默认值(实体的短类名)。

@Version

该注释可用于在实体Bean中添加乐观锁支持。

二、声明主键

@Id

声明此属性为主键。该属性值可以通过应该自身创立,但是Hibernate推荐通过Hibernate生成

@GeneratedValue

指定主键的生成策略。有如下四个值

TABLE:应用表保存id值

IDENTITY:identitycolumn

SEQUENCR :sequence

AUTO:根据数据库的不同应用上面三个

三、声明普通属性

@Column

声明该属性与数据库字段的映射关系。

@Column(nam=”category_name” length=20)
Public void getCategoryName(){Return this.categoryName;
}

注意:

1、  当POJO有属性不需要映射的时候一定要用@Transitent修饰,该注释表示此属性与表没有映射关系,只是一个临时的属性。

2、  @Lob注释表示该属性速决化为Blob或者Clob类型,详细取决于属性的类型。

四、声明关联关系

一对多关联关系

@OneToMany(mappedBy=” person”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)

一对多声明

@ManyToOne(cascade=CascadeType.REFRESH,)

@JoinColumn

多对一声明 ,声明为双向关联

一对一关联关系

@OneToOne(optional= true,cascade =CascadeType.ALL, mappedBy = “person”)
         一对一关联声明
        @OneToOne(optional = false, cascade = CascadeType.REFRESH)
        @JoinColumn(name = “Person_ID”, referencedColumnName = “personid”,unique = true)
         声明为双向关联

每日一道理
有些冷,有些凉,心中有些无奈,我一个人走在黑夜中,有些颤抖,身体瑟缩着,新也在抖动着,我看不清前方的路,何去何从,感觉迷茫,胸口有些闷,我环视了一下周围,无人的街头显得冷清,感到整个世界都要将我放弃。脚步彷徨之间,泪早已滴下……

多对多关联关系

@ManyToMany(mappedBy= “students”)
         多对多关联声明。
        @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
        @JoinTable(name = “Teacher_Student”,
        joinColumns = {@JoinColumn(name = “Teacher_ID”, referencedColumnName =“teacherid”)},
        inverseJoinColumns = {@JoinColumn(name = “Student_ID”, referencedColumnName =“studentid”)})

实例:

有如下两个实体,商品:Goods,分类Category。两者是多对一的关联关系。

应用Hibernate Annotation注解如下

Goods.java

@Entity
@Table(name = "goods", catalog = "test")
public class Goods implements java.io.Serializable {private static final long serialVersionUID = 1L;private String goodsId;private Category category;private String goodsName;public Goods() {}/** 主键* 生成策略为自动增加* 独一、长度为20*/@Id@GeneratedValue@Column(name = "goods_id", unique = true, nullable = false, length = 20)public String getGoodsId() {return this.goodsId;}public void setGoodsId(String goodsId) {this.goodsId = goodsId;}/** 多对一关联关系* 延迟加载:fetch = FetchType.LAZY* 引用外键:category_id* */@ManyToOne(fetch = FetchType.LAZY,cascade=CascadeType.ALL)@JoinColumn(name = "category_id")public Category getCategory() {return this.category;}public void setCategory(Category category) {this.category = category;}@Column(name = "goods_name", nullable = false, length = 50)public String getGoodsName() {return this.goodsName;}public void setGoodsName(String goodsName) {this.goodsName = goodsName;}}

Category.java

@Entity
@Table(name = "category", catalog = "test")
public class Category implements java.io.Serializable {private static final long serialVersionUID = -1877960009126534682L;private String categoryId;private String categoryName;private Set<Goods> goodses = new HashSet<Goods>(0);public Category() {}/** 主键* 生成策略为自动增加* 独一、长度为20*/@Id@GeneratedValue@Column(name = "category_id", unique = true, length = 10)public String getCategoryId() {return this.categoryId;}public void setCategoryId(String categoryId) {this.categoryId = categoryId;}@Column(name = "category_name", length = 20)public String getCategoryName() {return this.categoryName;}public void setCategoryName(String categoryName) {this.categoryName = categoryName;}/** 一对多关联关系* 级联关系:cascade=CascadeType.ALL* 延迟加载:fetch = FetchType.LAZY* 映射:mappedBy = "category"*/@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "category")public Set<Goods> getGoodses() {return this.goodses;}public void setGoodses(Set<Goods> goodses) {this.goodses = goodses;}}

文章结束给大家分享下程序员的一些笑话语录: Google事件并不像国内主流媒体普遍误导的那样,它仅仅是中国Z府和美国公司、中国文化和美国文化甚至中国人和美国人之间的关系,是民族主义和帝国主义之间的关系;更重要的是,它就是Z府和公司之间的关系,是权力管制和市场自由之间的关系。从这个意义上说,过度管制下的受害者,主要是国内的企业。Google可以抽身而去,国内的企业只能祈望特区。www.ishuo.cn

转载于:https://www.cnblogs.com/jiangu66/archive/2013/05/19/3087211.html

声明属性Hibernate的Annotation注解相关推荐

  1. hibernate annotation注解方式来处理映射关系

    2019独角兽企业重金招聘Python工程师标准>>> 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟 ...

  2. Android Annotation注解详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119874435 本文出自[赵彦军的博客] 文章目录 Java注解 元注解说明 @R ...

  3. Java反射学习总结五(Annotation(注解)-基础篇)

    Annotation(注解)简单介绍: 注解大家印象最深刻的可能就是JUnit做单元測试,和各种框架里的使用了. 本文主要简介一下注解的用法,下篇文章再深入的研究. annotation并不直接影响代 ...

  4. JPA Annotation注解

    JPA & Hibernate 注解 先说说JPA和Hibernate的关系 JPA(Java Persistence API),是Java EE 5的标准ORM接口,也是ejb3规范的一部分 ...

  5. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    1.Annotation的工作原理: JDK5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型.该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的API,一个使用注解修饰的c ...

  6. java 数据校验框架_自己写的基于java Annotation(注解)的数据校验框架

    JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方 ...

  7. Swoft Annotation 注解

    什么是注解(Annotation)呢? 注解也叫元数据,用于对代码进行说明,可以对类.接口.字段.方法.参数等进行注解.注解是一种分散式的元数据,与源代码紧密绑定. 注解有什么用途呢? 生成文档,通过 ...

  8. Hibernate中的注解说明

    Hibernate中注解注解比较多,常用的也就那么几个,在这里把Hibernate中的注解汇总总结一下. @Entity:将一个类声明为一个实体bean,即一个持久化POJO; @Id:声明bean的 ...

  9. Hibernate Validation校验注解详解

    在前后端传递数据的时候,往往后端需要校验传递数据的格式,比如用户名的格式,密码是否为空.我们可以在service层编写代码判断,但是当我们在多处需要校验传递来的数据的时候,就会出现大量重复的代码,一旦 ...

最新文章

  1. keras 的 example 文件 mnist_siamese.py 解析
  2. php8的jit如何使用,PHP JIT 是什么?PHP8 新特性之 JIT 图文详解
  3. 重新理解@Resource注解
  4. 电脑开机速度慢?新手试试以下这几个小技巧!
  5. threejs指定对象旋转中心
  6. SQL Server2005 Reporting Services的卸载
  7. 谷歌插件jsonview的下载与安装
  8. 小米AI音响的拆解及简要系统分析
  9. BFS(宽度优先算法)
  10. Tex document以及beamer模式插入参考文献,插入超链接
  11. CAD坐标系(UCS)
  12. 移动体验大作战,冰桶算法全盘点
  13. Windows XP 黑屏补丁
  14. 中科磐云 综合渗透测试
  15. 第七章 如何增加收入
  16. 三战南京大学计算机学硕上岸,初试403经验贴
  17. 前序、中序、后序遍历
  18. vue中使用vue-awesome-swiper的方法(实现一屏展示多个图片,点击左右滚动一张)
  19. JVM中OOM和SOF的产生
  20. 常用颜色及其RGB值

热门文章

  1. 【C语言】 Linux内核源码-- do...while(0)解析
  2. 每天一道LeetCode-----将数字用字母表示(本质是26进制转换)
  3. Redis源码剖析(七)监视功能
  4. 每天一道LeetCode-----最长回文子串/序列,从头开始的最长回文子串长度
  5. oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
  6. 修改Static控件的字体颜色
  7. C/C++堆、栈及静态数据区详解
  8. QT误修改了系统内的头文件处理
  9. 二维数组数组名的使用
  10. 威驰fs高配和低配有什么区别_“电子手刹”和“机械手刹”的区别有多大?很多车主不清楚...