Java相關框架概念以及思想

一、什麼是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;
相關文章
相關標籤/搜索