为什么使用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后代码清爽了很多。