声明属性Hibernate的Annotation注解
工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下声明属性
当项目变得比较大的时候,如何还应用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注解相关推荐
- hibernate annotation注解方式来处理映射关系
2019独角兽企业重金招聘Python工程师标准>>> 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟 ...
- Android Annotation注解详解
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119874435 本文出自[赵彦军的博客] 文章目录 Java注解 元注解说明 @R ...
- Java反射学习总结五(Annotation(注解)-基础篇)
Annotation(注解)简单介绍: 注解大家印象最深刻的可能就是JUnit做单元測试,和各种框架里的使用了. 本文主要简介一下注解的用法,下篇文章再深入的研究. annotation并不直接影响代 ...
- JPA Annotation注解
JPA & Hibernate 注解 先说说JPA和Hibernate的关系 JPA(Java Persistence API),是Java EE 5的标准ORM接口,也是ejb3规范的一部分 ...
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
1.Annotation的工作原理: JDK5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型.该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的API,一个使用注解修饰的c ...
- java 数据校验框架_自己写的基于java Annotation(注解)的数据校验框架
JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方 ...
- Swoft Annotation 注解
什么是注解(Annotation)呢? 注解也叫元数据,用于对代码进行说明,可以对类.接口.字段.方法.参数等进行注解.注解是一种分散式的元数据,与源代码紧密绑定. 注解有什么用途呢? 生成文档,通过 ...
- Hibernate中的注解说明
Hibernate中注解注解比较多,常用的也就那么几个,在这里把Hibernate中的注解汇总总结一下. @Entity:将一个类声明为一个实体bean,即一个持久化POJO; @Id:声明bean的 ...
- Hibernate Validation校验注解详解
在前后端传递数据的时候,往往后端需要校验传递数据的格式,比如用户名的格式,密码是否为空.我们可以在service层编写代码判断,但是当我们在多处需要校验传递来的数据的时候,就会出现大量重复的代码,一旦 ...
最新文章
- keras 的 example 文件 mnist_siamese.py 解析
- php8的jit如何使用,PHP JIT 是什么?PHP8 新特性之 JIT 图文详解
- 重新理解@Resource注解
- 电脑开机速度慢?新手试试以下这几个小技巧!
- threejs指定对象旋转中心
- SQL Server2005 Reporting Services的卸载
- 谷歌插件jsonview的下载与安装
- 小米AI音响的拆解及简要系统分析
- BFS(宽度优先算法)
- Tex document以及beamer模式插入参考文献,插入超链接
- CAD坐标系(UCS)
- 移动体验大作战,冰桶算法全盘点
- Windows XP 黑屏补丁
- 中科磐云 综合渗透测试
- 第七章 如何增加收入
- 三战南京大学计算机学硕上岸,初试403经验贴
- 前序、中序、后序遍历
- vue中使用vue-awesome-swiper的方法(实现一屏展示多个图片,点击左右滚动一张)
- JVM中OOM和SOF的产生
- 常用颜色及其RGB值
热门文章
- 【C语言】 Linux内核源码-- do...while(0)解析
- 每天一道LeetCode-----将数字用字母表示(本质是26进制转换)
- Redis源码剖析(七)监视功能
- 每天一道LeetCode-----最长回文子串/序列,从头开始的最长回文子串长度
- oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
- 修改Static控件的字体颜色
- C/C++堆、栈及静态数据区详解
- QT误修改了系统内的头文件处理
- 二维数组数组名的使用
- 威驰fs高配和低配有什么区别_“电子手刹”和“机械手刹”的区别有多大?很多车主不清楚...