跳到主要內容

發表文章

目前顯示的是 2017的文章

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 SQL Cache & 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所需的函式庫。

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} 有點跑掉不過執行結

Spring boot v1.5 (一) introduce

在 微服務(microservice) 當道的時代,快速已經成為王道的代名詞,然而實現他概念的架構不得不提到 Spring boot 和 Spring Cloud ,當然還有DevOps、Container(Moby(Docker))等等(本系列會帶到這些觀念,但是會另外在其他章節來說明,我認為的微服務是怎樣的東西),所以本系列看標題也可以知道都是Spring boot的介紹跟我遇到的一些問題及想法,希望看的人可以快速進入Spring boot,開發真的不難,難的是改變。 本系列文章大致分為 介紹說明本次學習目的及學習預計完成時間 說明學習目的 預計完成時數 影片 程式碼及設定檔相關分析說明 pom.xml說明 .properties or yml設定檔說明 程式碼說明 其他 遭遇到的問題 參考連結 Code Example Github連結