最近在熟习新公司的项目,看到里面乱麻麻的SQL语句,if - else语句就头大,虽然这个项目有用hibernate,但是感觉上没有运用到hibernate的优势,只是用了一些hql语句和hibernate的数据库分页。没有延迟加载,没有联级操作,表也没有建立约束,甚至没有索引。现在该项目已经算是做完了,我刚到,要去接手并修改里面的内容,真是很痛苦的,最痛苦的还是那512的内存。。。
在一开始建立数据库表时,建立好约束,建立好索引,表的设计合理,之后的一切都会是很美好的。比如有3张表:
学生:t_student
id
name
email
科目:t_subjects
id
subjects name
student_id
考试:t_test
id
student_id
subjects_id
month
times
学生表和科目表,学生表和考试表,科目和考试都是一对多关系。建立好索引和约束,然后由hibernate自动生成hbm文件,并在学生表、科目表的hbm文件里设置inverse="true" cascade="all" lazy="true"。
就大致配置好了,然后假如要录入这样一条涉及到3个表的记录:
学生姓名、email、科目名称、月份、考试次数
就只需要写一个简单的方法调用session.save就可以保存所有内容了:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaActionForm student_registerForm = (DynaActionForm) form;// TODO Auto-generated method stub
//receive from actionform
String strname = student_registerForm.getString("name");
String stremail = student_registerForm.getString("email");
String strsubjectname = student_registerForm.getString("subjectname");
int intmonth = Integer.parseInt(student_registerForm.getString("month"));
int inttimes = Integer.parseInt(student_registerForm.getString("times"));
TStudent tStudent = new TStudent();
tStudent.setName(strname);
tStudent.setEmail(stremail);
//set the subject
TSubjects Tsubjects = new TSubjects();
Tsubjects.setTStudent(tStudent);
Tsubjects.setName(strname);
tStudent.getTSubjectses().add(Tsubjects);
//set the test
TTest Ttest = new TTest();
Ttest.setTStudent(tStudent);
Ttest.setMonth(intmonth);
Ttest.setTimes(inttimes);
tStudent.getTTests().add(Ttest);
//insert all
tstudentDAO.insert(tStudent);
return mapping.findForward("ok");
}
tstudentDAO只有一个操作:
session.save(tStudent);
之后可以看到3个表里的记录都同时增加好了。
分享到:
相关推荐
**hibernate+spring复习大纲** 在Java Web开发领域,Hibernate和Spring是两个至关重要的框架。Hibernate是一个对象关系映射(ORM)框架,它简化了数据库操作,而Spring则是一个全面的企业级应用框架,提供了依赖...
- **映射机制**:包括基础映射(类与表的映射)、继承映射(单表继承、多表继承)、组件映射(对象内部结构的映射)以及集合映射(一对多、多对一、多对多等关系的映射)。 3. **HQL查询**: - Hibernate Query ...
总结起来,Hibernate的多对多关联映射是通过中间表来实现的,通过`@ManyToMany`注解进行配置,并通过`@JoinTable`来指定中间表的细节。理解和熟练掌握这一特性,对于高效地管理数据库中的复杂关联关系至关重要。在...
本文将深入探讨Hibernate中的关联映射,特别是“一对多”和“多对一”的关系映射,这对于理解如何在Java应用程序中处理复杂的数据库交互至关重要。 一、Hibernate简介 Hibernate是Java平台上的一个开源ORM框架,它...
Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使开发者无需关注底层SQL语句,就能实现对数据库的数据操作。本复习旨在深入理解Hibernate的核心概念、配置及常用API,帮助开发者提高...
一对一关联通常用于两个表之间有唯一对应关系的情况,而多对多关联则允许一个实体与多个其他实体相互关联,如学生和课程的关系。 3. **Hibernate查询** Hibernate提供了一种强大的查询语言HQL(Hibernate Query ...
在Java Web开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,将数据库中的表映射为Java对象,使得开发者可以像操作普通对象一样操作数据库。本篇复习我们将深入探讨Hibernate中的...
Hibernate 通过提供一个映射配置文件或注解,能够将 Java 类映射到数据库表,并将 Java 对象映射到数据库记录。 - **ORM (Object-Relational Mapping)**: Hibernate 作为 ORM 工具,主要负责处理对象和关系型数据库...
**J2EE复习积累(六)-Hibernate4.2** 在J2EE开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了Java应用程序与数据库之间的交互。本篇复习将聚焦于Hibernate 4.2版本,该版本在前一版本的基础上...
这个Demo实例将帮助初学者理解和掌握Hibernate的基本用法,通过实际操作加深对ORM概念的理解,并能熟练运用到实际项目中。同时,对于有经验的开发者,这也是复习和巩固Hibernate知识的一个好资料。
### J2EE考试复习知识点详解 #### Struts2框架概览 - **起源与组成**:Struts2框架源于WebWork框架与XWork框架的发展融合。WebWork2本身即建立在XWork之上,继承并发展了XWork的核心特性,如命令模式、拦截器机制等...
5. **Transaction管理**:事务是数据库操作的基本单元,Hibernate提供了对事务的管理,通过Session的beginTransaction()、commit()和rollback()方法来控制事务的开始、提交和回滚。 6. **Criteria查询**:除了SQL,...
3. **实体类和注解**:在Hibernate中,实体类代表数据库中的表,使用注解如@Entity、@Table、@Id等来标注类和属性,以便Hibernate自动管理。 4. **持久化操作**:Hibernate提供了增删改查(CRUD)操作,如Session...
**标题:“Hibernate_使用示例代码”** **描述:** 这篇资源主要提供了关于Hibernate框架的实战应用示例,作者在iteye...对于初学者,这是一个很好的起点,对于有经验的开发者,也是复习和巩固Hibernate技能的好材料。
- **Inverse属性**在一对多关联中用于定义维护关系的责任方。当inverse设为`true`,表示关联的集合不负责维护与父对象的关系,而是由父对象来维护。在问题2中,为了实现删除客户时删除所有订单,需要在关联上配置`...
- 如果在事务中对同一个对象的同一属性进行了多次修改,提交时Hibernate只会生成一条UPDATE语句。所以,上述程序提交时只需提交1条UPDATE语句,答案是B) 1。 8. SessionFactory的理解: - A) 错误:...
这些功能涉及Struts的Action类处理业务逻辑,以及Hibernate对数据库的操作。 3. 安全措施:可能包括多因素认证、登录尝试限制、会话管理等,以确保用户账户的安全。 4. 银行服务:如贷款申请、信用卡管理、定期...
Hibernate通过实体类和数据库表进行关联,通过SessionFactory创建Session,再通过Session进行数据的增删改查操作。在本案例中,可能会涉及到贴吧的帖子、用户等实体类,以及对应的数据库表。 整合Struts2和...
**Hibernate**是一个流行的ORM(Object-Relational Mapping)框架,旨在简化数据库操作。其主要特点包括: 1. **全面的解决方案**:提供了管理Java应用中持久化数据的完整工具。 2. **非侵入式**:允许在不修改现有...
3. **表之间的关联关系**:Hibernate支持多种关联关系,如一对一、一对多、多对一和多对多。多对一表示一个实体可以与多个其他实体关联,而多对多则表示两个实体都可以关联多个对方的实例。使用注解或XML映射文件...