- 浏览: 662156 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (345)
- java (63)
- Struts2 (11)
- Spring2.5 + (17)
- Hibernate (25)
- Struts2 Spring hibernate (5)
- log4j (3)
- apache tomcat (12)
- oracle (22)
- oracle_存储过程 (4)
- mysql (18)
- jquery (11)
- prototype (5)
- js (19)
- quartz (5)
- 设计模式 (6)
- eclipse/MyEclipse 注意事项 (9)
- eclipse (0)
- css (6)
- 正则表达式 (2)
- linux (18)
- PHP (6)
- 多线程 (20)
- XML (1)
- jstl (3)
- mongoDB (7)
- android (20)
- 反射 (1)
- IOS (46)
- SVN (3)
- C/C++ (4)
- 百度地图 (2)
- IO/SOCKET (3)
- 百度地图JS (1)
- 树莓派/香蕉派 (1)
最新评论
-
anny101:
想转发一下,不知道怎么转发。评论一下吧。方便查看。
fetch = FetchType.EAGER 作用 -
Navee:
果然我这也是是防火墙问题
解决 Linux 安装 httpd局域网无法访问 -
dhyang909:
...
oracle 10g+ 行列转换 -
国产希特勒:
真强,居然有人把公司的面试题挂到javaeye上了
锦江国际的一道面试题(很简单) -
tomfish88:
比如我要拦截不同业务的service类里面的方法 @Poi ...
Spring AOP annotation 拦截表达式 分析
把 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(); }
发表评论
-
OneToMany字段序列化 failed to lazily initialize a collection of role
2014-06-06 18:51 1509hibernate项目中,如果要对onetomany的po ... -
hibernate 本地查询 字段别名 映射到 DTO时注意事项
2014-04-22 13:54 3553本地原生SQL: SELECT pole.pId as ... -
实体中的数据库字段有关键字
2014-03-26 15:08 1026mysql中如果表的字段设成了关键字,那么在做某些操作时会抛 ... -
Spring +hibernate 声明式 事物 + annotation
2012-03-22 19:49 955在applicationContext.xml中 &l ... -
Hibernate distinct
2012-02-15 18:05 1099/** * 得到大区编号和名称 * @ret ... -
@Transactional 事务回滚 分析
2011-11-08 16:51 4320@Transactional 事务回滚 Spring的 ... -
Hibernate 性能优化_3
2011-10-25 15:54 639二级缓存 对于二级缓存,其实并不一定要在项目中使用 ... -
Hibernate 性能优化_2
2011-10-20 17:51 854createQuery("FROM ****&quo ... -
Hibernate 性能优化_1
2011-10-18 18:39 1011大概如此:不一定说在每个项目中都合适 1、 使用se ... -
Hibernate 的 Criteria用法,完整的一个例子
2011-10-18 16:49 1151数据库: /* MySQL Data Transfer ... -
转的:Hibernate 的 Criteria用法
2011-10-18 16:37 1341方法 说明 Restric ... -
Hibernate 的 join
2011-10-18 13:29 1027转的: 1.如果没有在Hibernate配置里做关 ... -
fetch = FetchType.EAGER 作用
2011-10-13 11:47 28764如果是EAGER,那么表示取出这条数据时,它关联的数据也同时取 ... -
Hibernate annotation 多对多双向关联(很少用)
2011-09-21 16:44 1719双向关联 在认为的 主表 上用到 @JoinTable ... -
Hibernate annotation 多对多单向关联
2011-09-21 16:33 1634package com.hibernate.entity ... -
Hibernate annotation 一对多,多对一
2011-09-21 16:03 1979package com.hibernate.entity ... -
Hibernate annotation 联合主键
2011-09-20 15:31 1560Hibernate annotation 联合主键 ... -
Hibernate annotation 的各种关系
2011-09-15 15:59 1019转的: 一、@OneToOne Java ... -
Hibernate 双向关联
2011-09-15 15:55 1005不管是啥关联,只要是双向,都必须用到mappedBy ... -
OneToOne annotation 双向关联
2011-09-15 15:51 1211package com.hibernate.entity ...
相关推荐
3. **启动反向工程向导**: 通过MyEclipse的菜单或快捷方式启动Hibernate反向工程向导。 4. **配置映射选项**: 在向导中选择要映射的表,配置实体类生成的位置以及映射文件的命名规则等。 5. **执行反向工程**: 完成...
本篇文章将详细讲解如何使用Hibernate通过配置文件反向生成数据库的所有配置文件,以及涉及的相关步骤和技术要点。 首先,Hibernate的反向工程(Reverse Engineering)功能可以帮助开发者从现有的数据库中生成实体...
"Hibernate反向工程实践指南" 作为一名IT行业大师,我将基于提供的文件信息,生成详细的知识点,帮助读者理解 Hibernate 反向工程的实践。 一、 Hibernate 反向工程概述 Hibernate 反向工程是指使用 Hibernate ...
在给定的场景下,我们讨论的是如何使用Hibernate反向工程生成包含EJB注解的实体类。 首先,我们需要创建一个Web项目,这是构建基于Java的Web应用程序的基础。在MyEclipse这样的集成开发环境中,可以方便地创建和...
在IT领域,特别是软件开发与数据库交互层面,MyEclipse作为一个功能强大的集成开发环境(IDE),为Java开发者提供了丰富的工具和特性,其中“反向生成JPA”是其亮点之一。这一过程允许开发者从现有的数据库结构自动...
在Hibernate中,反向工程(Reverse Engineering)是一种工具,可以从现有数据库生成Java类,这些类代表数据库中的表,从而简化了与数据库交互的过程。 **JPA反向工程过程** 1. **配置数据源**:首先,需要在项目中...
2. Hibernate Tools:Hibernate是一个流行的Java持久化框架,其提供的工具集能够从数据库中生成Entity类、映射文件(HBM)以及DAO类。 3. IntelliJ IDEA:这款IDE也有数据库反向工程插件,可以生成JPA实体类和DAO接口...
这一过程会根据数据库中的表结构生成相应的Java实体类(Entity)、Hibernate映射文件(`.hbm.xml`)以及DAO接口和实现类。 在生成的Java实体类中,每个字段都会被映射为一个属性,数据库的主键会被映射为类的ID属性...
5. 使用Hibernate反向工程生成实体类和映射文件: - 在DB Browser中选择所有需要的表,右键选择"Hibernate Reverse Engineering..."。 - 配置反向工程的生成路径和包名,生成实体类和`hbm.xml`文件。 6. 实现业务...
8. 数据库反向工程:MyEclipse可以反向工程数据库结构,自动生成对应的实体类和映射文件,这对于快速建立项目非常有用。 通过学习和实践这些知识点,开发者能够更好地理解和运用Hibernate在MyEclipse环境下的多对一...
通过创建Web项目、添加Hibernate支持、添加依赖包、使用Hibernate反向工程等一系列操作,最终实现了SSH2框架的基本搭建。掌握了这些步骤和技术要点,可以帮助开发者更加高效地进行Java Web应用开发。
这些模板帮助开发者快速生成代码,包括实体类(Entity)、数据访问对象(DAO)以及Hibernate映射文件(HBM XML),从而提高开发效率。 【描述】中提到的"MyEclipse的Hibernate配置的模板"是指在MyEclipse中,用户...
本文将详细介绍如何使用MyEclipse集成开发环境通过Hibernate框架自动生成实体类代码的过程。 #### 二、准备工作 1. **安装配置MyEclipse**: - 确保已经安装了最新版本的MyEclipse IDE。 - 安装所需的插件,如...
利用Hibernate提供的反向工程功能,自动生成与数据库表相对应的实体类和映射文件。 1. **打开数据库连接**:在DB Browser窗口中双击刚创建的数据库连接项。 2. **执行反向工程**: - 在DB Browser窗口中选中所有...
描述中的"反向生成实体类第一步"、"反向生成实体类和映射文件第二步"、"反向生成实体类和映射文件第三步.bmp",这通常是通过MyEclipse或其他IDE工具来完成的,它们可以帮助开发者自动生成基于现有数据库结构的Java...
在数据库视图下,可以使用反向工程功能,根据已有数据库结构生成Java实体类和对应的映射文件(hibernate-mapping.xml)。实体类对应数据库中的表,属性对应表的字段,而映射文件则描述了实体类与数据库表之间的关系...
还需进行Hibernate反向工程,将数据库表映射为Java实体类。 【数据库配置】 1. 创建名为sshtest的数据库,并创建一个t_user表,包含id、username和password字段。 2. 插入一条测试数据。 3. 在MyEclipse中配置...
这些工具通常支持从数据库反向工程生成实体类,只需配置好数据库连接信息,选择要生成的表,工具会自动生成符合约定的Java源代码。 在实际使用中,实体类生成工具通常具备以下特性: 1. **定制化模板**:用户可以...
【Hibernate反向工程】 通过Hibernate的反向工程,将数据库表t_user映射为Java实体类,自动生成DAO和映射文件,这样可以直接进行数据库操作。 【编写Java和JSP】 在对应的包中编写Action、Service、DAO的接口和实现...
在Java开发中,Hibernate是一个流行的ORM(Object-Relational Mapping)框架,它允许开发者将数据库操作转换为对象操作,简化了数据库交互。在处理多表关联时,Hibernate提供了多种关联类型,包括一对一(OneToOne),多...