任何一种技术都是为了解决某些现存的问题而存在的,hibernate自然也不例外。在hibernate之前,我们所认识的技术架构中,都有如下的一些问题:
硬编码大量的sql(直接在类里写sql,实现数据逻辑):
1. 工作量大,团队在数据逻辑上浪费大量精力
2.一套数据库逻辑无法支持多套数据库(不同的数据库sql语句会有些不同,比如分页查询)
3.通过配置文件和多套数据逻辑支持多套数据库,但是结构复杂,代码量大
性能 优化复杂:
1.数据库连接的生命周期管理:
希望解决每次连接都要重新创建连接,性能低下的问题;
导入数据库连接池
2.持久化对象的生命周期管理:
希望持久化对象有缓存,再次获取该对象时,如果数据没有改变就无需再次查询数据库,而是直接从缓存中拿出来,从而提高性能。但是目前没有解决方案。
ORM(对象映射关系框架)可以解决上述问题,hibernate是一种比较流行的ORM框架。
通过ORM框架,我们无需自己写sql语句(有时可能需要写一些*ql)或是将sql语句写在配置文件中,而且可以直接支持多套数据库,ORM框架会根据不同数据库配置将*ql转换成相对应的sql语句。
在性能优化方面,内置了数据库连接池(在连接池中放置了一种数量的连接,我们通过sessionFactory从连接池中获取连接,用完以后重新放回连接池中,如果连接池没有连接,就新建连接直到连接的上限,达到上限时,需要等待,直到其他用户释放连接)。同时,
提供对象池(也就是Session缓存):每个事务,创
建一个Session空间,该事务过程中,查询过的对象,都会有保留,再次取出时,如果数据没有改变,就无需再次查询数据库简单的说,hibernate可用于协调应用与关系数据库的交互,让开发人员解放出来专注于解决业务问题;解决传统的数据库程序设计上硬编码的问题;通过缓存、池等技术优化了数据库连接、持久化对象的生命周期的管理进行了性能优化。
关于libernate这里就先说这么多吧,至于配置和细节问题,等整体的知识结构整理出来再补充咯~~~~~加油~~~~~~~~