一、什麼是IoC程序員
Ioc—Inversion of Control,即「控制反轉」,是一種思想,spring
一個重要的面向對象編程的法則,它能指導咱們如何設計出鬆耦合、更優良的程序。數據庫
高內聚低耦合的設計可以讓構造和演化都更加高效,好比:編程
二、什麼AOP設計模式
AOP面向切面,切面將那些與業務無關,卻被業務模塊共同調用的邏輯提取並封裝起來,減小了系統中的重複代碼,下降了模塊間的耦合度,同時提升了系統的可維護性。框架
實現策略JAVA SE動態代理、CGLib測試
spring aop通知(advice)分紅五類:
前置通知[Before advice]:編碼
在鏈接點前面執行,前置通知不會影響鏈接點的執行,除非此處拋出異常。
正常返回通知[After returning advice]:spa
在鏈接點正常執行完成後執行,若是鏈接點拋出異常,則不會執行。
異常返回通知[After throwing advice]:hibernate
在鏈接點拋出異常後執行。
返回通知[After (finally) advice]:
在鏈接點執行完成後執行,無論是正常執行完成,仍是拋出異常,都會執行返回通知中的內容。
環繞通知[Around advice]:
環繞通知圍繞在鏈接點先後,好比一個方法調用的先後。這是最強大的通知類型,能在方法調用先後自定義一些操做。環繞通知還須要負責決定是繼續處理join point(調用ProceedingJoinPoint的proceed方法)仍是中斷執行。
三、什麼是MVC
MVC的全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,
是一種軟件設計典範。它是用一種業務邏輯、數據與界面顯示分離的方法來組織代碼,
將衆多的業務邏輯彙集到一個部件裏面,在須要改進和個性化定製界面及用戶交互的同時,
不須要從新編寫業務邏輯,達到減小編碼的時間。
四、經常使用的設計模式
1工廠方法 關注對象建立。
2策略模式 關注對象行爲。業務變化時,對數據模塊的增長修改不受影響,開放封閉原則。
3外觀模式 BS/CS
4適配品模式 報表自主開發或購買第三方
5觀察者模式 主界面菜單(菜單的Enable、Vieable狀態)採用事件驅動方式
Spring(ICO控制反轉/DI依賴注入)
五、什麼是MyBatis
MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。
MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。
MyBatis 可使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)映射成數據庫中的記錄。
六、什麼是Hibernate
Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了很是輕量級的對象封裝,它將POJO與數據庫表創建映射關係,是一個全自動的orm框架,hibernate能夠自動生成SQL語句,自動執行,使得Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。
七、什麼是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;