为什么使用Hibernate
来源:互联网 发布:php自学书籍 编辑:程序博客网 时间:2024/05/21 12:08
为什么使用Hibernate?
这个问题就像我们为什么使用MVC,设计模式一样,我们使用它们的目的就是为了方便,而它们之所以会存在就是因为它们有自己的特点。
今天就来通过认识Hibernate,从而知道我们为什么要使用它。
一、Hibernate的由来:
我们平常做开发的时候经常需要使用到JDBC连接来读写数据库,最常见的就是打开数据库连接、使用复杂的SQL语句进行读写、关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常烦琐的过程。
这时出现了Hibernate框架,它很好的解决了这一繁琐的问题。
二、Hibernate的概念:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
换句话说,Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
下面我来展示一下不使用Hibernate和使用Hibernate的D层的代码:
使用Hibernate前:
public void addItem(Connection conn, Item item) {String sql = "insert into t_items (item_no, item_name, spec, pattern, category, unit) " +"values (?, ?, ?, ?, ?, ?)";PreparedStatement pstmt = null;try {//Dao的设计通常是单纯的,不应该放入太多的逻辑//因为Dao是我们程序的最底层,所以越通用越好pstmt = conn.prepareStatement(sql);pstmt.setString(1, item.getItemNo());pstmt.setString(2, item.getItemName());pstmt.setString(3, item.getSpec());pstmt.setString(4, item.getPattern());pstmt.setString(5, item.getItemCategory().getId());pstmt.setString(6, item.getItemUnit().getId());pstmt.executeUpdate();} catch (SQLException e) {throw new AppException("添加物料失败!");} finally {DBUtil.close(pstmt);}}
使用Hibernate后:
public void addItem(Session session, Item item) {session.save(item);}
从对比中我们可以看到使用Hibernate后代码清爽了很多。
三、Hibernate的优点
Hibernate除了上面所说的可以减少代码量还有下面的优点:
- 提高生产力
因为是基于JDBC的封装,所以代码更加简练了,生产力自然得到了提高。
- 使开发更加对象化
因为Hibernate是对ORM(对象/关系数据库映射)的一个很好的实现。
所以它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。
- 可移植性
Hibernate中不涉及sql语句,sql语句虽然是标准的,但是各个数据库厂商会有不同,使用hibernate标准API,会自动转换成相应的数据库sql语句,关键是hibernate配置文件中方言的配置。
- 支持透明持久化
Hibernate的API没有侵入性(即所编写的类不需要继承Hibernate的API),对于实体类来说,既可以使用普通的JDBC,也可以使用Hibernate。
四、Hibernate的适用范围
凡事有利必有弊,由于我们Hibernate的特点,所以它存在着一些局限性。
1.由于Hibernate是对ORM的实现,所以它只适合于所有的关系型数据库。
2.由于Hibernate中不涉及sql语句,所以它对大批量数据更新及统计查询功能会有问题。
3.对于一些Hibernate中的映射标签,因为已经封装好,所以它们的实现也需要一些相应技术的支持。
以上对Hibernate进行了初步的介绍,相信大家对Hibernate有了一些认识,也知道了我们使用它就是为了在适当的时候(它的适用范围内)为我们提供一些方便。
- 为什么使用hibernate,hibernate优缺点
- 为什么要使用hibernate
- 为什么要使用Hibernate
- 为什么使用Hibernate
- 为什么要使用Hibernate?
- 为什么要使用Hibernate
- 为什么使用hibernate orm
- 解答:为什么使用Hibernate?
- hibernate的工作原理以及为什么使用
- hibernate的工作原理以及为什么要使用hibernate
- hibernate的工作原理以及为什么要使用hibernate
- 框架漫谈之hibernate(一)为什么要使用hibernate框架
- Hibernate工作原理、为什么要使用Hibernate,Hibernate的内部机制。
- 为什么Hibernate中使用serializable来加载或更新实体
- Hibernate工作原理及为什么要用?Struts工作机制?为什么要使用Struts?and Spring
- hibernate使用关联映射的优劣比较:为什么用Hibernate时一定要做关联映射?
- 为什么Hibernate如此成功!
- Hibernate为什么如此流行?
- c++primer学习笔记(4.1)数组
- ActionScript 启用 SWF 文件的远程调试并设置调试密码
- 习题6.4
- 嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(一)
- C++ Primer 第10章 习题10.25
- 为什么使用Hibernate
- 嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二)
- 移植thttpd嵌入式web服务器
- S3C2440上ADC驱动实例开发讲解
- HTTP接收器的概念
- 淘宝客赚钱秘籍:淘宝客打造快速和推广单页网站,轻松赚大钱
- Roller源码,Install的时候出现Error occurred during initialization of VM错误时的解决方法
- 设计一个不能被继承的类
- 关于CreateWindow()设置了WS_MAXIMIZE|WS_VISIBLE样式后,窗口最大化失败(解决)