博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate的Annotation
阅读量:6854 次
发布时间:2019-06-26

本文共 4126 字,大约阅读时间需要 13 分钟。

  hot3.png

3、Hibernate的Annotation

特别注意:Hibernate的Annotation要依赖于JPA包。

在Hibernate的3.5之前都需要下载Hibernate的Annotation的jar包,在3.5之后Hibernate的Annotation jar包已

经集成到Hibernate包中了。

3.1、基本映射

//注意是javax.persistence.Entity@Entity//设置表名@Table(name="t_user")public class User {	private int id;	private String username;	private String password;	private String nickname;	private Date born;	private Date createDate;		//@Column可以为这个字段进行定义	@Column(name="create_date")	public Date getCreateDate() {		return createDate;	}	public void setCreateDate(Date createDate) {		this.createDate = createDate;	}		//标志为id属性	@Id	//GeneratedValue表示自动递增	@GeneratedValue	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}

3.2、一对一

@Entity@Table(name="t_id_card")public class IDCard {	private int id;	private String no;	private Person person;		@Id	@GeneratedValue	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getNo() {		return no;	}	public void setNo(String no) {		this.no = no;	}		@OneToOne	//@JoinColumn可以设置外键的名称。	//只要使用了OneToOne就会在自己的表中增加外键。	@JoinColumn(name="pid")	public Person getPerson() {		return person;	}	public void setPerson(Person person) {		this.person = person;	}
@Entity@Table(name="t_person")public class Person {	private int id;	private String name;	private IDCard idCard;		//只要设置了@OneToOne就会在自己的表中增加外键,所以只有设置mappedBy="自己在对端的属性名称"	//才能说明关系由对方维护	@OneToOne(mappedBy="person") //对端的属性名称,说明关系由对方来维护	public IDCard getIdCard() {		return idCard;	}	public void setIdCard(IDCard idCard) {		this.idCard = idCard;	}		@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;	}

3.3、一对多

m:1单向:

@ManyToOne(fetch=FetchType.LAZY) //延迟加载	//外键名称	@JoinColumn(name="cid")	public Classroom getClassroom() {		return classroom;	}	public void setClassroom(Classroom classroom) {		this.classroom = classroom;	}

1:m单向:

@OneToMany    //加入到对方表中的外键    @JoinColumn(name="cid")    //等于xml中的lazy="extra"	@LazyCollection(LazyCollectionOption.EXTRA)	public Set
getStudents() { return students; } public void setStudents(Set
students) { this.students = students; }

双向:

@ManyToOne(fetch=FetchType.LAZY) //延迟加载	//外键名称	@JoinColumn(name="cid")	public Classroom getClassroom() {		return classroom;	}	public void setClassroom(Classroom classroom) {		this.classroom = classroom;	}    @OneToMany(mappedBy="classroom")    //@JoinColumn(name="cid")    //设置了mappedBy就已经等于说明由对方维护关系,所以不同在设置JoinColumn	@LazyCollection(LazyCollectionOption.EXTRA)	public Set
getStudents() { return students; } public void setStudents(Set
students) { this.students = students; }

3.4、多对多

多对多双向:

@ManyToMany	//name="t_role_admin"表示关联表的名称,	//joinColumns={@JoinColumn(name="rid")}表示自己在关联表中的外键名称,是数组	//inverseJoinColumns={@JoinColumn(name="aid")}表示对方在关联表中的外键名称,也是数组	@JoinTable(name="t_role_admin",joinColumns={@JoinColumn(name="rid")},				inverseJoinColumns={@JoinColumn(name="aid")})	public Set
getAdmins() { return admins; } public void setAdmins(Set
admins) { this.admins = admins; } @ManyToMany(mappedBy="admins") //由对方维护关系 public Set
getRoles() { return roles; } public void setRoles(Set
roles) { this.roles = roles; }

两个一对多:

@OneToMany(mappedBy="course")	@LazyCollection(LazyCollectionOption.EXTRA)	public Set
getTcs() { return tcs; } public void setTcs(Set
tcs) { this.tcs = tcs; } @OneToMany(mappedBy="teacher") @LazyCollection(LazyCollectionOption.EXTRA) public Set
getTcs() { return tcs; } public void setTcs(Set
tcs) { this.tcs = tcs; } @ManyToOne @JoinColumn(name="tid") public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } @ManyToOne @JoinColumn(name="cid") public Course getCourse() { return course; } public void setCourse(Course course) { this.course = course; }

 

转载于:https://my.oschina.net/pmos/blog/759770

你可能感兴趣的文章
清除zencart分类页多页后面的&disp_order &sort字符串的方法
查看>>
二叉树递归遍历
查看>>
ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
查看>>
Shiro 入门
查看>>
前端性能调优
查看>>
JavaScript prototype 属性
查看>>
XML操作类
查看>>
PTA_Have fun with numbers(C++)
查看>>
iOS日历显示农历信息
查看>>
win10系统配置java环境及遇到问题的一些处理方法
查看>>
记一次Selectable的误用
查看>>
动态规划略有所得 数字三角形(POJ1163)
查看>>
JavaScript中的常用编码
查看>>
HTML5 本地存储
查看>>
C#基础知识
查看>>
[网络流24题] 太空飞行计划 (最大权闭合子图---网络最大流)
查看>>
1、Monkey环境搭建
查看>>
JavaScript的事件监听、捕获和冒泡
查看>>
SpringMVC初写(三)Controller的生命周期
查看>>
Amixer 控制声音
查看>>