hibernate映射关系注解配置:
Hibernate实体关系:双向关联,mappedBy必设
注解方式
1、一对一单向
@Entity
public class Husband{
@Id
@GenerateValue
pirvate int id;
private String name;
@OneToOne
@JoinColumn(name="wifeId")
private Wife wife;
}
@Entity
public class Wife{
@Id
@GenerateValue
private int id;
private String name;
}
2.、一对一双向
@Entity
public class Husband{
@Id
@GenerateValue
pirvate int id;
private String name;
@OneToOne
@JoinColumn(name="wifeId")
private Wife wife;
}
@Entity
public class Wife{
@Id
@GenerateValue
private int id;
private String name;
@OneToOne(mappedBy="wife")
private Husband husband;
}
3.、一对多单向
package com.bjsxt.hibernate;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="t_group")
public class Group {
private int id;
private String name;
private Set<User> users = new HashSet<User>();
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany
@JoinColumn(name="groupId") //不加出现3张表
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
package com.bjsxt.hibernate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4、多对一单向
package com.bjsxt.hibernate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="t_group")
public class Group {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.bjsxt.hibernate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
private int id;
private String name;
private Group group;
@ManyToOne
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
5、一对多双向
package com.bjsxt.hibernate;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="t_group")
public class Group {
private int id;
private String name;
private Set<User> users = new HashSet<User>();
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany(mappedBy="group")
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
package com.bjsxt.hibernate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
private int id;
private String name;
private Group group;
@ManyToOne
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
6、多对多单向
@Entity
public class Student {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Teacher {
private int id;
private String name;
private Set<Student> students = new HashSet<Student>();
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
) //改变中间表的名字和字段名字
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
7、多对多双向
@Entity
public class Student {
private int id;
private String name;
private Set<Teacher> teachers = new HashSet<Teacher>();
@ManyToMany(mappedBy="students")
public Set<Teacher> getTeachers() {
return teachers;
}
public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Teacher {
private int id;
private String name;
private Set<Student> students = new HashSet<Student>();
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
)
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
注解意思介绍
a) @Entity 映射一个实体类
@Table 指定关联的表
b) @Id 映射OID
c) @GeneratedValue 指定OID的生成策略
@GeneratedValue的属性strategy指定生成策略,
IDENTITY(自增长方式,如mysql)
SEQUENCE (序列方式,如oracle)
TABLE (表方式,该方式便于数据库移植,但效率不高,主键的值是从这个表中取得的。)
AUTO (自动方式,该方式会把主键生成交给JPA的实现者来决定,Hibernate会根据底层数据库选择合适的方 式,如果用这种方式,可以不写,默认如此)
例如:@GenericGenerator(name="uuid_s",strategy="uuid")
d) @Version 映射版本号属性
e) @Column 指定属性对应的列的信息
f) @Temporal 指定日期时间的类型(TIMESTAMP,DATE,TIME)
g) 简单属性可以不用注解。默认就是@Basic
h) @Transient 指定属性不需要映射
i) 复杂属性:关联,继承,组件,联合主键,集合
分享到:
相关推荐
Hibernate.jar包,Hibernate可以应用在任何使用JDBC的场合,包含 hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-...
hibernate-release-4.0.0.Final.zip
mappedBy属性用法: 该属性与关联关系的维护权相关。 该属性应放在放弃维护权一方。 该属性值为对方的关联属性,表明以后的...一个是使被注解者与DB相关,一个是使被注解者放弃与DB的关系,它们是相互矛盾的。
hibernate注解处理映射关系共14页.pdf.zip
hibernate-release-5.0.7.Final压缩包 -document -lib -project 内部Hibernate依赖库: antlr-2.7.7.jar dom4j-1.6.1.jar geronimo-jta_1.1_spec-1.1.1.jar hibernate-commons-annotations-5.0.1.Final.jar ...
包含hibernate所有所需jar包还有一些其他包日志包、jpa支持包等: 列如:hibernate-core-5.1.0.Final.jar hibernate-ehcache-5.1.0.Final.jar hibernate-entitymanager-5.1.0.Final.jar hibernate-envers-5.1.0....
hibernate-entitymanager-3.4.0.GA.rar hibernate-entitymanager-3.4.0.GA.rar hibernate-entitymanager-3.4.0.GA.rar hibernate-entitymanager-3.4.0.GA.rar hibernate-entitymanager-3.4.0.GA.rar hibernate-...
hibernate-core-4.1.8.Final.jar hibernate-core-4.1.8.Final.jar hibernate-core-4.1.8.Final.jar hibernate-core-4.1.8.Final.jar
hibernate 用的较频繁的jar包,或者文档
hibernate-validator-6.0.14.Final.jar
hibernate-commons-annotations-5.0.1.Final.jar的源码
hibernate-commons-annotations-5.1.0.Final.jar
hibernate-core-4.1.0.Final.jar
hibernate-release-4.3.10.Final.zip 官方原版,因上传文件大小限制,去掉里面的project
解析:来源:Hibernate提供了Hibernate Annotations扩展包,它可以替换复杂的hbm.xml文件( Annotations扩展包是hibernate-annotation-3.4.0GA.zip) 作用:使得Hibernate程序的开发大大的简化。利用注解后,可不用...
hibernate-validator-4.1.0.Final.rar
hibernate-core-5.3.7.Final.jar包的源码,仅供学习使用