sql注入:在执行sql语句时,如果通过拼接字符串方式插入sql语句的值,当值中由非法字符,或sql语句关键字时,会导致sql语句语法错误,或执行结果不正确的情况。这称之为sql注入

Statement和PrepareStatements的区别
Statement是PrepareStatements的父接口,在执行sql语句时只能通过拼接字符串方式插入sql语句的值,不但效率低,而且容易引起sql注入
PrepareStatements提供了占位符方式插入sql语句的值,sql语句只会编译一次,效率较高,而且无论什么值都当作字符串处理,不会引起sql注入

数据库的三范式:
范式一:
行不可重复,列不可再分
范式二:
(1)必须符合第一范式
(2)非主依主。非主键列必须依赖于主键列。
范式三:
(1)必须符合第二范式
(2)非主独立。非主键列之间不能有依赖关系

一对一
关系模型:一条主表记录对应一条从表记录,一条从表记录对应一条主表记录
对象模型:再一个实体中拥有另一个实体类的对象,同时在另一个实体类中拥有改实体类的对象

一对多
关系模型:一条主表记录对应多条从表记录,一条从表记录对应一条主表记录
对象模型:在一个实体中拥有另一个实体的集合,同时另一个实体类中拥有该实体类的对象

多对多
关系模型:一条主表记录中对应多条从表记录,同时一条从表记录对应多条主表记录
对象模型:在一个实体中拥有另一个实体的集合,同时在另一个实体类中拥有该实体类的集合。

=三层架构==

架构模式:是指一个软件系统整体的组织结构。
架构模式描述软件系统的组织结构的一些规则和指南。
通过这些规则和指南,我们可以把预定义的、指责明确的子系统有效的组织起来。
设计模式:描述的是在软件系统的某一局部不断重现的核心解决方案
这些解决方案以完善的设计结构出现,可以被应用到以后出现的类似的环境中。

三层架构模式数据架构模式。将整个业务应用从低到高划分为:表示层、业务逻辑层、数据访问层(持久层)。
数据访问层:完成内存和数据库之间的数据交互
业务逻辑层:完成内存数据的业务处理操作
表示层:完成数据的展示,并提供界面供用户进行数据的录入。

数据持久层采用DAO模式(Data Access Object)
建立实体类和数据库表进行映射,也就是哪个类对应哪个表,哪个属性对应那个列(ORM)。
数据持久层的目的,就是完成对象数据和关系数据的转换。

业务逻辑层采用事务脚本模式。
将一个业务中所有的操作封装成一个方法(脚本)
保证一个业务方法中,所有的数据库更新操作同时成功,或同时失败。不允许出现部分成功,部分失败,这样引起数据混乱的操作。(事务)

表示层采用MVC模式
M:模型。也就是实体类,负责数据的封装和数据的传输。
V:视图。也就是GUI窗体和GUI组件,负责提供界面和数据进行数据交互,以及数据的展示。
C:控制。也就是事件处理,负责业务流程的控制。

业务接口设计原则:一个实体类一个业务接口,一次提交一个业务方法,方法的参数来自表现层。
持久接口的设计原则:一个实体类一个持久接口,一次数据库操作一个持久方法。