Data Access Patterns

Слайд 2

Three Tier Architecture

Presentation Layer (UI classes)

Business Logic Layer (data classes holding business

Three Tier Architecture Presentation Layer (UI classes) Business Logic Layer (data classes
logic)

Persistent Data Layer (databases, DBMS, data access classes)

Слайд 3

Three Tier Architecture

Presentation Layer (UI classes)

Business Logic Layer (data classes holding business

Three Tier Architecture Presentation Layer (UI classes) Business Logic Layer (data classes
logic)

Persistent Data Layer (databases, DBMS, data access classes)

Слайд 4

Three Tier Architecture

Presentation Layer (UI classes)

Business Logic Layer (data classes holding business

Three Tier Architecture Presentation Layer (UI classes) Business Logic Layer (data classes
logic)

Persistent Data Layer (databases, DBMS, data access classes)

controller

façade

Слайд 5

Facade

Шаблон фасад (англ. Facade)
— структурный шаблон проектирования, позволяющий скрыть сложность системы

Facade Шаблон фасад (англ. Facade) — структурный шаблон проектирования, позволяющий скрыть сложность
путём сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы.

Слайд 6

Motivation

Most software systems require persistent data (i.e. data that persists between program

Motivation Most software systems require persistent data (i.e. data that persists between
executions).
In general, distributing low-level data access logic throughout a program is not a good idea (design).

Program

select * from Items

rs.getString("Name")

Слайд 7

Data Access Layer

A better design is one that includes a data access

Data Access Layer A better design is one that includes a data
layer which encapsulates the details of the underlying persistence API.
It abstracts the low-level details of persistent storage.
It provides an interface that is usually a better match for the style of programming used in the domain logic. For example, the data access layer might provide an OO interface onto relational data.

Слайд 8

Program

select * from Items

rs.getString("Name")

Program

select * from Items

rs.getString("Name")

customer = dao.find(id)

update(customer)

Program select * from Items rs.getString("Name") Program select * from Items rs.getString("Name") customer = dao.find(id) update(customer)

Слайд 9

Data Access Layer

To avoid problems associated with mixing SQL and application logic,

Data Access Layer To avoid problems associated with mixing SQL and application
SQL statements and data base design details are often encapsulated in a data access layer
The data access layer presents an interface that is convenient for application programs.

Слайд 10

Program to an Interface; Not Implementation

Program to an Interface; Not Implementation