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

菜鸟也学SSH之--hibernate核心类和接口

阅读更多

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());
			}

}
 

主要文件

      1) hibernate.cfg.xml指定各个类的参数,在src下,指定连接数据库的驱动,用户名,密码,url,连接池。指定对象管理映射的位置。

               2)*.hbm.xml对象管理映射文件

            

 

 

  • 大小: 4.2 KB
分享到:
评论

相关推荐

    ssh框架中的hibernate5

    SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中常见的三大开源框架的组合。这个框架集合提供了模型-视图-控制器(MVC)的设计模式,使得开发者能够更高效地构建动态网站和企业级应用程序。在这个组合...

    ssh框架整合jar包(struts2+spring4+hibernate4)

    SSH框架整合是Java Web开发中常见的一种技术组合,由Struts2、Spring4和Hibernate4三个组件构成。这个整合旨在实现MVC(Model-View-Controller)架构模式,提高应用程序的可维护性和可扩展性。下面我们将详细探讨这...

    ssh框架简单教程(附案例)

    SSH框架,全称为Spring、Struts和Hibernate的组合,是Java Web开发中广泛使用的三大开源框架。本教程将深入浅出地介绍SSH框架的基础知识,并通过一个简单的注册登录案例来帮助你快速上手。 首先,Spring框架是核心...

    ssh框架整合demo,经典整合,初学必备

    SSH框架整合是Java Web开发中的一个经典组合,包括Struts2、Spring和Hibernate三个核心组件。这个"ssh框架整合demo"提供了一个完整的项目脚手架,对于初学者来说,是理解这三个框架如何协同工作的绝佳实践。 **...

    SSH增删改查管理项目

    SSH框架,全称为Struts2、Hibernate和Spring的集成,是Java Web开发中常用的一种技术栈。本项目“SSH增删改查管理项目”旨在提供一个基础的学习平台,帮助初学者掌握SSH框架的核心功能和应用,包括用户登录、权限...

    基于ssh病人系统(完整版)

    1. **源代码**:包括Struts的Action类、Spring的Service和DAO接口及其实现、Hibernate的实体类以及相关配置文件。 2. **配置文件**:如Spring的beans.xml,定义了bean的实例化和依赖;struts-config.xml或struts2的...

    struts1.2+spring2.0+hibernate3.1jar包

    Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,它们在2000年代中期至后期广泛应用于构建基于Java的Web应用程序。这个组合通常被称为“SSH”三位一体,各自负责不同的职责: 1. **Struts1.2**...

    SSH项目 有Freemarker模版

    在SSH项目中,Spring可以管理Struts2的Action、Hibernate的SessionFactory以及自定义的服务类,使得各组件之间松耦合,易于测试和维护。 **Hibernate** 是一个流行的ORM框架,它允许开发者使用Java对象来操作数据库...

    ssh框架中的Struts2

    Struts2是SSH(Spring、Struts、Hibernate)框架中的核心部分,是一个强大的MVC(Model-View-Controller)框架,用于构建企业级Java Web应用程序。SSH框架的整合旨在提供一个高效、灵活且可扩展的开发环境,使开发者...

    ssh框架中的sparing

    在"完整SSH项目.rar"中,你可能会找到一个已经配置好的SSH整合示例,包括Struts的配置文件、Hibernate的实体类和数据访问层、Spring的配置文件以及业务逻辑层。"spring-framework-4.2.2.RELEASE-dist.zip"则包含了...

    SSH整合开发

    SSH整合开发是Java Web开发中的一个重要概念,它指的是Spring、Struts2和Hibernate这三大开源框架的集成。这些框架各自负责应用程序的不同层面,Spring管理应用的业务逻辑和依赖注入,Struts2处理用户界面和动作控制...

    SSH整合的全部配置详细说明

    在IT领域,SSH整合通常指的是将SSH与其他服务或框架(如Spring、Struts、Hibernate等)结合,以实现安全的远程管理和数据交互。本文将深入讲解SSH整合的详细配置过程,帮助初学者理解并掌握相关知识。 一、SSH整合...

    SSH+shiro+easyUI实战项目案例

    这个实战项目案例涵盖了Spring、Struts2和Hibernate(SSH)三大框架的整合,以及Apache Shiro的安全管理和EasyUI的前端界面设计。下面将详细阐述这些技术的知识点。 **Spring框架**: 1. **依赖注入(Dependency ...

    BBS的框架例子

    SSH(Struts2、Hibernate、Spring)是Java开发中常见的三大开源框架,它们分别负责Web层、持久层和业务层的管理。这个"BBS的框架例子"是一个基于SSH的典型应用,旨在帮助初学者理解并掌握这三大框架的整合过程。 **...

    毕设&课程作业_基于SSH的在线实验系统。在线实验部分用matlab库实现.zip

    【标题】"基于SSH的在线实验系统"是一个典型的计算机科学项目,主要采用了Spring、Struts2和Hibernate(SSH)这三大开源框架构建。这个系统旨在为用户提供一个在线平台,允许他们在虚拟环境中进行实验操作,特别是在...

    本科毕业设计。一个基于SSH的在线实验系统。在线实验部分用matlab库实现.zip

    "计算机类毕业设计源码"这一描述明确了这是一个与计算机科学相关的毕业设计项目,提供了源代码供学习和参考。通常,这样的项目会包含完整的前后端开发,涵盖了软件工程的多个环节,比如需求分析、设计、编码、测试等...

    毕业设计-网上投票管理系统

    在这个系统中,SSH框架被广泛应用,它是由Spring、Struts2和Hibernate这三个开源框架组合而成的,为开发人员提供了强大的后端支持。 Spring框架是核心,它负责管理应用的组件,包括依赖注入(DI)和面向切面编程...

Global site tag (gtag.js) - Google Analytics