hibernate使用注解的方式进行多对一关联
2015-08-07 21:09
519 查看
1 添加支持jap注解的包;
2 在持久化类中配置注解;
3 在配置中配置映射;
4 用 AnnotationConfigurration配置;
5 常用注解:
@Entity 表示持久化类;
@Id 主键
@GeneratedValue 主键自增
@ManyToOne(cascade=(CascadeType.ALL)) 所有操作进行级联
@@OneToMany(cascade=(CascadeType.ALL),mappedBy="classes") mappedBy 拥有该注解的类放弃控制权
6 双向关联通常和关联双方都加cascade及mappBy一起用;
双向多对一:
2 在持久化类中配置注解;
3 在配置中配置映射;
4 用 AnnotationConfigurration配置;
5 常用注解:
@Entity 表示持久化类;
@Id 主键
@GeneratedValue 主键自增
@ManyToOne(cascade=(CascadeType.ALL)) 所有操作进行级联
@@OneToMany(cascade=(CascadeType.ALL),mappedBy="classes") mappedBy 拥有该注解的类放弃控制权
6 双向关联通常和关联双方都加cascade及mappBy一起用;
双向多对一:
package com.tem.hib; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Student { @Id @GeneratedValue private Integer sid; private String sname; @ManyToOne(cascade=(CascadeType.ALL)) private Classes classes; public Classes getClasses() { return classes; } public void setClasses(Classes classes) { this.classes = classes; } public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } }
package com.tem.hib; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToMany; @Entity public class Classes { @Id @GeneratedValue private Integer cid; private String cname; @OneToMany(cascade=(CascadeType.ALL),mappedBy="classes") private Set<Student> students=new HashSet<Student>(); public Set<Student> getStudents() { return students; } public void setStudents(Set<Student> students) { this.students = students; } public Integer getCid() { return cid; } public void setCid(Integer cid) { this.cid = cid; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } }
package com.tem.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import com.tem.hib.Classes; import com.tem.hib.Student; public class Test { public static void main(String[] args) { Configuration cfg=new AnnotationConfiguration().configure(); // SchemaExport schema=new SchemaExport(cfg); // schema.create(true, true); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); session.beginTransaction(); Student s=new Student(); Classes c=new Classes(); c.setCname("C3"); s.setSname("a1"); s.setClasses(c); c.getStudents().add(s); session.save(c); session.getTransaction().commit(); } }
相关文章推荐
- IOS开发UI篇-NavigationController的控制器之间的跳转
- (转)新特征-信号量
- ISAP算法白书版
- LeetCode (17)Letter Combinations of a Phone Number
- Common Subsequence
- LeetCode (17)Letter Combinations of a Phone Number
- linux 相关使用总结
- JAVA新特征
- DataTable相关操作,筛选,取前N条数据,去重复行,获取指定列数据
- 计算机系统----为什么要学计算机系统?
- java如何得到GET和POST请求URL和参数列表
- hdu 5076 最小割灵活运用
- directive中的参数详解
- (转)JAVA新特征
- (15.1.12)单词之基础技巧
- EM算法
- 设计模式--原型模式
- 我是如何向老婆解释MapReduce的?
- 堆——大根堆
- Scala 深入浅出实战经典 第51讲:Scala中链式调用风格的实现代码实战及其在Spark中应用