zoukankan      html  css  js  c++  java
  • JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解

    以查询一个用户信息(id,name)为例:

    JDBC

    1. 获取一个connection

    2. 生成一个statement

    3. 拼接SQL语句

    4. 查询对象,获取结果集(假设已经找到我们需要的对象)

    5. 读取结果集信息,封装成需要的用户对象

    6. 关闭结果集,statement,connection

    Hibernate

    1. 建立用户信息对象,并配置好对象关系映射

    2. 获取一个Session对象

    3. 生产一个Query对象

    4. 编写HQL语句

    5. 执行Query.list()方法,获取对象信息(这里Hibernate框架根据映射关系,完成对象与关系之间的转换)

    6. 关闭Session对象

    Mybaties

    1. 编写PO对象,配置sqlMap文件

    2. 生成SqlMapClient对象

    3. 操作对应的SQL,返回结果(sql语句,我们写的配置文件中,对象封装由Ibatis框架完成)

    4. 关闭SqlMapClient

    DAO理解

    DAO层处理的应该是对象关系相互转换的工作,它需要的是一个连接对象,但是它不关心这个对象怎么来,而且不关心在转换工作完成后,做怎么样的处 理。就像Ibatis框架似的,它在项目就充当着DAO的作用,因为我们通过配置文件和实体对象我们已经完成了对象关系的转换。而针对JDBC和 Hibernate技术,我个人觉得,我们可以把一个连接作为参数传递到DAO,以避免我们为DAO的每个方法中都获取一个连接对象,这样我们就可以不用 在DAO中处理数据库连接的打开和关闭了,从何在DAO外面,实现事务的管理。对于事务这边的东西,去放到业务逻辑层好了!

  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/myadmin/p/4759586.html
Copyright © 2011-2022 走看看