`
sharp-fcc
  • 浏览: 110891 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

北软实训之hibernate session

阅读更多

       今天听老师给我们上了一堂关于hibernate的课,对于hibernate的基本操作有了个大致了解,关于多对多,一对一,一对多,多对一有了很好的了解,以前都是用myeclipse自动生成的hibernate映射文件,这回看了他自己动手搭了一个环境,自己从头开始写配置文件,收获还是不小的。
      首先跟自动生成不一样的是那个多对多的映射,自动生成的直接在set集合中显示的是那个关系表,虽然也能达到效果,但是很显然,这样写既不优雅,而手工可以避免这个问题。 
       hibernate中的sessionfactory是线程安全的,是对一个数据库的连接抽象,可以在集群环境中让获取元素,而session主要封装了对数据库的操作以及返回的结果,有时候我们为了方便,直接用hibernate的那个template去操作数据库,就会出现一个问题,抛出的异常是session已经关闭。这就是延迟加载在其中作祟,也就是说查出一个对象,而与他关联的表里的数据不会被加载到内存中,当调用完template中的一个方法,就已经把session close掉了,所以还想用orm的方法查找关联的数据,就没法实现。
      网上许多解决方法是,把关联的那个属性的 lazy设置成false,很显然这治标不治本,如果表很多,关联很多,还用一个一个改吗,而且这也不符合hibernate设计者的初衷,所以另外一种解决方案是用filter,在一个请求来前打开session,结束后关闭session,这样符合大部分需求。

      顺便把threadlocal说一下,其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。在sessionfactory用单例模式生成session的时候,就是将session放到一个ThreadLocal中来解决并发问题。

 

分享到:
评论

相关推荐

    北软实训jsp(Hibernate框架技术训练)实例

    【标题】:“北软实训jsp(Hibernate框架技术训练)实例” 【描述】:“我自己的实训材料,给大家分享,主要涉及Hibernate框架技术训练” 这个实训项目是针对Java Web开发中的Hibernate框架进行深入学习的一个实例...

    j2ee项目实训——hibernate框架技术

    本实训主要围绕Hibernate框架技术展开,旨在帮助你深入理解和掌握其核心概念、配置及应用。 一、Hibernate概述 Hibernate是一个开源的ORM(Object-Relational Mapping)框架,它通过映射机制将Java对象和关系数据库...

    学校实训JSP项目-网上书店(struts+hibernate+css+mysql).zip

    这是一个基于JSP技术的学校实训项目,名为“网上书店”,采用了经典的MVC设计模式,具体技术栈包括Struts作为框架层、Hibernate作为持久化层,以及CSS和MySQL数据库。这个项目旨在帮助学生理解和掌握Web应用开发的...

    东软实训周记

    ### 东软实训周记知识点总结 #### 一、实训周记概览 根据所提供的信息,这份实训周记包括了18周的学习记录,旨在帮助学生或培训参与者完成相关作业。这种类型的实训周记通常涵盖了理论学习与实践操作相结合的过程...

    购物车的实训

    在这个实训项目中,我们将深入探讨如何使用Struts和Hibernate这两个流行的Java框架来实现一个完整的购物车系统。Struts是MVC(模型-视图-控制器)架构的一个强大实现,而Hibernate则是一个优秀的对象关系映射(ORM)...

    j2EE实训基地课件

    【Java EE(j2EE)实训基地课件详解】 Java EE,原名为j2EE,是Java平台上用于构建企业级应用程序的框架。它提供了一系列的API和服务,支持多层架构,包括Web层、业务逻辑层和数据访问层,使得开发者能够高效地开发...

    Java实训教程 Java软件开发实战 Java开发框架 hibernate 共88页.pptx

    ### Java实训教程:Java软件开发实战与Hibernate框架详解 #### 一、概述 在现代软件开发领域,特别是在Java企业级应用开发中,高效且简洁的数据访问层设计至关重要。本教程旨在通过详细介绍Hibernate这一著名的...

    Struts2+Spring+Hibernate框架技术与项目实战 源码(下).zip

    在Spring框架中,通过Spring的Hibernate支持,可以方便地管理SessionFactory和Session,实现事务的透明化处理。 在"第6篇"的源码中,开发者可能能够找到这些框架如何协同工作的实例。例如,Struts2的Action类可能会...

    Java实训 作品 考试系统 v0.1

    【Java实训 作品 考试系统 v0.1】是一个基于Java技术开发的实践项目,主要用于模拟和实现在线考试的功能。这个系统的版本号为0.1,意味着它可能是一个初步实现,可能存在一些基本的功能,但还有很大的优化和升级空间...

    J2EE企业级项目开发-1期 任务2-7 实训项目单.doc

    这个实训项目旨在帮助软件技术专业的学生熟练掌握JavaEE开发中的核心技术和Hibernate框架的缓存机制。 首先,缓存是提升应用程序性能的关键技术之一。在数据库操作中,频繁读取的数据如果被存储在内存中的缓存中,...

    J2EE企业级项目开发-1期 任务2-6 实训项目单.doc

    在本实训项目“BBS管理系统——实现主题列表模块(topic)的删除操作”中,学生将深入学习和实践JavaEE企业级开发中的关键概念和技术。这个任务主要关注于事务管理和并发控制,这两个是构建可靠、高效的企业级应用...

    J2EE企业级项目开发-1期 任务3-6 实训项目单.doc

    同时,对实训过程进行总结,分析遇到的问题及解决方案,编写实训报告,体现对所学知识的理解和应用。 在整个实训过程中,**评价标准**关注以下几个方面: - **系统达到设计要求,运行通过**(60分):系统应能正确...

    Hibernate框架教学课件

    10. **实战项目**:通过"J2EE项目实训_Hibernate框架技术",学员可以动手实践,建立一个简单的J2EE应用,将所学知识应用于实际场景,巩固理解。 通过本教学课件的学习,开发者不仅可以了解Hibernate的基本用法,还...

    hibernate使用中与各种数据库字段类型对应类型训练

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需过多关注SQL语句的编写。本篇将主要围绕Hibernate在与各种数据库字段类型对应的Java类型进行...

    xxx班xxx组JavaWeb期末实训.zip

    这个压缩包"xxx班xxx组JavaWeb期末实训.zip"显然包含了某个班级小组在学习JavaWeb时进行的期末实训项目资料。通过分析文件名,我们可以推测这可能是一个教学材料或者学生作业,其中包括一个文档模板和可能的源代码。...

    大学 毕业设计 项目实训 JAVA SSH论坛(源代码).zip

    【标题】"大学 毕业设计 项目实训 JAVA SSH论坛(源代码).zip" 提供的是一个基于JAVA技术的SSH框架(Struts、Spring、Hibernate)开发的论坛项目源码,适合大学生进行毕业设计或项目实训。SSH是Java Web开发中的经典...

    J2EE企业级项目开发-1期 任务3-4 实训项目单.doc

    本实训项目的目标是让学生熟悉SSH2的集成环境搭建以及在实际项目中的应用。 ### 一、SSH2集成开发环境搭建 1. **Struts2**:Struts2是一个基于MVC设计模式的Web应用框架,用于处理HTTP请求和响应。学生需要了解其...

    6月10号JavaWeb实训代码

    本实训代码集合可能是为了帮助学习者深入理解和实践JavaWeb开发中的关键概念和技术。以下将详细介绍JavaWeb开发的相关知识点。 1. **Servlet**:Servlet是JavaWeb的基础,它是一个Java类,用于扩展服务器的功能。在...

    Java实训项目个人博客

    【Java实训项目个人博客】是一个综合性的学习项目,旨在帮助开发者通过实际操作加深对Java编程语言的理解,特别是针对IDEA集成开发环境、Java后端接口设计以及DAO(Data Access Object)模型的应用。在这个项目中,...

    hibernate培训第四天

    9. **缓存机制**:为了提高性能,Hibernate引入了缓存机制,包括第一级缓存(Session缓存)和第二级缓存(可选)。理解缓存的工作原理和配置,可以有效优化应用程序性能。 10. **事务管理**:在Java应用中,事务...

Global site tag (gtag.js) - Google Analytics