第五次任务总结

ORM

从数据库查询到的结果集resultset在进行遍历时,逐行遍历,取出的都是零散的数据,
在实际应用开发过程中,我们需要将零散的数据进行封装整理

实体类(entity):零散数据的载体

entity 实体类
类名 = 表名; 属性名 = 列名

  • 一行数据中,多个零散的数据进行整理
  • 通过entity的规则对表中数据进行对象的封装
  • 表名 = 类名 ; 列名 = 属性 ; 提供各属性的get,set方法
  • 提供无参构造方法,(视情况添加有参构造)

DAO数据访问对象(DATA ACCESS OBJECT)

DAO实现了业务逻辑与数据库访问相分离
对同一张表的所有操作封装在xxxDaoimpl对象中
根据增删改查的不同功能实现具体的方法(INSERT ,UPDATE,DELETE,SELECT,SELECTALL)

DAO
Date工具类

  • 现有的问题:数据库存储的数据类型为java.sql.Date,
    而我们java应用层存储日期类型为java.util.Date,
    当我们用java应用程序插入带有日期的数据到数据库中时,需要进行转换。
  • 12.1 java.util.Date
    java语言常规应用层面的日期类型,可以通过字符串创建对应的时间对象
    无法直接通过JDBC插入到数据库
  • 12.2 java.sql.Date
    不可以通过字符串创建对应的时间对象,
    只能通过毫秒值创建对象(1970年至今的毫秒值)
    可以直接通过JDBC插入到数据库
  • 12.3 SimpleDateFormat
    格式化和解析日期的具体类,允许进行格式化(日期->文本),
    解析(文本->日期)和规范化

业务

业务代表用户完成的一个业务功能,
可以由一个或多个DAO的调用组成,
(软件所提供的一个功能都叫业务)

使用事务控制转账程序

使用事务出现的问题:
得到的连接不同导致事务关闭的连接不只一个。

  • 解决方案1:传递Connection
    为了解决线程中connection对象不同步的问题,
    可以将connection对象传递给每个DAO方法。
    传递的问题
    如果使用传递connection,容易造成接口污染(BadSmell),
    定义接口是为了更容易更换实现,
    而将connection定义在接口中,
    会造成污染当前接口
  • 解决方案2:ThreadLocal
    可以将整个线程(单线程)中,存储一个共享值。
    线程拥有一个类似Map的属性,键值对结构<ThreadLocal对象,值>。

在这里插入图片描述

Service层实现业务控制
在这里插入图片描述
在这里插入图片描述
三层架构
三层架构

1.表示层
命名:xxxView
职责:收集用户的数据和需求 展示数据。
2.业务逻辑层:
命名:xxxServiceImpl
职责:数据加工处理,调用DAO完成业务实现,控制事务。
3.数据访问层
命名:xxxDaoImpl
职责:向业务层提供数据,将业务层加工后的数据同步到数据库。

在这里插入图片描述
三层架构项目搭建(按开发步骤)

  • utils 存放工具类(DBUtils)
  • entity 存放实体类(Person)
  • dao 存放DAO接口(PersonDao)
    impl 存放DAO接口实现类(PersonDaoImpl)
  • service 存放service接口(PersonService)
    impl 存放service接口实现类(PersonServiceImpl)
  • view 存放程序启动项目(main)
    程序设计时 考虑易修改,易扩展,为service层和DAO层设计接口,便于未来更换实现类

** DaoUtils**

在DAO层中,对数据库表的增删改查操作存在代码的冗余,
可以对其进行抽取封装DaoUtils工具类实现复用

Druid连接池

在程序初始化时,预先创建指定数量的数据库连接对象存储在池中。
当需要连接数据库时,从连接池中取出现有连接;
使用完毕后,也不会进行关闭,而是放回池中,实现复用,节约资源。
Druid连接池使用步骤
.创建database properties配置文件,
.引入Druid-1.1.5.jar文件

Apache的DBUtils使用

Commons DBUtils 是Apache组织提供的一个对JDBC进行简单封装的开源工具类库
使用它能够简化JDBC应用程序的开发!同时,不会影响程序的性能
DBUtils是java编程中数据库操作实用小工具,小巧,简单,实用

  • 对于数据表的查询操作,可以把结果转换为list,array,set等集合,便于操作
  • 对于数据表的DML操作,也变得很简单(只需要写SQL语句);

DBUtils主要包含

  • ResultSetHandler接口:转换类型接口
    -BeanHandler类:实现类,把一条记录转换成对象
    -BeanListHandler类:实现类,把多条记录转换成List集合。
    -ScalarHandler类:实现类,适合获取一行一列的数据。
  • QueryRunner:执行SQL语句的类
    -增、删、改:update();
    -查询:query();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值