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

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 {

	// Fields
	private 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;

	@Id
	public 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 stub
		Transaction 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();
	}

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值