当前位置: 首页 > news >正文

hibernate重要接口说明

转自:http://www.blogjava.net/amigoxie/archive/2007/02/11/99343.html

  • Configuration接口:该对象用于配置并且根启动Hibernate。Hibernate应用通过Configuration实例来指定对象-关系映射文件的位置或动态配置Hibernate的属性,然后创建SessionFactory实例。
  • SessionFactory接口:一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例。它具有如下特点:  1)它是线程安全的,这意味着它的同一个实例可以被应用的各个线程共享。

                  2)它是重量级的,这意味着不能随意创建或销毁它的实例。如果应用只访问一个数据库,只需创建一个SessionFactory实例,在应用初始化的时候创建该实例。如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFactory实例。

       之所以说SessionFactory是重量级的,是因为它需要一个很大的缓存,用来存放预定义的SQL语句以及映射元数据等。用户还可以为SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的第二级缓存,该缓存用来存放被工作单元读过的数据,将来其它工作单元可能会重用这些数据,因此这个缓存中的数据能够被所有工作单元共享,一个工作单元通常对应一个数据库事务。

  • Session接口:该接口是Hibernate应用使用最广泛的接口。Session也被称为持久化管理器,提供了和持久化相关的操作,如添加、更新、删除、加载和查询对象。Session具有一下特点:    1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例;

                 2)Session实例是轻量级的,所谓轻量级,是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建和销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。

                 Session有一个缓存,被称为Hibernate的第一级缓存,它存放被当前工作单元加载的对象。每个Session实例都有自己的缓存,这个Session实例的缓存,这个Session实例的缓存只能被当前工作单元访问。

  •  Transaction:该接口是Hibernate的数据库事务接口,它对底层的事务接口做了封装,底层事务接口包括:JDBC API、JTA(Java Transaction API)、CORBA(Common Object Requet Broker Architecture) API. Hibernate应用可通过一致的Transaction接口来声明事务边界,这有助于应用在不同环境或容器中移植。
  • Query和Criteria接口:它们是Hibernate的查询接口,用于向数据库查询对象,以及控制执行查询的过程。Query实例封装了一个HQL(Hibernate Query Language)查询语句,HQL是面向对象的,它引用类名及类的属性名,而不是表名及表的字段名。Criteria接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象,Criteria接口更擅长于执行动态查询。

 

相关文章:

  • 微信开发个人总结
  • Hibernate中对象的三种状态及相互转化
  • hibernate脏数据检查
  • 版本控制-Git服务器搭建和常用命令使用
  • hibernate中get与load的区别
  • 双11_2016
  • hibernate中的Session.flush()
  • hibernate的lazy机制
  • hibernate的lazy策略使用总结
  • springmvc-spring-mybatis实现最简单的登录验证
  • hibernate 的lazy策略存在的问题
  • hibernate中的悲观锁和乐观锁
  • hibernate的查询缓存机制
  • 洛谷 P1521 求逆序对
  • java静态方法的继承
  • hexo+github搭建个人博客
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [LeetCode] Wiggle Sort
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【mysql】环境安装、服务启动、密码设置
  • 0x05 Python数据分析,Anaconda八斩刀
  • 10个确保微服务与容器安全的最佳实践
  • angular组件开发
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • create-react-app项目添加less配置
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Javascript基础之Array数组API
  • node学习系列之简单文件上传
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 第2章 网络文档
  • 浮动相关
  • 入手阿里云新服务器的部署NODE
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • nb
  • # 飞书APP集成平台-数字化落地
  • #QT项目实战(天气预报)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (4)(4.6) Triducer
  • (4.10~4.16)
  • (三)c52学习之旅-点亮LED灯
  • (十六)一篇文章学会Java的常用API
  • (十五)使用Nexus创建Maven私服
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Sql Server 保留几位小数的两种做法
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [2018-01-08] Python强化周的第一天
  • [51nod1610]路径计数