2021-02-06

JDBC

通过JDBC操作数据库

  1. 加载驱动—将jar包中的代码加载到JVM中
  2. 连接数据库—借助数据库连接对象Connection(数据库连接地址,账号,密码)
  3. 编写SQL
  4. 发送SQL—PreparedStatement
  5. 处理SQL执行结果 ResultSet
  6. 释放资源 ResultSet PreparedStatement Connection 先打开的后关闭 调用各自的.close()即可

三层结构

概念:是一种设计模式,将一个复杂的需求,分为三层:View(视图层),Service(业务层),Dao(dao层)
View(视图层)
作用:可以和用户做数据交互,负责接收用户数据,并将数据展示给
注意:暂时使测试类代替,接受(Scanner),展示(syso)
Service(业务层)
作用:代表着程序中的具体业务功能,业务层中的每一个方法都对应着程序的一个功能;
例如:登录/注册/转账等等
代码设计:

  • 业务层接口:xxxService 例如:ProductService
  • 接口实现类:xxxServiceImpl l例如:ProductServiceImpl
    注意:大多数情况下,每一个业务功能(方法),可能都需要Dao层的方法;例如转账功能需要使用查/改
    所以需要在业务层做事务控制
    Connection 数据库连接对象
    开启事务: conn.setAutoCommit(false);
    提交事务:conn.commit();
    回滚事务:conn.rollback();
    注意:为了统一管理,无论业务层方法是否需要,都必须进行事务控制
    Dao(dao层)
    作用:唯一可以直接操作数据库,dao层中的每个方法都对应在一种数据库操作(增删改查)
    代码设计:
  • Dao接口: XxxDao 例如: ProductDao
  • 接口实现类: XxxDaoImpl 例如: ProductDaoImpl

解决思路: 让Service与Dao使用同一个conn即可
具体实现:

  1. 将Service中的conn当做参数,传递给Service调用的Dao中的每一个方法-----太繁琐\麻烦,弃
    用!!
  2. Service与Dao都是运行在主线程中,而每一个线程都具有一个独立的空间(线程空间
    ThreadLocal);在程序执行时,每次都是Service最先获取conn,此时可以新建conn给Service使
    用,当Service中调用Dao中的方法时,将该conn放入线程空间,Dao不再重新创建新的conn,而
    是从线程空间中获取,保证了Service与Dao使用的是同一个conn;此时,Dao层中就不能再关闭
    conn了,因为Service层还要通过该conn控制事务,所以conn的关闭应该由Service负责,Dao层
    中不再关闭conn!!!

实际开发流程

  1. 建表

  2. 创建项目

  3. 在项目根目录下创建lib文件夹,与src同级,用来存放项目需要jar包

  4. Build path: 右键单击jar包–>Build path–>Add to Build Path

  5. 在src中导入jdbc配置文件

  6. 构建Package结构: 公司域名倒置.模块名

       com.baizhi.entity ---------------实体类 
       com.baizhi.util -----------------工具类                                      
       com.baizhi.dao------------------- Dao接口
       com.baizhi.dao.impl---------------Dao接口实现类
       com.baizhi.service -------------- Service接口
       com.baizhi.service.impl-----------Service接口实类
       com.baizhi.test------------------ 测试类
    

Servlet整合jdbc后项目的开发步骤

1.搭建开发环境

  新建一个web项目
  导入jar包,将mysql-connector-java.jar    servlet-api.jar放置到WEB-INF/lib目录中
  复制   JDBCUtils工具类+jdbc.properties

2.建表

3.实体类

4.Dao

        dao接口   定义对一张表增删改查的方法
        dao实现类   通过JDBC操作实现对数据库的增删查改

5.service

 service接口每一个方法对应着一个功能
 service实现类   调用dao+业务逻辑判断+事务控制

6.test 使用JUnit框架对dao和service进行测试

7.servlet+html页面

8.集成测试

你可能感兴趣的:(jdbc)