hibernate中的一对多(双向关系)

来源:互联网 发布:js touchevent 编辑:程序博客网 时间:2024/06/05 05:49

Dept

package com.wxh.dto;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;@Entitypublic class Dept {private int dno;private String dname;private String tel;private Set<Emp> emps=new HashSet();public Dept() {}public Dept(int dno, String dname, String tel) {this.dno = dno;this.dname = dname;this.tel = tel;}@Idpublic int getDno() {return dno;}public void setDno(int dno) {this.dno = dno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}@OneToMany(fetch=FetchType.LAZY,cascade={CascadeType.ALL},mappedBy="dept")public Set<Emp> getEmps() {return emps;}public void setEmps(Set<Emp> emps) {this.emps = emps;}}

Emp

package com.wxh.dto;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;@Entitypublic class Emp {private int eno;private String ename;private String job;private double sal;private Dept dept;public Emp() {}public Emp(int eno, String ename, String job, double sal) {super();this.eno = eno;this.ename = ename;this.job = job;this.sal = sal;}@Idpublic int getEno() {return eno;}public void setEno(int eno) {this.eno = eno;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public double getSal() {return sal;}public void setSal(double sal) {this.sal = sal;}@ManyToOne(fetch=FetchType.EAGER,cascade={CascadeType.ALL})@JoinColumn(name="dno")public Dept getDept() {return dept;}public void setDept(Dept dept) {this.dept = dept;}}

Test

package test;import org.hibernate.Session;import com.wxh.dto.Dept;import com.wxh.dto.Emp;import com.wxh.sessionfactory.HibernateSessionFactory;public class Test {public static void main(String[] args) {Dept d=new Dept(10,"研发部","10086");Emp e1=new Emp(1,"张三","项目经理",12000);Emp e2=new Emp(2,"李四","测试经理",8000);Emp e3=new Emp(3,"王五","产品经理",22000);//指定员工所在部门e1.setDept(d);e2.setDept(d);e3.setDept(d);//将员工对象设置到集合中d.getEmps().add(e1);d.getEmps().add(e2);d.getEmps().add(e3);Session session=HibernateSessionFactory.getSession();session.beginTransaction();session.save(d);session.getTransaction().commit();}}


hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="hbm2ddl.auto">update</property><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property><property name="connection.username">hibernate</property><property name="connection.password">m123</property><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><property name="myeclipse.connection.profile">oracle</property><property name="show_sql">true</property><property name="format_sql">true</property><mapping class="com.wxh.dto.Dept"/><mapping class="com.wxh.dto.Emp"/></session-factory></hibernate-configuration>





0 0