hibernate EJB注解双向(一对多、多对一)例子

来源:互联网 发布:nba2k17 for mac 编辑:程序博客网 时间:2024/06/03 02:32
1.pojo(DEPT)
package org.hzy.entity;import java.util.HashSet;import java.util.Set;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;import javax.persistence.SequenceGenerator;import javax.persistence.Table;@Entity@Table(name = "Dept", schema = "SCOTT")@SequenceGenerator(name = "ds", allocationSize = 1, sequenceName = "..dept_seq")public class Dept implements java.io.Serializable {private Integer deptno;private String dname;private String loc;private Set<Emp> emps=new HashSet<Emp>();@Id@GeneratedValue(generator = "ds", strategy = GenerationType.SEQUENCE)public Integer getDeptno() {return this.deptno;}@Basic// 不加的话默认是@Basic,如果列名不同,则要加上@Column指定public void setDeptno(Integer deptno) {this.deptno = deptno;}public String getDname() {return this.dname;}public void setDname(String dname) {this.dname = dname;}public String getLoc() {return this.loc;}public void setLoc(String loc) {this.loc = loc;}@OneToMany(fetch=FetchType.LAZY,targetEntity=Emp.class)@JoinColumn(name="deptno")public Set<Emp> getEmps() {return emps;}public void setEmps(Set<Emp> emps) {this.emps = emps;}public Dept() {}public Dept(Integer deptno, String dname, String loc) {this.deptno = deptno;this.dname = dname;this.loc = loc;}}

2.pojo(EMP)

package org.hzy.entity;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;/** * Emp entity. @author MyEclipse Persistence Tools */@Entity@Table(name = "Emp", schema = "SCOTT")public class Emp implements java.io.Serializable {// Fieldsprivate Integer empno;private String ename;private String job;private Integer mgr;private Date hiredate;private Double sal;private Double comm;// @Column(name="deptno")// private Integer dept;//单表则可以,且是Integer类型private Dept dept;@Idpublic Integer getEmpno() {return this.empno;}public void setEmpno(Integer empno) {this.empno = empno;}@ManyToOne(fetch = FetchType.LAZY, targetEntity = Dept.class)@JoinColumn(name = "deptno")public Dept getDept() {return this.dept;}public void setDept(Dept dept) {this.dept = dept;}public String getEname() {return this.ename;}public void setEname(String ename) {this.ename = ename;}public String getJob() {return this.job;}public void setJob(String job) {this.job = job;}public Integer getMgr() {return this.mgr;}public void setMgr(Integer mgr) {this.mgr = mgr;}public Date getHiredate() {return this.hiredate;}public void setHiredate(Date hiredate) {this.hiredate = hiredate;}public Double getSal() {return this.sal;}public void setSal(Double sal) {this.sal = sal;}public Double getComm() {return this.comm;}public void setComm(Double comm) {this.comm = comm;}public Emp() {}/*public Emp(Integer empno, Integer dept, String ename, String job,Integer mgr, Date hiredate, Double sal, Double comm) {this.empno = empno;this.dept = dept;this.ename = ename;this.job = job;this.mgr = mgr;this.hiredate = hiredate;this.sal = sal;this.comm = comm;}*/public Emp(Integer empno, Dept dept, String ename, String job, Integer mgr,Date hiredate, Double sal, Double comm) {this.empno = empno;this.dept = dept;this.ename = ename;this.job = job;this.mgr = mgr;this.hiredate = hiredate;this.sal = sal;this.comm = comm;}}
3.主配置文件:

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   --><hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><property name="hibernate.current_session_context_class">thread</property><property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property><property name="connection.username">hzy</property><property name="connection.password">accp</property><property name="connection.driver_class">oracle.jdbc.OracleDriver</property><property name="myeclipse.connection.profile">oracle.jdbc.OracleDriver</property><property name="show_sql">true</property><property name="format_sql">true</property><mapping class="org.hzy.entity.Dept" /><mapping class="org.hzy.entity.Emp" /></session-factory></hibernate-configuration>

4.测试文件:

package org.hzy.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.cfg.Configuration;import org.hzy.entity.Dept;import org.hzy.entity.Emp;public class test1 {/** * @param args */static Configuration config=new AnnotationConfiguration().configure();static SessionFactory fac=config.buildSessionFactory();static Session sess=fac.getCurrentSession();public static void main(String[] args) {// TODO Auto-generated method stubTransaction tr=sess.beginTransaction();Dept d=(Dept) sess.get(Dept.class, 10);System.out.println(d.getEmps().size());//Emp emp=(Emp) sess.get(Emp.class, 7369);//System.out.println(emp.getDept().getDname());tr.commit();}}




原创粉丝点击