Java相关框架概念以及思想

1、什么是IoC

Ioc—Inversion of Control,即“控制反转”,是一种思想,

一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。

高内聚低耦合的设计能够让构造和演化都更加高效,比如:

  • 开发更方便组织分工
  • 代码更容易进行复用
  • 更容易进行测试
  • 软件演化有更好的灵活性,能快速响应需求变化,维护代价更小

2、什么AOP

AOP面向切面,切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

实现策略JAVA SE动态代理、CGLib

spring aop通知(advice)分成五类: 
前置通知[Before advice]

在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。 
正常返回通知[After returning advice]

在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。 
异常返回通知[After throwing advice]

在连接点抛出异常后执行。 
返回通知[After (finally) advice]

在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。 
环绕通知[Around advice]

环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。 

3、什么是MVC

MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,

是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,

将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,

不需要重新编写业务逻辑,达到减少编码的时间。

4、常用的设计模式

1工厂方法 关注对象创建。 

2策略模式 关注对象行为。业务变化时,对数据模块的增加修改不受影响,开放封闭原则。 
3外观模式 BS/CS 
4适配品模式 报表自主开发或购买第三方 
5观察者模式 主界面菜单(菜单的Enable、Vieable状态)采用事件驱动方式

Spring(ICO控制反转/DI依赖注入)

5、什么是MyBatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

6、什么是Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

7、什么是JPA

JPA是Java Persistence API的简称,中文名Java持久层API,

是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

SQL

DROP TABLE IF EXISTS `jd_product`;-- 产品信息表
CREATE TABLE `jd_product` (
`prod_no` int(11) NOT NULL AUTO_INCREMENT,-- 产品ID
`prod_name` varchar(150) NOT NULL,    -- 产品名称
`prod_TypeId` int(11) DEFAULT NULL,    -- 类型ID
`prod_brandId` int(11) not null,    -- 品牌ID
`low_price` decimal(9,2) DEFAULT NULL,    -- 产品最低售价
`state` int(11) DEFAULT '0',    -- 状态(上架0,下架1)
`picture` varchar(20) DEFAULT NULL,    -- 产品封面图
`gmt_create` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`gmt_update` timestamp NOT NULL default '0000-00-00 00:00:00',
`else` int(11), -- 作用于其它
`sales` int(11), -- 销量
PRIMARY KEY (`prod_no`),    -- 主键
foreign key (`prod_TypeId`) references jd_protype(`prot_id`), -- 类型外键
foreign key (`prod_brandId`) REFERENCES jd_brand(`brand_id`) -- 外键
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
原文地址:https://www.cnblogs.com/dzcici/p/10446945.html