专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » session:Session 接口 Session 接口知识了解 »正文

session:Session 接口 Session 接口知识了解

来源: 发布时间:星期四, 2009年2月12日 浏览:152次 评论:0


      Session 接口 Session 接口对于Hibernate 开发人员来说是个最重要接口然而在Hibernate 中例子 化Session是个轻量级创建和销毁它都不会占用很多资源这在实际项目中确实很重要 在客户可能会不断地创建以及销毁Session 对象如果Session 开销太大会给系 统带来不良影响但值得注意是Session 对象是非线程安全因此在你设计中最好是个 线程只创建个Session对象 在Hibernate 设计者头脑中他们将session看作介于数据连接和事务管理种中间接口 我们可以将session想象成个持久对象缓冲区Hibernate能检测到这些持久对象改变并及 时刷新数据库我们有时也称Session是个持久层管理器它包含这些持久层相关操作 诸如存储持久对象至数据库以及从数据库从获得它们请注意Hibernate session区别于JSP 应用中HttpSession当我们使用session这个术语时我们指Hibernate 中session而 我们以后会将HttpSesion 对象称为用户session
 SessionFactory 接口 这里用到了个设计模式――工厂模式用户从工厂类SessionFactory中取得Session 例子 令你感到奇怪是SessionFactory并不是轻量级!实际上它设计者意图是让它能在整个 应用中共享典型地来说个项目通常只需要个SessionFactory就够了但是当你项目要操 作多个数据库时那你必须为每个数据库指定个SessionFactory SessionFactory在Hibernate中实际起到了个缓冲区作用它缓冲了Hibernate自动生成SQL 语句和些其它映射数据还缓冲了些将来有可能重复利用数据
 Configuration 接口 Configuration 接口作用是对Hibernate 进行配置以及对它进行启动在Hibernate 启动 过程中Configuration 类例子首先定位映射文档位置读取这些配置然后创建个 SessionFactory对象 虽然Configuration 接口在整个Hibernate 项目中只扮演着个很小角色但它是启动 hibernate 时你所遇到个对象
 Transaction 接口 Transaction 接口是个可选API你可以选择不使用这个接口取而代的是Hibernate 设计者自己写底层事务处理代码 Transaction 接口是对实际事务实现个抽象这些实现包 括JDBC事务、JTA 中UserTransaction、甚至可以是CORBA 事务的所以这样设计是能让开 发者能够使用个统事务操作界面使得自己项目可以在区别环境和容器的间方便地移值
 Query 和Criteria接口 Query接口让你方便地对数据库及持久对象进行查询它可以有两种表达方式:HQL语言或本 地数据库SQL语句Query经常被用来绑定查询参数、限制查询记录数量并最终执行查询操作 Criteria接口和Query接口非常类似它允许你创建并执行面向对象标准化查询 值得注意是Query接口也是轻量级它不能在Session的外使用
 Callback 接口 当些有用事件发生时――例如持久对象载入、存储、删除时Callback 接口会通知 Hibernate去接收个通知消息般而言Callback接口在用户中并不是必须但你要在你 项目中创建审计日志时你可能会用到它
 策略接口 Hibernate和某些其它开源软件Software区别还有点――高度可扩展性这通过它内置策略机制 来实现当你感觉到Hibernate 某些功能不足或者有某些缺陷时你可以开发个自己策略来替换它而你所要做仅仅只是继承它某个策略接口然后实现你新策略就可以了以下是 它策略接口:
· 主键生成 (IdentierGenerator 接口)
· 本地SQL语言支持 (Dialect 抽象类)
· 缓冲机制 (Cache 和CacheProvider 接口)
· JDBC 连接管理 (ConnectionProvider接口)
· 事务管理 (TransactionFactory, Transaction, 和 TransactionManagerLookup 接口)
· ORM 策略 (ClassPersister 接口)
· 属性访问策略 (PropertyAccessor 接口)
· 代理对象创建 (ProxyFactory接口) Hibernate为以上所列机制分别创建了个缺省实现因此如果你只是要增强它某个策略 功能只需简单地继承这个类就可以了没有必要从头开始写代码
标签:session
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: