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外面,实现事务的管理。对于事务这边的东西,去放到业务逻辑层好了!
JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解的更多相关文章
- Hibernate3回顾-5-简单介绍Hibernate session对数据的增删改查
5. Hibernate对数据的增删改查 5.1Hibernate加载数据 两种:get().load() 一. Session.get(Class arg0, Serializable arg1)方 ...
- hibernate导入大量数据时,为了避免内存中产生大量对象,在编码时注意什么,如何去除?
Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( i ...
- JDBC&Hibernate
当数据库有大量用户来访问要采取什么技术解决 可以采用连接池: 什么是ORM 对象关系映射(Object Relational Mapping 简称ORM)是一种为了解决面向对象与面向关系数据库存在的互 ...
- 【Spring Boot】使用JDBC 获取相关的数据
使用JDBC 获取相关的数据 什么是JDBC Java Database Connectivity 是一种用于执行SQL语句的Java API,与数据库建立连接.发送 操作数据库的语句并处理结果. S ...
- Java面试题 OOAD & UML+XML+SQL+JDBC & Hibernate
二.OOA/D 与UML 部分:(共6 题:基础2 道,中等难度4 道) 96.UML 是什么?常用的几种图?[基础] 答:UML 是标准建模语言:常用图包括:用例图,静态图(包括类图.对象图和包图) ...
- Hibernate上传数据到数据库,从数据库读取数据到本地模板代码
1.Hibernate上传数据到数据库: //创建一个session对象 Session session1=HibernateTools.getSession(); //Fenciresult数据库表 ...
- HBase 数据读写流程
HBase 数据读写流程 2016-10-18 杜亦舒 读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 ro ...
- 使用JDBC处理Oracle大数据
一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...
- 利用jdbc处理oracle大数据---大文件和二进制文件
一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...
随机推荐
- Java 多维数组 按某列 排序
public MetaCell[][] getByColumn(final int columnIndex, int decisionIndex) {//[注意]final咯 ...
- 深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制(瘋耔修改篇一)
首先非常感谢原文作者为我们提供的知识库,因为有你们的贡献,我们的开发难度更显简单 原文 : http://blog.csdn.net/mr_raptor/article/details/30113 ...
- When to use DataContract and DataMember attributes?
When to use DataContract and DataMember attributes? I am very confused about the DataContract attri ...
- 利用dhtmlxGrid做的表格排序的功能。
dhtmlxGrid支持tree和grid. grid之间.grid内部进行拖拽, 如在grid内部进行拖拽,可以增加一行:在grid之间拖拽,第一个grid的记录删除,第二个grid增加一行记录.
- How many ways
How many ways Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- 《C语言程序设计现代方法》第2章 编程题
7 编写一个程序,要求用户输入一个美金数量,然后显示出如何使用最少的20美元.10美元.5美元和1美元来付款. 提示:将付款金额除以20,确定20美元的数量,然后从付款金额中减去20美元的总金额.对其 ...
- 作品第一课----循环改变DIV颜色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- poj 1556 The Doors(线段相交,最短路)
The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7430 Accepted: 2915 Descr ...
- fork和缓冲区
fork在面试中经常被问到,在这里复习一下. frok创建子进程,父子进程共享.text段,子进程获得父进程数据段.堆和栈的副本,由于在fork之后经常跟随者exec,所以很多实现并不执行父进程数据段 ...
- Axure原型用pmdaniu在线托管尝试
这次把原型中语音模块的坑填了一部分,实现了拖拽按钮控制的界面效果 http://www.pmdaniu.com/prototype/view?id=WXpVNwNhUmYMPFN3AkA