●Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
●2006年,J2EE5.0标准正式发布以后,持久化框架标准Java Persistent API(简称JPA)基本上是参考Hibernate实现的,而Hibernate在3.2版本开始,已经完全兼容JPA标准。
●Hibernate是一个以LGPL(Lesser GNU Public License)许可证形式发布的开源项目。在Hibernate官网上有下载Hibernate包的说明。Hibernate包以源代码或者二进制的形式提供。
●编程工具
●Eclipse:一个开放源代码的、基于Java的可扩展开发平台。
●NetBeans:开放源码的Java集成开发环境,适用于各种客户机和Web应用。
●IntelliJ IDEA:在代码自动提示、代码分析等方面的具有很好的功能。
●MyEclipse:由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境。
●EditPlus:如果正确配置Java的编译器“Javac”以及解释器“Java”后,可直接使用EditPlus编译执行Java程序。
●将对数据库的操作转换为对Java对象的操作,从而简化开发。通过修改一个“持久化”对象的属性从而修改数据库表中对应的记录数据。
●提供线程和进程两个级别的缓存提升应用程序性能。
●有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。
●屏蔽不同数据库实现之间的差异。在Hibernate中只需要通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句。
●非侵入式:Hibernate不要求持久化类实现任何接口或继承任何类,POJO即可。
●hibernate优点:
●封装了jdbc,简化了很多重复性代码。
●简化了DAO层编码工作,使开发更对象化了。
●移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。
●支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。所以说它是一个轻量级框架。
●hibernate 类与类之间关系
●关联关系
●聚集关系
●继承关系
●Hibernate继承关系映射策略分为三种:
●一张表对应一整棵类继承树
●一个类对应一张表
●每一个具体类对应一张表。
●Hibernate是一个开源的对象关系映射(ORM)框架。对JDBC进行了非常轻量级的对象封装。
●将对象和数据库表建立映射关系,Hibernate框架使用在数据持久化层(dao)。
●ORM:对象关系映射(英语:Object Relational Mapping)
●采用映射元数据(配置文件)来描述对象-关系的映射细节。ORM框架通过配置文件将实体对象和数据库表对应起来。
●Hibernate的API一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通过这些接口,可以对持久化对象进行存取、事务控制。
●Hibernate 中提供了两级Cache(高速缓冲存储器),第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或集群范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。
●初用HIBERNATE的人也许都遇到过性能问题,实现同一功能,用HIBERNATE与用JDBC性能相差十几倍很正常,如果不及早调整,很可能影响整个项目的进度。 大体上,对于HIBERNATE性能调优的主要考虑点如下:
●数据库设计调整
●HQL优化
●API的正确使用(如根据不同的业务类型选用不同的集合及查询API)
●主配置参数(日志,查询缓存,fetch_size, batch_size等)
●映射文件优化(ID生成策略,二级缓存,延迟加载,关联优化)
●一级缓存的管理
●针对二级缓存,还有许多特有的策略
●事务控制策略。
●数据库设计
● 降低关联的复杂性
● 尽量不使用联合主键
● ID的生成机制,不同的数据库所提供的机制并不完全一样
● 适当的冗余数据,不过分追求高范式
● Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
● Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码工作。