SlideShare a Scribd company logo
Maven x Mongo x Spring
簡裕維
Apache Maven
• 函式庫管理
• 專案管理
• 套件管理
• pom.xml:maven 的設定檔
• 下載:
https://maven.apache.org/download.cgi
Apache Maven-函式庫管理
• Maven Repository:
– jar 線上儲存庫
• jar 電腦 local 端的集中放置處
– .m2 目錄
Apache Maven-專案管理
• jar:Java Archive
• war:Web Archive
• pom:Project Object Model
– 此專案內可包多個小專案,小專案可以是 jar、
war、pom
– 多層次管理
Apache Maven-套件管理
• 編譯器設定
– 設定 java rumtime、jdk的版本
– 預設記憶體大小
• Web container 設定
– 立即使用 tomcat 執行網頁
– mvn tomcat7:run
• 其他套件
– 與CI server 結合
– Deploy 到 Maven Repository
Apache Maven-入門建置
• http://gaduo-chien-
blog.logdown.com/posts/2014/04/13/
apache-maven-build-maven-project
Apache Maven-pom.xml
• groupId:專案組織名稱,edu.tcu.mi.xxx
• artifactId:該專案名稱
• version:該專案版本號
• packaging:專案打包型態,jar、war、pom
• parent:父專案
• properties:變數設定
• modules:子專案模組
• dependencies:相依函式庫
• build:建置用plugin設定
Apache Maven-專案架構
helloworld/
├── pom.xml
├── lib
├── target
└── src
├── main
│ └── java
│ │ └── edu
│ │ └── tcu
│ │ └── mi
│ │ └── App.java
│ └── resources
│
│
└── test
└── java
│ └── edu
│ └── tcu
│ └── mi
│ └── AppTest.java
└── resources
Apache Maven-常用指令
• 建置
– mvn install
• 清除 chache
– mvn clean
• 建置時,略過單元測試
– mvn install –DskipTests
• 連著使用
– mvn clean install –DskipTests
• 立即執行 tomcat
– mvn tomcat7:run
– 前提須搭配其他設定
個人常用函式庫
• guava:
– 通用函式
– https://github.com/google/guava/wiki
• gson:json 與物件互相轉換
• junit:單元測試
• log4j:收集 log
• lombok:@Getter @Setter
• joda-time:時間型態的計算
• jetm:執行時間的收集與報告
Mongodb
• 文件儲存資料庫
• json 格式:BSON (binary json)
• javascript
• schema less
• no join
– 但還是有關聯
• no transaction
名詞對映
Mongo 傳統關聯式資料庫
Database Database
Collection Table
Mongodb Server
• 下載&解壓縮
– https://fastdl.mongodb.org/win32/mongodb-win32-
x86_64-3.0.7.zip
• 設定環境變數 $MONGO_HOME/bin
• 建立資料儲存位置
– $USER/mongo/data/data01
• >:表示「>」後面的敘述為指令
• 無認證授權-啟動 mongo
> mongod.exe –dbpath $USER/mongo/data/data01
– port 預設為 27017
Mongodb Client
• mongo shell
– mongo.exe
– javascript
• GUI Client:MongoChef
– http://3t.io/mongochef/download/
Mongodb Client-mongo shell
• 連線至 server
> mongo –host 127.0.0.1 –port 27017
• 常用指令
– https://docs.mongodb.org/manual/refer
ence/mongo-shell/
Mongodb Client-mongo shell(2)
• 顯示所有資料庫
> show dbs
• 使用某一個資料庫或新增資料庫
> use <database>
> use pet
• 顯示該資料庫中的所有的 collections
> show collections
• 新增Collection
– https://docs.mongodb.org/manual/reference/method/db.createCollection/
> db.createCollection(“user”)
Mongodb Client-mongo shell(3)
• 已經指向某一個 database 時
• 新增資料
> db.$Collection.insert
> db.user.insert({“name”:”gaduo”});
> db.user.insert({
“name”:”test”,
“psw”:”000test”
});
• schema less
Mongodb Client-mongo shell(4)
• https://docs.mongodb.org/manual/tutorial/query-
documents/
• Query
> db.$Collection.find()
> db.$Collection.find().pretty()
> db.user.find({})
> db.user.find({“name”:”gaduo”})
• PK: _id
– ObjectId(“xxx”)
– String
• FK: <collection>.$id
Spring-data-mongo
• Maven Dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.9</version>
</dependency>
• spring-petclinic-example
– https://github.com/Gaduo/spring-petclinic-example
business-context.xml
<context:component-scan base-package="edu.tcu.mi.spring.web.service" />
<beans:beans profile="mongodb">
<mongo:repositories base-package="edu.tcu.mi.spring.web.repository.mongo"/>
<context:property-placeholder location="classpath:data-access.properties" />
<mongo:mongo id="mongo" host="${mongo.host.name}" port="${mongo.host.port}"/>
<beans:bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<beans:constructor-arg ref="mongo" />
<beans:constructor-arg value="${mongo.databaseName}" />
</beans:bean>
</beans:beans>
Spring-data-mongo
@Document
@JsonSerialize(include=JsonSerialize.Inclusion.NON_EMPTY)
public class Pet extends BaseEntity {
protected String name;
public Pet(){
id = new ObjectId().toString();
}
@Override
public String toString() {
return new Gson().toJson(this);
}
// getter … seter …
}
Spring Mongo/JPA Repository
Spring Mongo/JPA Repository

More Related Content

PDF
Node js实践
jay li
 
PDF
一个 Mongodb command 的前世今生
dennis zhuang
 
PPT
编辑器设计U editor
taobao.com
 
PPT
构建基于Lamp的中型网站架构
HonestQiao
 
PDF
Php及drupal性能优化系列(二)
Robbin Zhao
 
PDF
编辑器设计Kissy editor
taobao.com
 
PDF
Berserk js
taobao.com
 
PDF
Node.js從無到有 基本課程
Simon Su
 
Node js实践
jay li
 
一个 Mongodb command 的前世今生
dennis zhuang
 
编辑器设计U editor
taobao.com
 
构建基于Lamp的中型网站架构
HonestQiao
 
Php及drupal性能优化系列(二)
Robbin Zhao
 
编辑器设计Kissy editor
taobao.com
 
Berserk js
taobao.com
 
Node.js從無到有 基本課程
Simon Su
 

What's hot (20)

PPT
Node.js在淘宝的应用实践
taobao.com
 
PDF
Mesos intro
dennis zhuang
 
PDF
前端MVVM框架安全
Borg Han
 
PPTX
Make your web faster
德生 谭
 
PPTX
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
 
PDF
Hacking Nginx at Taobao
Joshua Zhu
 
PDF
CP 值很高的 Gulp
Yvonne Yu
 
PPTX
RxJS 6 新手入門
Will Huang
 
PDF
20111018 zhouchen share
zcbug
 
PDF
Npm 套件管理 & 常用開發工具介紹
wantingj
 
PPTX
如何针对业务做DB优化
Jinrong Ye
 
PDF
NodeJS基礎教學&簡介
GO LL
 
PPT
Fiddler for chrom extension
Welefen Lee
 
PPTX
快速入坑 Node.js - 0613 SITCON 雲林定期聚
Lorex L. Yang
 
PPTX
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
 
PDF
KISSY Mechanism
lifesinger
 
PPT
Php study.20130110
bngoogle
 
PPTX
静态项目管理工具 - opm
goto100
 
PPTX
对MySQL的一些改进想法和实现
Lixun Peng
 
KEY
Intro-to-SeaJS
lifesinger
 
Node.js在淘宝的应用实践
taobao.com
 
Mesos intro
dennis zhuang
 
前端MVVM框架安全
Borg Han
 
Make your web faster
德生 谭
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
 
Hacking Nginx at Taobao
Joshua Zhu
 
CP 值很高的 Gulp
Yvonne Yu
 
RxJS 6 新手入門
Will Huang
 
20111018 zhouchen share
zcbug
 
Npm 套件管理 & 常用開發工具介紹
wantingj
 
如何针对业务做DB优化
Jinrong Ye
 
NodeJS基礎教學&簡介
GO LL
 
Fiddler for chrom extension
Welefen Lee
 
快速入坑 Node.js - 0613 SITCON 雲林定期聚
Lorex L. Yang
 
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
 
KISSY Mechanism
lifesinger
 
Php study.20130110
bngoogle
 
静态项目管理工具 - opm
goto100
 
对MySQL的一些改进想法和实现
Lixun Peng
 
Intro-to-SeaJS
lifesinger
 
Ad

Viewers also liked (7)

PPS
In de voetsporen van Paulus
pgvvnl
 
PPTX
I love you!! from deana
Dawn Whaley
 
PPT
You as an entrepreneur
Roger Claessens
 
PPTX
Empower Franchise
Matthew Mack
 
PDF
Fanvertize: The Problem with Traditional Marketing
Matthew Mack
 
PDF
Division Six Bikes Branding Concept Plan
Matthew Mack
 
PPTX
Empower Group Franchise Concept Plan
Matthew Mack
 
In de voetsporen van Paulus
pgvvnl
 
I love you!! from deana
Dawn Whaley
 
You as an entrepreneur
Roger Claessens
 
Empower Franchise
Matthew Mack
 
Fanvertize: The Problem with Traditional Marketing
Matthew Mack
 
Division Six Bikes Branding Concept Plan
Matthew Mack
 
Empower Group Franchise Concept Plan
Matthew Mack
 
Ad

Similar to Maven & mongo & sring (20)

PPTX
NoSQL-MongoDB介紹
國昭 張
 
PDF
Mongodb学习手册
山城 碧海
 
PPT
Mongo db技术交流
liuts
 
PDF
MongoDB Basic
simplels
 
PPT
深入学习Mongo db
Lucien Li
 
PDF
Mongo db实战
Roger Xia
 
PPTX
Mongo db 特性
Hermes Chiang
 
PDF
Mongo db introduction
Dai Qifeng
 
PPT
Mongo db技术分享
晓锋 陈
 
PDF
110412 kningsoft-mongo db-intro-usage-in-mercury
Zoom Quiet
 
PDF
Mongo db &lamp;redis,nosql
taocheng1989
 
PPT
MongoDB Basics and Tutorial
Ho Kim
 
PDF
Nosql及其主要产品简介
振林 谭
 
PPT
Mongo快速入门
Lucien Li
 
PPT
Mongo简介
wuda0112
 
PDF
MongoDB for C# developer
dianming.song
 
PPTX
Mongo db 簡介
昱劭 劉
 
PDF
Couchdb Beijing Openparty
litaocheng
 
PDF
使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能
Mu Chun Wang
 
PPTX
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
 
NoSQL-MongoDB介紹
國昭 張
 
Mongodb学习手册
山城 碧海
 
Mongo db技术交流
liuts
 
MongoDB Basic
simplels
 
深入学习Mongo db
Lucien Li
 
Mongo db实战
Roger Xia
 
Mongo db 特性
Hermes Chiang
 
Mongo db introduction
Dai Qifeng
 
Mongo db技术分享
晓锋 陈
 
110412 kningsoft-mongo db-intro-usage-in-mercury
Zoom Quiet
 
Mongo db &lamp;redis,nosql
taocheng1989
 
MongoDB Basics and Tutorial
Ho Kim
 
Nosql及其主要产品简介
振林 谭
 
Mongo快速入门
Lucien Li
 
Mongo简介
wuda0112
 
MongoDB for C# developer
dianming.song
 
Mongo db 簡介
昱劭 劉
 
Couchdb Beijing Openparty
litaocheng
 
使用 PostgreSQL 及 MongoDB 從零開始建置社群必備的按讚追蹤功能
Mu Chun Wang
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
 

Maven & mongo & sring