`
lzj520
  • 浏览: 212717 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hibernate多表操作复习

阅读更多
最近在熟习新公司的项目,看到里面乱麻麻的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复习大纲

    **hibernate+spring复习大纲** 在Java Web开发领域,Hibernate和Spring是两个至关重要的框架。Hibernate是一个对象关系映射(ORM)框架,它简化了数据库操作,而Spring则是一个全面的企业级应用框架,提供了依赖...

    hibernate达内五天复习笔记.pdf

    - **映射机制**:包括基础映射(类与表的映射)、继承映射(单表继承、多表继承)、组件映射(对象内部结构的映射)以及集合映射(一对多、多对一、多对多等关系的映射)。 3. **HQL查询**: - Hibernate Query ...

    hibernate知识复习四:多对多关联映射

    总结起来,Hibernate的多对多关联映射是通过中间表来实现的,通过`@ManyToMany`注解进行配置,并通过`@JoinTable`来指定中间表的细节。理解和熟练掌握这一特性,对于高效地管理数据库中的复杂关联关系至关重要。在...

    hibernate知识复习三:关联映射:一对多/多对一

    本文将深入探讨Hibernate中的关联映射,特别是“一对多”和“多对一”的关系映射,这对于理解如何在Java应用程序中处理复杂的数据库交互至关重要。 一、Hibernate简介 Hibernate是Java平台上的一个开源ORM框架,它...

    复习hibernate

    Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使开发者无需关注底层SQL语句,就能实现对数据库的数据操作。本复习旨在深入理解Hibernate的核心概念、配置及常用API,帮助开发者提高...

    北大青鸟Hibernate学习资料

    一对一关联通常用于两个表之间有唯一对应关系的情况,而多对多关联则允许一个实体与多个其他实体相互关联,如学生和课程的关系。 3. **Hibernate查询** Hibernate提供了一种强大的查询语言HQL(Hibernate Query ...

    hibernate知识复习二:组合映射

    在Java Web开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,将数据库中的表映射为Java对象,使得开发者可以像操作普通对象一样操作数据库。本篇复习我们将深入探讨Hibernate中的...

    燕山大学 spring hibernate struts 三大框架 期末复习资料

    Hibernate 通过提供一个映射配置文件或注解,能够将 Java 类映射到数据库表,并将 Java 对象映射到数据库记录。 - **ORM (Object-Relational Mapping)**: Hibernate 作为 ORM 工具,主要负责处理对象和关系型数据库...

    J2EE复习积累(六)-Hibernate4.2

    **J2EE复习积累(六)-Hibernate4.2** 在J2EE开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了Java应用程序与数据库之间的交互。本篇复习将聚焦于Hibernate 4.2版本,该版本在前一版本的基础上...

    Hibernate4.1.1的Demo实例

    这个Demo实例将帮助初学者理解和掌握Hibernate的基本用法,通过实际操作加深对ORM概念的理解,并能熟练运用到实际项目中。同时,对于有经验的开发者,这也是复习和巩固Hibernate知识的一个好资料。

    J2EE考试复习试题_struts2_spring_hibernate.doc

    ### J2EE考试复习知识点详解 #### Struts2框架概览 - **起源与组成**:Struts2框架源于WebWork框架与XWork框架的发展融合。WebWork2本身即建立在XWork之上,继承并发展了XWork的核心特性,如命令模式、拦截器机制等...

    韩顺平.2011版.hibernate_ppt.zip

    5. **Transaction管理**:事务是数据库操作的基本单元,Hibernate提供了对事务的管理,通过Session的beginTransaction()、commit()和rollback()方法来控制事务的开始、提交和回滚。 6. **Criteria查询**:除了SQL,...

    传智播客2016hibernate框架学习笔记

    3. **实体类和注解**:在Hibernate中,实体类代表数据库中的表,使用注解如@Entity、@Table、@Id等来标注类和属性,以便Hibernate自动管理。 4. **持久化操作**:Hibernate提供了增删改查(CRUD)操作,如Session...

    Hibernate_使用示例代码

    **标题:“Hibernate_使用示例代码”** **描述:** 这篇资源主要提供了关于Hibernate框架的实战应用示例,作者在iteye...对于初学者,这是一个很好的起点,对于有经验的开发者,也是复习和巩固Hibernate技能的好材料。

    Hibernate复习题1含答案要点.doc

    - **Inverse属性**在一对多关联中用于定义维护关系的责任方。当inverse设为`true`,表示关联的集合不负责维护与父对象的关系,而是由父对象来维护。在问题2中,为了实现删除客户时删除所有订单,需要在关联上配置`...

    Hibernate练习题

    - 如果在事务中对同一个对象的同一属性进行了多次修改,提交时Hibernate只会生成一条UPDATE语句。所以,上述程序提交时只需提交1条UPDATE语句,答案是B) 1。 8. SessionFactory的理解: - A) 错误:...

    网上银行系统(Struts+Hibernate)

    这些功能涉及Struts的Action类处理业务逻辑,以及Hibernate对数据库的操作。 3. 安全措施:可能包括多因素认证、登录尝试限制、会话管理等,以确保用户账户的安全。 4. 银行服务:如贷款申请、信用卡管理、定期...

    JavaEE struts2 Hibernate结合贴吧小案例

    Hibernate通过实体类和数据库表进行关联,通过SessionFactory创建Session,再通过Session进行数据的增删改查操作。在本案例中,可能会涉及到贴吧的帖子、用户等实体类,以及对应的数据库表。 整合Struts2和...

    j2ee框架Struts2HibernateSpring考试复习题库.pdf

    **Hibernate**是一个流行的ORM(Object-Relational Mapping)框架,旨在简化数据库操作。其主要特点包括: 1. **全面的解决方案**:提供了管理Java应用中持久化数据的完整工具。 2. **非侵入式**:允许在不修改现有...

    hibernate框架重点复习内容.ppt

    3. **表之间的关联关系**:Hibernate支持多种关联关系,如一对一、一对多、多对一和多对多。多对一表示一个实体可以与多个其他实体关联,而多对多则表示两个实体都可以关联多个对方的实例。使用注解或XML映射文件...

Global site tag (gtag.js) - Google Analytics