最近用hibernate做项目,发现hibernate的问题细节很多,顺手记录下来。
今天跑了一个测试用例,发现保存的时候生成的sql语句,情况不是预期的,我就奇怪了,
后来对照了半天代码才发现,原来是我在做保存的时候,选择的主从表入口点不同,造成了不同的效果。
用hibernate保存从表数据的时候,我们可能选择的入口点也不同。
1 以主表为入口点来保存,
2 以从表为入口点来保存。
3 hql/sql语句或者结构化对象查询 来保存。
现在针对1,2点的情况来说明 如果以主表为入口点保存,
例如CLASS-STUDENT 的一对N关系
此时我们要保存STUDENT对象。
如果以CLASS类为入口点的话,
必须这么做:
Class(班级) class = service.getStudent("id");
Student s = new Student();
s.setClass(class);
classService.save(class);
错误的做法:
Class class =new Class(); class.setId("id");
s.setClass(class);
classService.save(class);
错误的做法会造成一条新的insert语句。
如果以Student为入口点的话:
class对象就不必须是一个持久化态的实例,class可以是一个临时态的实例。
我们可以这么做:
Class class = new Class();
class.setId("id");//此时class是一个瞬时状态的实例,也可以成为临时态
stu.setClass(class);
StuService.saveStu(stu);
分享到:
相关推荐
达梦数据DmDialect-for-hibernate所有jar包,DmDialect-for-hibernate2.0、DmDialect-for-hibernate2.1、DmDialect-for-hibernate3.0、DmDialect-for-hibernate3.1、DmDialect-for-hibernate3.6、DmDialect-for-...
Struts-Hibernate-Nested-Demo 是一个基于Java的Web应用程序示例,主要展示了如何使用Struts框架、JSTL(JavaServer Pages Standard Tag Library)以及Hibernate ORM(对象关系映射)来处理数据库中的主从表关系。...
spring-hibernate.jar
国产达梦数据库hibernate方言包
在Middlegen-Hibernate-r5中,Middlegen的作用在于根据数据库中的表结构生成Hibernate所需的配置文件,如hibernate.cfg.xml和.hbm.xml文件。这些文件定义了数据库表与Java实体类的映射关系,使得Hibernate能够自动...
为了解决这一问题,两个工具——hibernate-extensions和Middlegen-Hibernate应运而生,它们可以自动生成这些代码,提高了开发效率。 **hibernate-extensions** 是Hibernate框架的一个扩展,它提供了一些额外的功能...
1. **安装配置**:首先,你需要下载并配置Middlegen-Hibernate的相关依赖库,如题目中提到的`hibernate-extensions-2.1.3`、`apache-ant-1.8.4`、`Middlegen-Hibernate-r5`和`hibernate-2.1`。Apache Ant是Java项目...
jackson-datatype-hibernate, 用于处理Hibernate的Jackson JSON处理器模块( http,Add 构建 Jackson 模块( jar ) 以支持JSON序列化和反序列化 Hibernate ( http://hibernate.org ) 特定数据类型和属性,特别是延迟...
DmDialect-for-hibernate2.0、DmDialect-for-hibernate2.1、DmDialect-for-hibernate3.0、DmDialect-for-hibernate3.1、DmDialect-for-hibernate3.6、DmDialect-for-hibernate4.0、DmDialect-for-hibernate5.0、...
在Java开发中,特别是在大型企业级应用中,经常需要处理多个数据库的情况,比如主从数据库、读写分离等。在这种场景下,实现双数据源配置是必不可少的技术之一。本篇将详细讲解如何在Java项目中结合SpringBoot和...
在本项目中,开发者可能先创建了MySQL数据库和数据表,然后利用Hibernate的实体类(Entity)和映射文件(Hibernate.cfg.xml)来映射数据库结构。通过Hibernate的Session接口,可以在Java代码中执行SQL语句,实现对...
在"ext-dwr-hibernate"的整合中,EXT负责展示数据和接收用户输入,通过DWR,EXT组件可以透明地调用服务器上的Hibernate服务来处理数据。当用户在EXT界面上进行操作,如添加、删除或修改记录时,这些操作会通过DWR...
综上所述,Hibernate、Hibernate3、Hibernate-Annotations和Middlegen-Hibernate-r5构成了一个强大的Java ORM解决方案,它们共同解决了Java应用中的数据库持久化问题,大大简化了开发流程,提高了开发效率。...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
标题中的"hibernate保存不到数据1"是一个关于Hibernate框架在尝试保存数据到数据库时遇到问题的场景。描述提到了一个具体的解决方案,即通过在`hibernate.cfg.xml`配置文件中设置`connection.autocommit`属性为`true...
网上有关主从表提交的资料非常的少,可怜我刚刚入门,一切都得自己想办法解决,经过N天的努力,总算是搞定了。程序写的有点徒省事,所以请别见笑。 本来想用struts-nested标签来实现的,折腾了7个小时都搞不定,...
《Middlegen与Hibernate的深度探索——以Middlegen-Hibernate-r5.rar为例》 在IT行业中,数据库管理和持久化层的设计是至关重要的环节。Middlegen与Hibernate这两个工具,正是为了解决这些问题而生。Middlegen-...
如果修改了Student或Course对象的关联关系,然后调用`session.update(student)`或`session.update(course)`,Hibernate会自动更新关联表中的记录,以反映新的关系状态。 六、级联删除 当调用`session.delete...
在这个项目中,"3struts-spring-hibernate.txt"、"5springmvc-hibernate-jpa.txt"、"1struts.txt"、"4struts-spring-hibernate-jpa.txt"、"2struts-spring.txt"这些文件可能是关于Struts框架与其他组件整合的文档或...