hibernate使用注解的方式进行多对一关联

来源:互联网 发布:sqlserver入门到精通 编辑:程序博客网 时间:2024/06/05 03:29


1 添加支持jap注解的包;

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;@Entitypublic class Student {@Id@GeneratedValueprivate 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;@Entitypublic class Classes {@Id@GeneratedValueprivate 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();}}




0 0
原创粉丝点击