`

用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>
		<property name="connection.url">
			jdbc:mysql://localhost/test
		</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>

		<!-- JDBC connection pool (use the built-in) -->
		<property name="connection.pool_size">1</property>



		<!-- Enable Hibernate's automatic session context management -->
		<property name="current_session_context_class">thread</property>

		<!-- Disable the second-level cache  -->
		<property name="cache.provider_class">
			org.hibernate.cache.NoCacheProvider
		</property>

		<!-- Echo all executed SQL to stdout -->
		<property name="show_sql">true</property>

		<property name="format_sql">true</property>
		<!--
			<mapping class="com.hibernate.entity.Husband" />
			<mapping class="com.hibernate.entity.Wife" />
			===================================================
			<mapping class="com.hibernate.entity.Teacher" />
			<mapping class="com.hibernate.entity.Student" />
		-->

		<mapping class="com.hibernate.entity.Tgroup" />
		<mapping class="com.hibernate.entity.Tuser" />
	</session-factory>

</hibernate-configuration>
 


这里会抛错,原因是user类中没有写cascade = CascadeType.ALL

在Tuser类的@ManyToOne(fetch = FetchType.LAZY)中加上cascade = CascadeType.ALL就可以了

@Test
	public void saveUser() {
		Tgroup g = new Tgroup();
		g.setName("g1");
		
		Tuser u = new Tuser();
		u.setName("u1");
		u.setTgroup(g);
		
		Session s = sessionFactory.getCurrentSession();
		s.beginTransaction();
		s.save(u);
		s.getTransaction().commit();//这里会抛错,原因是user类中没有写cascade = CascadeType.ALL
,而默认是不写的。	}

 

 

这个方法也可以持久化两个类

@Test
	public void saveGroup() {
		Tgroup g = new Tgroup();
		g.setName("g1");
		
		Tuser u = new Tuser();
		u.setName("u1");
		u.setTgroup(g);
		
		g.getTusers().add(u);
		
		Session s = sessionFactory.getCurrentSession();
		s.beginTransaction();
		s.save(g);
		
		s.getTransaction().commit();
	}
 

 

分享到:
评论

相关推荐

    myeclipse中hibernate的反向工程

    3. **启动反向工程向导**: 通过MyEclipse的菜单或快捷方式启动Hibernate反向工程向导。 4. **配置映射选项**: 在向导中选择要映射的表,配置实体类生成的位置以及映射文件的命名规则等。 5. **执行反向工程**: 完成...

    hibernate利用配置文件反向生成数据库所有配置文件及方法

    本篇文章将详细讲解如何使用Hibernate通过配置文件反向生成数据库的所有配置文件,以及涉及的相关步骤和技术要点。 首先,Hibernate的反向工程(Reverse Engineering)功能可以帮助开发者从现有的数据库中生成实体...

    利用hibernate自动生成hbm.xml文件和entity类.doc

    "Hibernate反向工程实践指南" 作为一名IT行业大师,我将基于提供的文件信息,生成详细的知识点,帮助读者理解 Hibernate 反向工程的实践。 一、 Hibernate 反向工程概述 Hibernate 反向工程是指使用 Hibernate ...

    Hibernate反向生成EJB注解

    在给定的场景下,我们讨论的是如何使用Hibernate反向工程生成包含EJB注解的实体类。 首先,我们需要创建一个Web项目,这是构建基于Java的Web应用程序的基础。在MyEclipse这样的集成开发环境中,可以方便地创建和...

    myeclipse反向生成jpa

    在IT领域,特别是软件开发与数据库交互层面,MyEclipse作为一个功能强大的集成开发环境(IDE),为Java开发者提供了丰富的工具和特性,其中“反向生成JPA”是其亮点之一。这一过程允许开发者从现有的数据库结构自动...

    使用JPA反向工程 Hibernate工程反向

    在Hibernate中,反向工程(Reverse Engineering)是一种工具,可以从现有数据库生成Java类,这些类代表数据库中的表,从而简化了与数据库交互的过程。 **JPA反向工程过程** 1. **配置数据源**:首先,需要在项目中...

    数据库反向生成基础代码

    2. Hibernate Tools:Hibernate是一个流行的Java持久化框架,其提供的工具集能够从数据库中生成Entity类、映射文件(HBM)以及DAO类。 3. IntelliJ IDEA:这款IDE也有数据库反向工程插件,可以生成JPA实体类和DAO接口...

    hibernate自动生成dao,配置文件等的学习笔记,在myeclipse下实现

    这一过程会根据数据库中的表结构生成相应的Java实体类(Entity)、Hibernate映射文件(`.hbm.xml`)以及DAO接口和实现类。 在生成的Java实体类中,每个字段都会被映射为一个属性,数据库的主键会被映射为类的ID属性...

    myeclipse试用小记----Hibernate多对一自身关联(3)

    8. 数据库反向工程:MyEclipse可以反向工程数据库结构,自动生成对应的实体类和映射文件,这对于快速建立项目非常有用。 通过学习和实践这些知识点,开发者能够更好地理解和运用Hibernate在MyEclipse环境下的多对一...

    基于MyEclipse的SSH2框架构建

    通过创建Web项目、添加Hibernate支持、添加依赖包、使用Hibernate反向工程等一系列操作,最终实现了SSH2框架的基本搭建。掌握了这些步骤和技术要点,可以帮助开发者更加高效地进行Java Web应用开发。

    myeclipse_templates 模板

    这些模板帮助开发者快速生成代码,包括实体类(Entity)、数据访问对象(DAO)以及Hibernate映射文件(HBM XML),从而提高开发效率。 【描述】中提到的"MyEclipse的Hibernate配置的模板"是指在MyEclipse中,用户...

    自动生成代码

    本文将详细介绍如何使用MyEclipse集成开发环境通过Hibernate框架自动生成实体类代码的过程。 #### 二、准备工作 1. **安装配置MyEclipse**: - 确保已经安装了最新版本的MyEclipse IDE。 - 安装所需的插件,如...

    Hibernate流程

    描述中的"反向生成实体类第一步"、"反向生成实体类和映射文件第二步"、"反向生成实体类和映射文件第三步.bmp",这通常是通过MyEclipse或其他IDE工具来完成的,它们可以帮助开发者自动生成基于现有数据库结构的Java...

    hibernate上级学习资料

    在数据库视图下,可以使用反向工程功能,根据已有数据库结构生成Java实体类和对应的映射文件(hibernate-mapping.xml)。实体类对应数据库中的表,属性对应表的字段,而映射文件则描述了实体类与数据库表之间的关系...

    JSP-SSH框架搭建(Myeclipse2014+Tomcat8.0+Mysql).docx

    还需进行Hibernate反向工程,将数据库表映射为Java实体类。 【数据库配置】 1. 创建名为sshtest的数据库,并创建一个t_user表,包含id、username和password字段。 2. 插入一条测试数据。 3. 在MyEclipse中配置...

    java实体类生成工具

    这些工具通常支持从数据库反向工程生成实体类,只需配置好数据库连接信息,选择要生成的表,工具会自动生成符合约定的Java源代码。 在实际使用中,实体类生成工具通常具备以下特性: 1. **定制化模板**:用户可以...

    JSP-SSH框架搭建(Myeclipse2014+Tomcat8.0+Mysql).pdf

    【Hibernate反向工程】 通过Hibernate的反向工程,将数据库表t_user映射为Java实体类,自动生成DAO和映射文件,这样可以直接进行数据库操作。 【编写Java和JSP】 在对应的包中编写Action、Service、DAO的接口和实现...

    Hibernate多表关联配置及错误解决方法

    在Java开发中,Hibernate是一个流行的ORM(Object-Relational Mapping)框架,它允许开发者将数据库操作转换为对象操作,简化了数据库交互。在处理多表关联时,Hibernate提供了多种关联类型,包括一对一(OneToOne),多...

Global site tag (gtag.js) - Google Analytics