1、Configuraion类
1) 负责管理hibernate的配置信息2) 读取hibernate.cfg.xml
3) 加载hibernate.cfg.xml配置文件中配置的驱动,url,用户名,密码,连接池。
4) 管理*.hbm.xml对象关系文件。
示例:Configuration configuration = new Configuration().configure();
2、SessionFactory接口
1) 缓存sql语句和其他数据2) 重量级的类,一般是单例模式保证只有一个SessionFactory实例
示例:
public final class SessionUtils { private static SessionFactory sessionFactory = null; private static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private SessionUtils() { } static{ sessionFactory=new Configuration().configure().buildSessionFactory(); } //获取新的session public static Session OpenSession(){ return sessionFactory.openSession(); } //获取和线程相关的session public static Session getCurrentSession(){ Session session = threadLocal.get(); if (session==null) { session = sessionFactory.openSession(); threadLocal.set(session); } return session; } }
3) 一个数据库创建一个SessionFactory
4) 通过SessionFactory接口获取Session实例
openSession() 是获取一个新的session
getCurrentSession () 获取和当前线程绑定的session,在同一个线程中,我们获取的session是同一session,这样可以利于事务控制。
使用需要配置:
<property name="current_session_context_class">thread</property>
用下面代码测试:
3、session接口
1) 它的主要功能和作用是:Session一个实例代表与数据库的一次操作(当然一次操作可以是crud组合)
Session实例通过SessionFactory获取,用完需要关闭。
Session是线程不同步的(不安全),因此要保证在同一线程中使用,可以用getCurrentSessiong()。
Session可以看做是持久化管理器,它是与持久化操作相关的接口
2) get和load方法比较
如果查询不到数据,get 会返回 null,但是不会报错, load 如果查询不到数据,则报错 ObjectNotFoundException
使用get 去查询数据,(先到一级/二级)会立即向db发出查询请求(select ...), 如果你使用的是 load查询数据,(先到一级、二级)即使查询到对象,返回的是一个代理对象,如果后面没有使用查询结果,它不会真的向数据库发select ,当程序员使用查询结果的时候才真的发出select ,这个现象称为懒加载(lazy)
通过修改配置文件,可以取消懒加载
<class name="Employee" lazy="false" table="employee">
4、query接口
通过query可以完成更加复杂的查询任务.
例子说明:
public static void main(String[] args) { Session session = SessionUtils.getCurrentSession(); Transaction transaction = null; try { transaction = session.beginTransaction(); //Employee是类名不是表名 Query query = session.createQuery("from Employee where id=1"); //封装 List<Employee> list = query.list(); for (Employee employee : list) { System.out.println(employee.getName()); } transaction.commit(); } catch (Exception e) { if (transaction!=null) { transaction.rollback(); } throw new RuntimeException(e.getMessage()); } }
相关推荐
SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中常见的三大开源框架的组合。这个框架集合提供了模型-视图-控制器(MVC)的设计模式,使得开发者能够更高效地构建动态网站和企业级应用程序。在这个组合...
SSH框架整合是Java Web开发中常见的一种技术组合,由Struts2、Spring4和Hibernate4三个组件构成。这个整合旨在实现MVC(Model-View-Controller)架构模式,提高应用程序的可维护性和可扩展性。下面我们将详细探讨这...
SSH框架,全称为Spring、Struts和Hibernate的组合,是Java Web开发中广泛使用的三大开源框架。本教程将深入浅出地介绍SSH框架的基础知识,并通过一个简单的注册登录案例来帮助你快速上手。 首先,Spring框架是核心...
SSH框架整合是Java Web开发中的一个经典组合,包括Struts2、Spring和Hibernate三个核心组件。这个"ssh框架整合demo"提供了一个完整的项目脚手架,对于初学者来说,是理解这三个框架如何协同工作的绝佳实践。 **...
SSH框架,全称为Struts2、Hibernate和Spring的集成,是Java Web开发中常用的一种技术栈。本项目“SSH增删改查管理项目”旨在提供一个基础的学习平台,帮助初学者掌握SSH框架的核心功能和应用,包括用户登录、权限...
1. **源代码**:包括Struts的Action类、Spring的Service和DAO接口及其实现、Hibernate的实体类以及相关配置文件。 2. **配置文件**:如Spring的beans.xml,定义了bean的实例化和依赖;struts-config.xml或struts2的...
Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,它们在2000年代中期至后期广泛应用于构建基于Java的Web应用程序。这个组合通常被称为“SSH”三位一体,各自负责不同的职责: 1. **Struts1.2**...
在SSH项目中,Spring可以管理Struts2的Action、Hibernate的SessionFactory以及自定义的服务类,使得各组件之间松耦合,易于测试和维护。 **Hibernate** 是一个流行的ORM框架,它允许开发者使用Java对象来操作数据库...
Struts2是SSH(Spring、Struts、Hibernate)框架中的核心部分,是一个强大的MVC(Model-View-Controller)框架,用于构建企业级Java Web应用程序。SSH框架的整合旨在提供一个高效、灵活且可扩展的开发环境,使开发者...
在"完整SSH项目.rar"中,你可能会找到一个已经配置好的SSH整合示例,包括Struts的配置文件、Hibernate的实体类和数据访问层、Spring的配置文件以及业务逻辑层。"spring-framework-4.2.2.RELEASE-dist.zip"则包含了...
SSH整合开发是Java Web开发中的一个重要概念,它指的是Spring、Struts2和Hibernate这三大开源框架的集成。这些框架各自负责应用程序的不同层面,Spring管理应用的业务逻辑和依赖注入,Struts2处理用户界面和动作控制...
在IT领域,SSH整合通常指的是将SSH与其他服务或框架(如Spring、Struts、Hibernate等)结合,以实现安全的远程管理和数据交互。本文将深入讲解SSH整合的详细配置过程,帮助初学者理解并掌握相关知识。 一、SSH整合...
这个实战项目案例涵盖了Spring、Struts2和Hibernate(SSH)三大框架的整合,以及Apache Shiro的安全管理和EasyUI的前端界面设计。下面将详细阐述这些技术的知识点。 **Spring框架**: 1. **依赖注入(Dependency ...
SSH(Struts2、Hibernate、Spring)是Java开发中常见的三大开源框架,它们分别负责Web层、持久层和业务层的管理。这个"BBS的框架例子"是一个基于SSH的典型应用,旨在帮助初学者理解并掌握这三大框架的整合过程。 **...
【标题】"基于SSH的在线实验系统"是一个典型的计算机科学项目,主要采用了Spring、Struts2和Hibernate(SSH)这三大开源框架构建。这个系统旨在为用户提供一个在线平台,允许他们在虚拟环境中进行实验操作,特别是在...
"计算机类毕业设计源码"这一描述明确了这是一个与计算机科学相关的毕业设计项目,提供了源代码供学习和参考。通常,这样的项目会包含完整的前后端开发,涵盖了软件工程的多个环节,比如需求分析、设计、编码、测试等...
在这个系统中,SSH框架被广泛应用,它是由Spring、Struts2和Hibernate这三个开源框架组合而成的,为开发人员提供了强大的后端支持。 Spring框架是核心,它负责管理应用的组件,包括依赖注入(DI)和面向切面编程...