發表文章

Spring boot v1.5 (六) spring data jpa 基本操作

圖片
最近天氣好熱,做甚麼事都覺得很懶,想要寫個spring data jpa也是懶懶的,不過這部分卻也是滿重要的一部分,前一篇介紹JDBCTemplate,已經覺得跟以前寫SQL方式有所差異了,JPA帶來的是物件導向的設計面思考,說到JPA不得不提提ORM,Object-relational mapping主要想法為簡化及物件導向的設計,讓RDB更貼近Object,在設計上可以更加便利,甚至透過一些設計可以讓Table具有物件導向的特性如繼承等等,以往要使用ORM的框架,都會先以Hibernate進行,不過近來慢慢地轉向JPA,主要還是在減少程式碼、增加彈性等等,大體的功能沒有差異很大,所以從Hibernate轉到JPA問題不大,JPA要介紹的東西還滿多的,所以我這裡會再分成三個章節來介紹。

SPRING DATA JPA基本操作JPQL & Named SQL & Native SQLCache & DB Design Pattern SPRING DATA JPA更加簡化的程式撰寫,只需要一個 Interface內寫一些查詢 method就可以操作JPA,因為利用 method 組合查詢條件,確實很方便也很容易理解,若是都沒有辦法符合需求當然也可以自己實作一個來用當然沒有問題。

學習目的:SPRING DATA JPA基本操作。 學習時數:3.5hr 教學影片:

pom.xml 說明
spring-boot-starter-web:配置 Web Project所需的函式庫。 spring-boot-starter-test:配置 unit or mock test 所需的函式庫。 spring-boot-starter-actuator:配置監控spring boot所需的函式庫,後續spring cloud會使用到,所以一開就導入。spring-boot-starter-jdbc:配置使用jdbc所需的函式庫。postgresql:配置postgresql連接Driver所需的函式庫。jasypt-spring-boot-starter:加解密所需的函式庫。spring-boot-starter-data-jpa:配置Spring data jpa所需的函式庫。lombok:本次的彩蛋,降低getter與setter的套件。有使用到上一篇的加解密程式…

Spring boot v1.5 (五) JDBCTemplate

圖片
我個人是較推崇 JPA的,不過有些情況下,或是架構設計上,會需要純SQL的方式進行,但是像教科書介紹的方式進行,在實務上很難看到,太難用、程式太醜、修改太複雜等等都是要克服的問題,不可能期望所有開發者都是同一高等級的,JDBCTemplate某程度簡化了使用SQL的繁雜度,若是需要大量的純SQL時,JDBCTemplate絕對是首選,也會介紹JDBCTemplate如增刪修查方式、Connection Pool設定及帳密加密的方式等等。

預先準備項目:請先下載安裝PostgreSQL,並建立一個DB(louisz)及Table(users),DDL如下:。CREATE DATABASE louisz WITH OWNER = louisz ENCODING = 'UTF8' LC_COLLATE = 'Chinese (Traditional)_Taiwan.950' LC_CTYPE = 'Chinese (Traditional)_Taiwan.950' TABLESPACE = pg_default CONNECTION LIMIT = -1; CREATE TABLE public.users ( id integer NOT NULL, name character varying COLLATE pg_catalog."default", email character varying COLLATE pg_catalog."default", mobilenumber character varying COLLATE pg_catalog."default", CONSTRAINT user_pkey PRIMARY KEY (id) ) WITH ( OIDS = FALSE ) TABLESPACE pg_default;

Spring boot v1.5 (四) swagger,properties and structing your code

圖片
上一章有稍微讓大家看一下swagger怎麼跟spring boot無縫接軌,本章就深入一點來介紹swagger,把它定位在 API似乎有點薄弱,當作工具(Tools)我覺得倒很個很好的解釋,它主要提供的工具分別為 swagger core、swagger codegen、swagger editor、swagger ui等,以下是各自的說明:

swagger core:這是swagger的核心,使用Java撰寫出來的。swagger codegen:可以依據swagger(yaml格式)產生出來的api json或是url,可產生客戶端(client)相對應的程式碼。swagger editor:透過這個工具可以產生yaml,有點像是Eclipse IDE一樣,撰寫相對應的yaml,透過yaml可以產服務端(server)及客戶端(client)的程式碼,透過這裡可以玩玩看。swagger ui:將這工具與你的程式結合,如上章的方式,程式啟動後就會自動生成 api 前端頁面提供使用。

Spring boot v1.5 (三) magic RESTful and some swagger

圖片
會用Magic來形容Spring boot的RESTful,一方面是微服務的架構,另一方面則是透過Spring boot真得很容易完成,本篇開始也就會一些專案的經驗帶進來。
    簡單介紹一下REST(Representational State Transfer),具象狀態的傳輸,Wiki是這樣說明的,其實它的出現,主要是因為原本的Web Service太過複雜太謹慎了,SOAP跟XML-RPC不容易讓人一下子就了解,在這惟快不破的時代,時間就是金錢,所以REST的出現,讓原本比較難的Web Service變得簡單易懂,而且也容易上手,有些要點可以參這裡都有說明可以看看,對於微服務來說,無狀態很重要,未來架構設計也應該朝向無狀態,不然很難處理日益暴漲的量,符合REST設計風格的Web API稱為RESTful API,這就是我們常說的RESTful,比Web Service多了幾種操作方式,分別為get、post、put、delete、patch及head等(當然還有其他的),差別在這裡可以參考看看,Web Service有wsdl,那RESTful有嗎?答案就是Swagger,已經可以算是RESTful的標準了,Spring boot整合swagger也是很無縫地喔。


Spring boot v1.5 (二) logging

圖片
本篇主要介紹Logging的機制,Spring boot預設為logback framework,在開始之前先給大家熱身一下,每次執行Spring boot程式在Console上都會看到Spring的Banner如下


這Banner可以自訂喔,可以在google輸入ascii generator關鍵字,就可以找到很多產生這Banner文件,我使用的是這個,然後在/src/main/resources目錄中增加一個banner.txt檔案,然後把產生出來的Code複製到banner.txt的檔案上,也可以透過簡單的設定加上一些顏色
banner.txt
${AnsiColor.BRIGHT_BLUE} _ _______ _________ _______ _______ ( \ ( ___ )|\ /|\__ __/( ____ \/ ___ ) | ( | ( ) || ) ( | ) ( | ( \/\/ ) | | | | | | || | | | | | | (_____ / ) | | | | | || | | | | | (_____ ) / / | | | | | || | | | | | ) | / / | (____/\| (___) || (___) |___) (___/\____) | / (_/\ (_______/(_______)(_______)\_______/\_______)(_______/ ${AnsiColor.BRIGHT_GREEN} Application Version: ${application.version}${application.formatted-version} Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
有點跑掉不過執行結果如下:
這個banner.t…