Hibernate基础

Hibernate:

是数据和持久工具,也是一个开放源代码的ORM解决方案

Hibernate语言特点:

将对数据库的操作转换为对Java对象的操作,从而简化开发。通过修改一个“持久化”对			象的属性从而修改数据库表中对应的记录数据。
提供线程和进程两个级别的缓存提升应用程序性能。
有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。
屏蔽不同数据库实现之间的差异。在Hibernate中只需要通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句。
非侵入式:Hibernate不要求持久化类实现任何接口或继承任何类,POJO即可。

Hibernate核心API

	Session、
	SessionFactory、
	Transaction、
	Query、
	Criteria
	Configuration。
	通过这些接口,可以对持久化对象进行存取、事务控制。

Hiberante缓存管理

一级缓存:是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预
二级缓存:是SessionFactory级别的缓存,它是属于进程范围或集群范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载
查询缓存:依赖于二级缓存

Hibernate性能优化:

数据库设计调整
HQL优化
API的正确使用(如根据不同的业务类型选用不同的集合及查询API)
主配置参数(日志,查询缓存,fetch_size, batch_size等)
映射文件优化(ID生成策略,二级缓存,延迟加载,关联优化)
一级缓存的管理
针对二级缓存,还有许多特有的策略
事务控制策略。

数据设计:

a)降低关联的复杂性
b) 尽量不使用联合主键
c) ID的生成机制,不同的数据库所提供的机制并不完全一样
d) 适当的冗余数据,不过分追求高范式

HQL优化:

HQL如果抛开它同HIBERNATE本身一些缓存机制的关联,HQL的优化技巧同普通的SQL优化技巧一样,可以很容易在网上找到一些经验之谈。

主配置

a) 查询缓存,同下面讲的缓存不太一样,它是针对HQL语句的缓存,即完全一样的语句再次执行时可以利用缓存数据。但是,查询缓存在一个交易系统(数据变更频繁,查询条件相同的机率并不大)中可能会起反作用:它会白白耗费大量的系统资源但却难以派上用场。
b) fetch_size,同JDBC的相关参数作用类似,参数并不是越大越好,而应根据业务特征去设置
c) batch_size同上。
d) 生产系统中,切记要关掉SQL语句打印。

延迟加载

a) 实体延迟加载:通过使用动态代理实现
b) 集合延迟加载:通过实现自有的SET/LIST,HIBERNATE提供了这方面的支持
c) 属性延迟加载:

事务控制

事务方面对性能有影响的主要包括:事务方式的选用,事务隔离级别以及锁的选用
a) 事务方式选用:如果不涉及多个事务管理器事务的话,不需要使用JTA,只有JDBC的事务控制就可以。
b) 事务隔离级别:参见标准的SQL事务隔离级别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值