被关联类的实体名" type="text/javascript">
频道栏目
首页 > 资讯 > 其他综合 > 正文

hibernate关联映射

16-07-20        来源:[db:作者]  
收藏   我要投稿

many2one

实例函数
public class Group {

	private int id;
	private String name;

	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;
	}

}

public class User {

	private int id;
	private String name;
	private String password;
	private Group group;

	public Group getGroup() {
		return group;
	}

	public void setGroup(Group group) {
		this.group = group;
	}

	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;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}

配置文件
Group.hbm.xml
    
 
    

	
	
		
	
	
	
 
User.hbm.xml
    
 
    

	
	
		
	
	
	
	
		
	
	

各属性含义:
name="属性名"
column="外键字段名" //可选,默认与name同值。也可以用嵌套的 元素。
class="关联的完整类名"//可选,默认是通过反射得到属性类型。
entity-name="被关联类的实体名" > //被关联类的实体名
lazy="true|false(默认)" //是否支持Lazy加载,默认为true
cascade="none(默认)|all|save-update|delete|delete-orphan" //级联风格可组合
//all : 所有操作都传递到相关联的对象
//save-update 保存和更新传递到相关联的对象。假定该配置文件的对象是主体,只有对主体save或者update时,该设置生效。
//delete 删除操作传递到相关联的对象
//delete-orphan : 所有操作都传递到相关联的对象 并删除不再与父对象关联的对象
fetch="join|select(默认)" // (可选 - 默认为 select ): 在外连接抓取(outer-join fetching)和序列选择抓取(sequential select fetching)两者中选择其一。
update="true(默认)|false"
insert="true(默认)|false" //同property的udpate、delete,是否更新和删除。
property-ref="关联类的属性值" // (可选) 指定关联类的一个属性,作为外键的值。 默认是关联类的主键。
not-found="ignore|exception(默认)" // property-ref引用的数据不存在时如何处理: ignore设为null。
access="field|property(默认)|ClassName" //Hibernate用来访问属性的策略。
unique="true|false" //使用DDL为外键字段生成一个唯一约束。此外, 这也可以用作 property-ref的目标属性。这使关联同时具有 一对一的效果。
not-null="true|false" //使用DDL为外键字段生成一个非空约束。
optimistic-lock="true(默认)|false" //是否需要获得乐观锁定(optimistic lock),它决定这个属性发生脏数据时版本(version)的值是否增长。
 
 
数据库
 

one2many单向

实例函数
import java.util.Set;

public class Class {

	private int cid;
	private String name;
	private Set students;

	public int getCid() {
		return cid;
	}

	public void setCid(int cid) {
		this.cid = cid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Set getStudents() {
		return students;
	}

	public void setStudents(Set students) {
		this.students = students;
	}

}

public class Student {

	private int sid;
	private String name;
	private Class class1;

	public int getSid() {
		return sid;
	}

	public void setSid(int sid) {
		this.sid = sid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Class getClass1() {
		return class1;
	}

	public void setClass1(Class class1) {
		this.class1 = class1;
	}

}
 
配置文件

Student.hbm.xml
    
 
    

	
	
		
	
	
	

Class.hbm.xml
    
 
    

	
	
		
	
	
	
	
		
		
	
	
 
数据库

one2many双向

实例函数和one2many单向一样
 
配置文件
 
Class.hbm.xml
    
 
    

	
	
		
	
	
	
	
		
		
	
	

Student.hbm.xml
    
 
    

	
	
		
	
	
	
		
	
	


数据库
 

many2many单向

实例函数
 
public class User {

	private int id;
	private String name;
	Set roles;

	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;
	}

	public Set getRoles() {
		return roles;
	}

	public void setRoles(Set roles) {
		this.roles = roles;
	}

}

import java.util.Set;

public class Role {

	private int id;
	private String name;
	Set users;

	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;
	}

	public Set getUsers() {
		return users;
	}

	public void setUsers(Set users) {
		this.users = users;
	}

}

配置文件
 
Role.hbm.xml
 
    
 
    

	
	
		
	
	
	

User.hbm.xml
    
 
    

	
	
		
	
	
	
 
数据库

many2many双向

实例函数和User.hbm.xml和User.hbm.xml与many2many单向一样
 
Role.hbm.xml
    
 
    

	
	
		
	
	
	
		
		
	
	

数据库

one2one单向

实例函数
public class IDCard {

	private int id;
	private String cardNum;
	private User user;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getCardNum() {
		return cardNum;
	}

	public void setCardNum(String cardNum) {
		this.cardNum = cardNum;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

}
 
public class User {

	private int id;
	private String name;
	private IDCard idCard;


	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;
	}

	public IDCard getIdCard() {
		return idCard;
	}

	public void setIdCard(IDCard idCard) {
		this.idCard = idCard;
	}

}

one2one唯一外键

配置文件
IDCard.hbm.xml
    
 
    

	
	
		
	
	
	

User.hbm.xml
    
 
    

	
	
		
	
	
	
		
	
	

 
 

one2one主键参照

配置文件
IDCard.hbm.xml
    
 
    

	
	
		
	
	
	

User.hbm.xml(constrained="true"必须为true)
    
 
    

	
	
		
		
		idCard
		
	
	
	
	
	
 
数据库
 

one2one双向

实例函数和one2one相同
 

one2one唯一外键

配置文件
IDCard.hbm.xml
    
 
    

	
	
		
	
	
	
	
	


User.hbm.xml
    
 
    

	
	
		
	
	
	
		
	
	

one2one唯一外键

配置文件
IDCard.hbm.xml
    
 
    

	
	
		
	
	
	
	
	


User.hbm.xml
    
 
    

	
	
		
		
		
			idCard
		
	
	
	
	
	
数据库

 
 
相关TAG标签
上一篇:ImageLoader的简单分析(五)
下一篇:Web移动端布局
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站