Hibernate是一种ORM框架,与各种数据库,SQL语句打交道,是数据持久化的一种解决发难。在JAVA对象与关系数据库之间建立某种映射,以实现直接存取JAVA对象。在商业系统的开发中,数据持久化是比较核心的技术之一。传统的数据持久化编程中,需要使用JDBC并配合大量的SQL语句。Connection,Statement,ResultSet等JDBC API与SQL夹杂在一起,开发效率低下。后来出现了DAO模式,所有的JDBC API 与SQL语句均移到了DAO层,但是仍然需要编写大量的SQL语句。开发业务复杂,数据表繁多的系统,无疑跟噩梦一样。
DAO层其实很有规律。插入数据时,无非就是把POJO拆分成各种属性然后拼装为SQL语句,保存进数据库时;读取数据时,无非就是用SQL把POJO的各种属性从数据库读出来,然后拼装为POJO对象返回。而且POJOu数据表,POJO属性与数据表的列,都存在着某种固定的映射关系。
ORM就是做这种工作的框架。它通过配置文件或使用JAVA注解把JAVA对象映射到数据库上,自动生成SQL语句并执行。Hibernate是最成功的ORM框架,Hibernate使用简单,功能强大,对市面上所有的数据库都有良好的支持。Hibernate能直接操作POJO,并且是一种轻量级的框架,不依赖于任何容器。
JDBC变成中,开发者通过在DAO层编写 INSERT SQL语句插入数据编写UPDATE语句保存数据,编写DELETE语句删除数据,通过SELETE语句查询数据。在Hibernate中原理也是一样的,只不过Hibernate充当了DAO层,根据POJO与实体类的映射配置自动生成相应的SQL语句。从控制台输出可以看到Hibernate生成的SQL语句。JDBC中SQL语句是由开发者事先写好的,而Hibernate中的SQL语句是动态生成的。因此如果实体类发生变化,则在JDBC中需要修改所有的SQL语句,这样会使工作量加大,而在Hibernate中只需要修改实体类的配置。