16.1 设计目的
以常见的应用软件系统而言,客户端连接应用服务器,应用服务器与数据库服务器相连,见图3.16.1。服务器连接数是一个有限的资源,在一个线程中不能多次建立与数据库的连接,一个线程中的多次SQL操作都共享同一个数据库连接对象。
图3.16.1 客户端、应用服务器、数据库服务器的连接示意图
我们这里用Java所进行的软件设计开发属于应用服务器软件的设计开发,其中的数据层就是负责连接并访问数据库的。
(1)创建与数据库的连接对象。
数据层负责对数据库的访问,在客户端通过应用服务器与数据库建立连接对象后,一个线程每次访问数据库时,都需要这个连接对象。每个线程与数据库只有一个连接对象。当要访问数据库时,如果还没有创建与数据库的连接对象,就创建一个新的连接对象;如果已经创建过了,就直接使用这个连接对象。另外,要避免多次通过参数来传递连接对象。
(2)实现数据层的功能。
数据层主要提供实体对象的创建、查询、更新和删除等操作。这些操作对应于数据库中数据表的CRUD(创建、查询、更新和删除)等操作。为了让数据层之上的业务层调用数据层功能的时候,可以忽略数据层的具体实现,并且在需要改变存储技术的时候,数据层可以灵活做更替,数据层应该提供接口,业务层针对数据层的接口编程,这样两层之间能更好地解耦。
(3)提供统一途径获取数据层实例化对象。
业务层在调用数据层功能的时候,对数据层的具体实现是透明的,对数据层实现类的替换也是透明的,数据层应该给业务层提供统一的获取数据层实例化对象的途径。
当前公司人员信息管理系统的数据层需求如下。
①针对部门对象提供以下操作。
·增加(部门编号为系统自增长生成,部门人数初始值为0)。
·查询(一、按照部门编号,查询部门;二、查询所有部门;三、按照部门的名称,查询部门是否存在)。
·修改(其中部门的编号id不能修改,部门的人数count不能直接修改)。
·删除(按照部门编号删除部门)。
·改变部门人数(按照部门编号,增加或者减少部门人数)。
②针对员工对象提供以下操作。
·增加。
·查询(一、按照员工编号,查询员工;二、查询所有员工;三、按照某个属性的给定值模糊查询员工,将查询结果进行分页;四、按照某个属性的给定值查询满足条件的员工人数)。
·修改(员工的id不能修改)。
·删除(按照员工编号删除员工)。