zoukankan      html  css  js  c++  java
  • jpa,jdbc,hibernate/mybatis,数据库驱动

    JPA是规范,hibernate/mybatis是对规范的实现,hibernate/mybatis是对jdbc的封装,也就是说hibernate/mybatis还是会调用jdbc。

       我们平时使用jdbc进行编程,大致需要下面几个步骤:
       1,使用jdbc编程需要连接数据库,注册驱动和数据库信息
       2,操作Connection,打开Statement对象
       3,通过Statement对象执行SQL,返回结果到ResultSet对象
       4,使用ResultSet读取数据,然后通过代码转化为具体的POJO对象
       5,关闭数据库相关的资源
     
     
    MyBatis对JDBC的封装很好,几乎可以取代Jdbc。
     
    JAVA使用JDBC访问数据库的步骤:
    1.得到数据库驱动程序
    2.创建数据库连接
    3.执行SQL语句
    4.得到结果集
    5.对结果集做相应的处理(增,删,改,查)
    6.关闭资源:这里释放的是DB中的资源
    简单的例子:
    [java] view plain copy
    Connection con= null;  
    PreparedStatement pStmt=null;  
    ResultSet rs = null;  
    try{  
    con = ods.getConnection();  
    String sql = "select * from admin";  
    pStmt=con.prepareStatement(sql);  
    rs=pStmt.executeQuery();  
    while(rs.next())  
    { }  
    }  
    catch(Exception ex) {  
    try{  
    con.rollback();  
    }catch(SQLException sqlex){  
    sqlex.printStackTrace(System.out);  
    }  
    ex.printStackTrace();  
    }finally{  
    try{  
    rs.close();  
    pStmt.close();  
    con.close();  
    }catch(Exception e){  
    e.printStackTrace();  
    }  
    }  
    

      

    JdbcTemplate的作用
    常见的JDBC代码,简单的select语句也需要冗长的出错处理,并且每个函数都不断地重复同样的代码。
    JdbcTemplate正是为了减少上述繁琐的代码而设计出来的。它是对JDBC的一种封装,抽象我们常用的一些方法。Simple and Stupid就是它的目标。下面是完成了刚才JDBC代码同样功能的JdbcTemplate的代码:
    [java] view plain copy
    String sql = "select * from admin";  
    jdbcTemplate.query(sql,new RowCallbackHandler() {  
    public void processRow(ResultSet rs) throws SQLException {  
    }  
    } );  
    使用模板方式封装 jdbc数据库操作-固定流程的动作,提供丰富callback回调接口功能,方便用户自定义加工细节,更好模块化jdbc操作,简化传统的JDBC操作的复杂和繁琐过程。
    1) 使用JdbcTemplate 更新(insert /update /delete)
    [java] view plain copy
    int k = jdbcTemplate.update("UPDATE tblname SET prop1=?,prop2=?...", new Object[]{...});  
    [java] view plain copy
    jdbcTemplate.update("INSERT INTO tblname VALUES(?,?,..)", new Object[]{...},  
         new int[]{Types.VARCHAR,Types.NUMERIC});  
    [java] view plain copy
    jdbcTemplate.update("INSERT INTO tblname VALUES(?,?,..)",                       
            new PreparedStatementSetter(){                            
                   public void setValues(PreparedStatement ps) throws SQLException{        
                        ps.setLong(1, user.getId(1));  
                        ps.setString(2, user.getName(2));     
                        ps.setDate(3, new java.sql.Date(new Date().getTime());    
                        ps.setTimestamp(4, new Timestamp(new Date().getTime());  
                   }                       
            }  
    );  
    

      

    在说为什么要使用JPA之前,我们有必要了解为什么要使用ORM技术。
    ORM 是Object-Relation-Mapping,即对象关系影射技术,是对象持久化的核心。ORM是对JDBC的封装,从而解决了JDBC的各种存在问题:
    

      

    Jpa是一种规范,而Hibernate是它的一种实现。除了Hibernate,还有EclipseLink(曾经的toplink),OpenJPA等可供选择,所以使用Jpa的一个好处是,可以更换实现而不必改动太多代码。
    

      

  • 相关阅读:
    kubernetes集群系列资料20-metric介绍
    kubernetes集群系列资料19-dashboard介绍
    kubernetes集群系列资料18--K8S证书
    kubernetes集群系列资料16--helm介绍
    云安全产品使用---文件存储
    kubernetes集群系列资料15--安全机制介绍
    kubernetes集群系列资料14--scheduler介绍
    kubernetes集群系列资料17--prometheus介绍
    云安全产品使用---云安全中心
    kubernetes集群系列资料13--存储机制介绍
  • 原文地址:https://www.cnblogs.com/yaowen/p/8880951.html
Copyright © 2011-2022 走看看