上回我们说完了hibernate的一些简单介绍,小伙伴们相信对它已经有了一些基本了解了,这次就来看看这个家伙与jdbc间有哪些联系吧。
一、
hibernate是jdbc的轻量级封装,包括了jdbc与数据库的连接和查询,删除等代码,它们被都用面向对象的思想用代码联系起来。hibernate是一个独立的对象持久层框架,与App Server、EJB都没有必然的联系。
Hibernate能够适用在任何JDBC可以使用的场合,如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。
hibernate通过hbm 配置文件把po类的字段和数据库的字段关联起来比如数据库的id,在po类中就是pravite Long id;
public Long getId()
public setId(Long id);然后hql语句也是面向对象的,它的查询语句不是查询数据库而是查询类的,这些实现的魔法就是xml文件,其实hibernate=封装的jdbc+xml文件
二、
Hibernate同时也是是一个与JDBC密切相关的框架,因此Hibernate的兼容性和JDBC驱动,都和数据库有着一定的关系,但是着和使用它的Java程序,和App Server是没有任何关系的,也不会存在兼容性问题。
hibernate与jdbc间区别:
jdbc
jdbc是java为了访问各种数据库而提供的javaAPI,使用jdbc一定要实现jdbc的jar包,连接mysql、oracle和db2需要各自的jar包,以mysql为例。我们先以一个访问数据库的例子作为示例,下面的代码实现了向数据库插入一条记录的功能
public class JDBCTest { private static final String driver = "com.mysql.jdbc.Driver"; private static final String url = "jdbc:mysql://localhost:3306/test"; private static final String name = "root"; private static final String pwd = "root"; public static void test1() { Connection conn = null; CallableStatement callStmt = null; PreparedStatement pre = null; try { Class.forName(driver); //加载jdbc驱动 conn = DriverManager.getConnection(url, name, pwd); //通过DriverManager获取一个连接 conn.setAutoCommit(false); //设置实务不是自动提交,事务默认是自动提交 pre = conn.prepareStatement("insert into sm_dept values(?,?,?)"); pre.setInt(1, 1); pre.setString(2, "name"); pre.setString(3, "123242434"); int results = pre.executeUpdate(); System.out.println("插入了" + results + "记录"); } catch (Exception e) { try { conn.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } } finally { try { conn.setAutoCommit(true); } catch (SQLException e) { e.printStackTrace(); } if (callStmt != null) { try { callStmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } public static void test2() {} public static void main(String[] args) { JDBCTest.test1(); } }
Hibernate
1)、jdbc操作于底层,效率更高。
2)、jdbc不是面向对象编程,hibernate是面向对象的编程,更符合java程序员的思考方式。
3)、hibernate封装度更加完善,极大的简化了访问数据库代码的复杂性和重复性。
4)、hibernate的缓存机制更强大,有session级别的一级缓存和sessionFactory的二级缓存。
以上就是hibernate与jdbc间联系的所有内容,小伙伴们懂了吗?还有疑问的小伙伴可以关注我们的网站来了解详情。如果还想了解其他java常见问题及解决方法,也可以来关注本网站查找答案噢。
推荐阅读: