日期:2014-05-16  浏览次数:20572 次

用myeclipse的Hibernate 反向引擎 生成 数据库的 entity

把 Myeclipse 转到DB Browser

?

新建一个Database Connection driver

?

然后找到要反向工程的表

?

右键->Hibernate Reverse Engineering

然后,选好entity缩放的目录

对 Create POJO<>DB Table mapping information 打钩

然后点选 AddHibernate mapping annotations to POJO

再点选Update Hibernate configuration with mapping resource location

?

其他钩全部去掉,点击下一步,直至结束就可以

?

这样生成的entity

?

这里只说一对多和多对一

?

例:用户和组为多对一关系,双向

?

用户类:

package com.hibernate.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * Tuser entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "tuser", catalog = "test")
public class Tuser implements java.io.Serializable {

	// Fields

	/**
	 * 
	 */
	private static final long serialVersionUID = -7792597282750540598L;
	private Integer id;
	private Tgroup tgroup;
	private String name;

	// Constructors

	/** default constructor */
	public Tuser() {
	}

	/** full constructor */
	public Tuser(Tgroup tgroup, String name) {
		this.tgroup = tgroup;
		this.name = name;
	}

	// Property accessors
	@Id
	@GeneratedValue
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "groupid")
	public Tgroup getTgroup() {
		return this.tgroup;
	}

	public void setTgroup(Tgroup tgroup) {
		this.tgroup = tgroup;
	}

	@Column(name = "name")
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

?

组类:

package com.hibernate.entity;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Tgroup entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "tgroup", catalog = "test")
public class Tgroup implements java.io.Serializable {

	// Fields

	/**
	 * 
	 */
	private static final long serialVersionUID = -7208715716759269846L;
	private Integer id;
	private String name;
	private Set<Tuser> tusers = new HashSet<Tuser>(0);

	// Constructors

	/** default constructor */
	public Tgroup() {
	}

	/** full constructor */
	public Tgroup(String name, Set<Tuser> tusers) {
		this.name = name;
		this.tusers = tusers;
	}

	// Property accessors
	@Id
	@GeneratedValue
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@Column(name = "name")
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tgroup")
	public Set<Tuser> getTusers() {
		return this.tusers;
	}

	public void setTusers(Set<Tuser> tusers) {
		this.tusers = tusers;
	}

}

?

<?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.MySQLDialect
		</property>
		<pr