常用注解的使用
来源:互联网 发布:债券承做 知乎 编辑:程序博客网 时间:2024/06/06 16:42
1) 设计表方法
加中间表是为了解决多对多关系,用中间表记录另外两个表的主键,从而达到多对多关系映射
2) @JoinColumn(name="wife_id")
连接字段
指的是当前实体用来与其他实体做表连接的字段,wife_id可能是当前实体对应表的字段,也有可能是连接实体对应表的字段,但肯定对应的是表的外键
在@OneToMany 和 @ManyToOne 所对应的实体对应表的外键有差别,原则上JoinColum对应的应该是在多的一方对应的表的外键
3) 单向关联与双向关联
在A实体中,有B实体作为其成员变量,同时B实体中也有A实体作为其成员变量,这就是双向关联。只有一方有对方实体作为成员变量,即是单向关联
4) @OneToOne(mappedbBy="wife")
在A实体中,有B实体husband作为成员变量,在B实体中,有A实体wife作为其成员变量,这时,在A实体中的husband的get方法上声明这个注解,意思是A实体中的husband已经在B实体中的wife成员变量做了映射(mapped),即建立了从A实体到B实体的映射关系。对应到表指的是,是通过B表建立的关联关系,即B表有外键指向A表的主键,B表是主导
5) @JoinColumns
@JoinColumns( { @JoinColumn(name="wifeId", referencedName="id"), @JoinColumn(name="wifeName", referencedName="name") })
如当前实体为A,则A对应的表包括wifeId,wifeName字段,相关的实体对应的表包括id,name字段
6) @Embeded
实体A中有实体B作为成员变量,B中的成员变量是A实体对应表的一部分字段,这时,需要在A实体的B成员变量的get方法上加这个注解,代表是A对应表的其中一部分字段
7) 多对一
表设计是在多方加外键
8) @ManyToOne
多对一单向
A表user是多的一方,B表group是一的一方,在A表中有对应B表的成员变量,并且加标注@ManyToOne @JoinColumn(name="groupId"),groupId指的是user表有字段groupId作为user表的外键,对应的是group表的主键id
9) @OneToMany
一对多的单向
A实体为group,B实体为user,在A中有成员变量B Set类型,即是一个集合成员变量。在A表的由B集合成员变量的get方法上加@OneToMany @JoinColumn(name="groupId"),groupId指的是user表的字段groupId作为外键,关联到group表的id
10) 多对一双向
在双向关系中,一定会指定mappedBy,如果不指定mappedBy,会造成一个表可能有多个外键,因为@OneToMany指定了一个外键,@ManyToOne也指定了一个外键,这样一张表就会有两个外键。最佳实践:在实体Group中,在users的get方法上声明 @OneToMany(mappedBy="group"),即是由多的一方维护关联关系,因为在表中是多的一方有外键
11) @ManyToMany
多对多单向
Teacher实体和Student实体是多对多关系
在Teacher中声明一个students的成员变量(Set类型)的get方法上添加@ManyToMany ,这样会映射中间表作为Teacher和Stduent对应表的多对多关系
@JoinTable
在stduents的get方法上没有使用该标注,则中间表的表明由hibernate默认声明为teacher_student,若声明@JoinTable(name="t_s"),则中间表名映射为t_s
@ManyToMany@JoinTable( name="t_s", joinColumns={@JoinColumn(name="teacher_id")}, inverseJoinColumns={@JoinColumn(name="student_id")})joinColumns 指的是当前实体对应表的外键,在t_s表中的字段名字,inverseJoinColumns 指的是关联表所对应的外键在t_s表中的字段名字
多对多双向
在单向的基础上,在stduent实体中加入teacher成员变量,在get方法上加@ManyToMany(mappedBy="students"),多对多关系已经在studen实体中维护,所以使用mappedBy说明不需要再在Teacher实体中声明外键表的外键。
- 常用注解的使用
- 常用spring注解的使用
- JUnit的使用和常用注解
- JAVA常用自定义的注解使用
- spring入门及常用注解的使用
- spring boot 的常用注解使用 总结
- spring boot 的常用注解使用 总结
- Hibernate-Validation的使用和常用的注解
- springmvc常用的注解
- JSF的常用注解
- 简单常用的注解
- junit的常用注解
- springmvc 常用的注解
- TestNG的常用注解
- webservice的常用注解
- Spring常用的注解
- Spring的常用注解
- Struts2的常用注解
- java中OOA,OOT, OOP, OOD, OOSM,OOM英文表示的含义是什么?
- 《算法导论》笔记 第6章 6.3建堆
- 中位数的意义
- 国内编程学习网站
- "TNS-01190: 用户无权执行所请求的监听程序命令"
- 常用注解的使用
- 局部刷新
- 《计算机程序的构造和解释》学习笔记——过程抽象
- 【走进Lua的世界之三】lua的堆栈到底为何物?
- js静态方法[10]
- 往事如烟一些人一些事过去了就让他过去吧
- windows+SDK编程入门介绍
- Python - 习题
- 脑波设备mindwave介绍