Showing
22 changed files
with
993 additions
and
0 deletions
.DS_Store
0 → 100644
No preview for this file type
.gitignore
0 → 100644
1 | +/target/ | ||
2 | +!.mvn/wrapper/maven-wrapper.jar | ||
3 | + | ||
4 | +### STS ### | ||
5 | +.apt_generated | ||
6 | +.classpath | ||
7 | +.factorypath | ||
8 | +.project | ||
9 | +.settings | ||
10 | +.springBeans | ||
11 | +.sts4-cache | ||
12 | + | ||
13 | +### IntelliJ IDEA ### | ||
14 | +.idea | ||
15 | +*.iws | ||
16 | +*.iml | ||
17 | +*.ipr | ||
18 | + | ||
19 | +### NetBeans ### | ||
20 | +/nbproject/private/ | ||
21 | +/build/ | ||
22 | +/nbbuild/ | ||
23 | +/dist/ | ||
24 | +/nbdist/ | ||
25 | +/.nb-gradle/ |
.mvn/wrapper/maven-wrapper.jar
0 → 100644
No preview for this file type
.mvn/wrapper/maven-wrapper.properties
0 → 100644
1 | +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip |
mvnw
0 → 100755
1 | +#!/bin/sh | ||
2 | +# ---------------------------------------------------------------------------- | ||
3 | +# Licensed to the Apache Software Foundation (ASF) under one | ||
4 | +# or more contributor license agreements. See the NOTICE file | ||
5 | +# distributed with this work for additional information | ||
6 | +# regarding copyright ownership. The ASF licenses this file | ||
7 | +# to you under the Apache License, Version 2.0 (the | ||
8 | +# "License"); you may not use this file except in compliance | ||
9 | +# with the License. You may obtain a copy of the License at | ||
10 | +# | ||
11 | +# http://www.apache.org/licenses/LICENSE-2.0 | ||
12 | +# | ||
13 | +# Unless required by applicable law or agreed to in writing, | ||
14 | +# software distributed under the License is distributed on an | ||
15 | +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
16 | +# KIND, either express or implied. See the License for the | ||
17 | +# specific language governing permissions and limitations | ||
18 | +# under the License. | ||
19 | +# ---------------------------------------------------------------------------- | ||
20 | + | ||
21 | +# ---------------------------------------------------------------------------- | ||
22 | +# Maven2 Start Up Batch script | ||
23 | +# | ||
24 | +# Required ENV vars: | ||
25 | +# ------------------ | ||
26 | +# JAVA_HOME - location of a JDK home dir | ||
27 | +# | ||
28 | +# Optional ENV vars | ||
29 | +# ----------------- | ||
30 | +# M2_HOME - location of maven2's installed home dir | ||
31 | +# MAVEN_OPTS - parameters passed to the Java VM when running Maven | ||
32 | +# e.g. to debug Maven itself, use | ||
33 | +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 | ||
34 | +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files | ||
35 | +# ---------------------------------------------------------------------------- | ||
36 | + | ||
37 | +if [ -z "$MAVEN_SKIP_RC" ] ; then | ||
38 | + | ||
39 | + if [ -f /etc/mavenrc ] ; then | ||
40 | + . /etc/mavenrc | ||
41 | + fi | ||
42 | + | ||
43 | + if [ -f "$HOME/.mavenrc" ] ; then | ||
44 | + . "$HOME/.mavenrc" | ||
45 | + fi | ||
46 | + | ||
47 | +fi | ||
48 | + | ||
49 | +# OS specific support. $var _must_ be set to either true or false. | ||
50 | +cygwin=false; | ||
51 | +darwin=false; | ||
52 | +mingw=false | ||
53 | +case "`uname`" in | ||
54 | + CYGWIN*) cygwin=true ;; | ||
55 | + MINGW*) mingw=true;; | ||
56 | + Darwin*) darwin=true | ||
57 | + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home | ||
58 | + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html | ||
59 | + if [ -z "$JAVA_HOME" ]; then | ||
60 | + if [ -x "/usr/libexec/java_home" ]; then | ||
61 | + export JAVA_HOME="`/usr/libexec/java_home`" | ||
62 | + else | ||
63 | + export JAVA_HOME="/Library/Java/Home" | ||
64 | + fi | ||
65 | + fi | ||
66 | + ;; | ||
67 | +esac | ||
68 | + | ||
69 | +if [ -z "$JAVA_HOME" ] ; then | ||
70 | + if [ -r /etc/gentoo-release ] ; then | ||
71 | + JAVA_HOME=`java-config --jre-home` | ||
72 | + fi | ||
73 | +fi | ||
74 | + | ||
75 | +if [ -z "$M2_HOME" ] ; then | ||
76 | + ## resolve links - $0 may be a link to maven's home | ||
77 | + PRG="$0" | ||
78 | + | ||
79 | + # need this for relative symlinks | ||
80 | + while [ -h "$PRG" ] ; do | ||
81 | + ls=`ls -ld "$PRG"` | ||
82 | + link=`expr "$ls" : '.*-> \(.*\)$'` | ||
83 | + if expr "$link" : '/.*' > /dev/null; then | ||
84 | + PRG="$link" | ||
85 | + else | ||
86 | + PRG="`dirname "$PRG"`/$link" | ||
87 | + fi | ||
88 | + done | ||
89 | + | ||
90 | + saveddir=`pwd` | ||
91 | + | ||
92 | + M2_HOME=`dirname "$PRG"`/.. | ||
93 | + | ||
94 | + # make it fully qualified | ||
95 | + M2_HOME=`cd "$M2_HOME" && pwd` | ||
96 | + | ||
97 | + cd "$saveddir" | ||
98 | + # echo Using m2 at $M2_HOME | ||
99 | +fi | ||
100 | + | ||
101 | +# For Cygwin, ensure paths are in UNIX format before anything is touched | ||
102 | +if $cygwin ; then | ||
103 | + [ -n "$M2_HOME" ] && | ||
104 | + M2_HOME=`cygpath --unix "$M2_HOME"` | ||
105 | + [ -n "$JAVA_HOME" ] && | ||
106 | + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` | ||
107 | + [ -n "$CLASSPATH" ] && | ||
108 | + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` | ||
109 | +fi | ||
110 | + | ||
111 | +# For Migwn, ensure paths are in UNIX format before anything is touched | ||
112 | +if $mingw ; then | ||
113 | + [ -n "$M2_HOME" ] && | ||
114 | + M2_HOME="`(cd "$M2_HOME"; pwd)`" | ||
115 | + [ -n "$JAVA_HOME" ] && | ||
116 | + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" | ||
117 | + # TODO classpath? | ||
118 | +fi | ||
119 | + | ||
120 | +if [ -z "$JAVA_HOME" ]; then | ||
121 | + javaExecutable="`which javac`" | ||
122 | + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then | ||
123 | + # readlink(1) is not available as standard on Solaris 10. | ||
124 | + readLink=`which readlink` | ||
125 | + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then | ||
126 | + if $darwin ; then | ||
127 | + javaHome="`dirname \"$javaExecutable\"`" | ||
128 | + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" | ||
129 | + else | ||
130 | + javaExecutable="`readlink -f \"$javaExecutable\"`" | ||
131 | + fi | ||
132 | + javaHome="`dirname \"$javaExecutable\"`" | ||
133 | + javaHome=`expr "$javaHome" : '\(.*\)/bin'` | ||
134 | + JAVA_HOME="$javaHome" | ||
135 | + export JAVA_HOME | ||
136 | + fi | ||
137 | + fi | ||
138 | +fi | ||
139 | + | ||
140 | +if [ -z "$JAVACMD" ] ; then | ||
141 | + if [ -n "$JAVA_HOME" ] ; then | ||
142 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
143 | + # IBM's JDK on AIX uses strange locations for the executables | ||
144 | + JAVACMD="$JAVA_HOME/jre/sh/java" | ||
145 | + else | ||
146 | + JAVACMD="$JAVA_HOME/bin/java" | ||
147 | + fi | ||
148 | + else | ||
149 | + JAVACMD="`which java`" | ||
150 | + fi | ||
151 | +fi | ||
152 | + | ||
153 | +if [ ! -x "$JAVACMD" ] ; then | ||
154 | + echo "Error: JAVA_HOME is not defined correctly." >&2 | ||
155 | + echo " We cannot execute $JAVACMD" >&2 | ||
156 | + exit 1 | ||
157 | +fi | ||
158 | + | ||
159 | +if [ -z "$JAVA_HOME" ] ; then | ||
160 | + echo "Warning: JAVA_HOME environment variable is not set." | ||
161 | +fi | ||
162 | + | ||
163 | +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher | ||
164 | + | ||
165 | +# traverses directory structure from process work directory to filesystem root | ||
166 | +# first directory with .mvn subdirectory is considered project base directory | ||
167 | +find_maven_basedir() { | ||
168 | + | ||
169 | + if [ -z "$1" ] | ||
170 | + then | ||
171 | + echo "Path not specified to find_maven_basedir" | ||
172 | + return 1 | ||
173 | + fi | ||
174 | + | ||
175 | + basedir="$1" | ||
176 | + wdir="$1" | ||
177 | + while [ "$wdir" != '/' ] ; do | ||
178 | + if [ -d "$wdir"/.mvn ] ; then | ||
179 | + basedir=$wdir | ||
180 | + break | ||
181 | + fi | ||
182 | + # workaround for JBEAP-8937 (on Solaris 10/Sparc) | ||
183 | + if [ -d "${wdir}" ]; then | ||
184 | + wdir=`cd "$wdir/.."; pwd` | ||
185 | + fi | ||
186 | + # end of workaround | ||
187 | + done | ||
188 | + echo "${basedir}" | ||
189 | +} | ||
190 | + | ||
191 | +# concatenates all lines of a file | ||
192 | +concat_lines() { | ||
193 | + if [ -f "$1" ]; then | ||
194 | + echo "$(tr -s '\n' ' ' < "$1")" | ||
195 | + fi | ||
196 | +} | ||
197 | + | ||
198 | +BASE_DIR=`find_maven_basedir "$(pwd)"` | ||
199 | +if [ -z "$BASE_DIR" ]; then | ||
200 | + exit 1; | ||
201 | +fi | ||
202 | + | ||
203 | +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} | ||
204 | +echo $MAVEN_PROJECTBASEDIR | ||
205 | +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" | ||
206 | + | ||
207 | +# For Cygwin, switch paths to Windows format before running java | ||
208 | +if $cygwin; then | ||
209 | + [ -n "$M2_HOME" ] && | ||
210 | + M2_HOME=`cygpath --path --windows "$M2_HOME"` | ||
211 | + [ -n "$JAVA_HOME" ] && | ||
212 | + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` | ||
213 | + [ -n "$CLASSPATH" ] && | ||
214 | + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` | ||
215 | + [ -n "$MAVEN_PROJECTBASEDIR" ] && | ||
216 | + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` | ||
217 | +fi | ||
218 | + | ||
219 | +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain | ||
220 | + | ||
221 | +exec "$JAVACMD" \ | ||
222 | + $MAVEN_OPTS \ | ||
223 | + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ | ||
224 | + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ | ||
225 | + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" |
mvnw.cmd
0 → 100644
1 | +@REM ---------------------------------------------------------------------------- | ||
2 | +@REM Licensed to the Apache Software Foundation (ASF) under one | ||
3 | +@REM or more contributor license agreements. See the NOTICE file | ||
4 | +@REM distributed with this work for additional information | ||
5 | +@REM regarding copyright ownership. The ASF licenses this file | ||
6 | +@REM to you under the Apache License, Version 2.0 (the | ||
7 | +@REM "License"); you may not use this file except in compliance | ||
8 | +@REM with the License. You may obtain a copy of the License at | ||
9 | +@REM | ||
10 | +@REM http://www.apache.org/licenses/LICENSE-2.0 | ||
11 | +@REM | ||
12 | +@REM Unless required by applicable law or agreed to in writing, | ||
13 | +@REM software distributed under the License is distributed on an | ||
14 | +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
15 | +@REM KIND, either express or implied. See the License for the | ||
16 | +@REM specific language governing permissions and limitations | ||
17 | +@REM under the License. | ||
18 | +@REM ---------------------------------------------------------------------------- | ||
19 | + | ||
20 | +@REM ---------------------------------------------------------------------------- | ||
21 | +@REM Maven2 Start Up Batch script | ||
22 | +@REM | ||
23 | +@REM Required ENV vars: | ||
24 | +@REM JAVA_HOME - location of a JDK home dir | ||
25 | +@REM | ||
26 | +@REM Optional ENV vars | ||
27 | +@REM M2_HOME - location of maven2's installed home dir | ||
28 | +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands | ||
29 | +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending | ||
30 | +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven | ||
31 | +@REM e.g. to debug Maven itself, use | ||
32 | +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 | ||
33 | +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files | ||
34 | +@REM ---------------------------------------------------------------------------- | ||
35 | + | ||
36 | +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' | ||
37 | +@echo off | ||
38 | +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' | ||
39 | +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% | ||
40 | + | ||
41 | +@REM set %HOME% to equivalent of $HOME | ||
42 | +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") | ||
43 | + | ||
44 | +@REM Execute a user defined script before this one | ||
45 | +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre | ||
46 | +@REM check for pre script, once with legacy .bat ending and once with .cmd ending | ||
47 | +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" | ||
48 | +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" | ||
49 | +:skipRcPre | ||
50 | + | ||
51 | +@setlocal | ||
52 | + | ||
53 | +set ERROR_CODE=0 | ||
54 | + | ||
55 | +@REM To isolate internal variables from possible post scripts, we use another setlocal | ||
56 | +@setlocal | ||
57 | + | ||
58 | +@REM ==== START VALIDATION ==== | ||
59 | +if not "%JAVA_HOME%" == "" goto OkJHome | ||
60 | + | ||
61 | +echo. | ||
62 | +echo Error: JAVA_HOME not found in your environment. >&2 | ||
63 | +echo Please set the JAVA_HOME variable in your environment to match the >&2 | ||
64 | +echo location of your Java installation. >&2 | ||
65 | +echo. | ||
66 | +goto error | ||
67 | + | ||
68 | +:OkJHome | ||
69 | +if exist "%JAVA_HOME%\bin\java.exe" goto init | ||
70 | + | ||
71 | +echo. | ||
72 | +echo Error: JAVA_HOME is set to an invalid directory. >&2 | ||
73 | +echo JAVA_HOME = "%JAVA_HOME%" >&2 | ||
74 | +echo Please set the JAVA_HOME variable in your environment to match the >&2 | ||
75 | +echo location of your Java installation. >&2 | ||
76 | +echo. | ||
77 | +goto error | ||
78 | + | ||
79 | +@REM ==== END VALIDATION ==== | ||
80 | + | ||
81 | +:init | ||
82 | + | ||
83 | +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". | ||
84 | +@REM Fallback to current working directory if not found. | ||
85 | + | ||
86 | +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% | ||
87 | +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir | ||
88 | + | ||
89 | +set EXEC_DIR=%CD% | ||
90 | +set WDIR=%EXEC_DIR% | ||
91 | +:findBaseDir | ||
92 | +IF EXIST "%WDIR%"\.mvn goto baseDirFound | ||
93 | +cd .. | ||
94 | +IF "%WDIR%"=="%CD%" goto baseDirNotFound | ||
95 | +set WDIR=%CD% | ||
96 | +goto findBaseDir | ||
97 | + | ||
98 | +:baseDirFound | ||
99 | +set MAVEN_PROJECTBASEDIR=%WDIR% | ||
100 | +cd "%EXEC_DIR%" | ||
101 | +goto endDetectBaseDir | ||
102 | + | ||
103 | +:baseDirNotFound | ||
104 | +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% | ||
105 | +cd "%EXEC_DIR%" | ||
106 | + | ||
107 | +:endDetectBaseDir | ||
108 | + | ||
109 | +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig | ||
110 | + | ||
111 | +@setlocal EnableExtensions EnableDelayedExpansion | ||
112 | +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a | ||
113 | +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% | ||
114 | + | ||
115 | +:endReadAdditionalConfig | ||
116 | + | ||
117 | +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" | ||
118 | + | ||
119 | +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" | ||
120 | +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain | ||
121 | + | ||
122 | +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* | ||
123 | +if ERRORLEVEL 1 goto error | ||
124 | +goto end | ||
125 | + | ||
126 | +:error | ||
127 | +set ERROR_CODE=1 | ||
128 | + | ||
129 | +:end | ||
130 | +@endlocal & set ERROR_CODE=%ERROR_CODE% | ||
131 | + | ||
132 | +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost | ||
133 | +@REM check for post script, once with legacy .bat ending and once with .cmd ending | ||
134 | +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" | ||
135 | +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" | ||
136 | +:skipRcPost | ||
137 | + | ||
138 | +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' | ||
139 | +if "%MAVEN_BATCH_PAUSE%" == "on" pause | ||
140 | + | ||
141 | +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% | ||
142 | + | ||
143 | +exit /B %ERROR_CODE% |
pom.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
3 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
4 | + <modelVersion>4.0.0</modelVersion> | ||
5 | + | ||
6 | + <groupId>com.jpa</groupId> | ||
7 | + <artifactId>jpa-demo</artifactId> | ||
8 | + <version>0.0.1-SNAPSHOT</version> | ||
9 | + <packaging>jar</packaging> | ||
10 | + | ||
11 | + <name>jpa-demo</name> | ||
12 | + <description>Demo project for Spring Boot</description> | ||
13 | + | ||
14 | + <parent> | ||
15 | + <groupId>org.springframework.boot</groupId> | ||
16 | + <artifactId>spring-boot-starter-parent</artifactId> | ||
17 | + <version>2.0.3.RELEASE</version> | ||
18 | + <relativePath/> <!-- lookup parent from repository --> | ||
19 | + </parent> | ||
20 | + | ||
21 | + <properties> | ||
22 | + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
23 | + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | ||
24 | + <java.version>1.8</java.version> | ||
25 | + <fastjson.version>1.2.47</fastjson.version> | ||
26 | + <es.client.version>6.1.4</es.client.version> | ||
27 | + </properties> | ||
28 | + | ||
29 | + <dependencies> | ||
30 | + <dependency> | ||
31 | + <groupId>org.springframework.boot</groupId> | ||
32 | + <artifactId>spring-boot-starter</artifactId> | ||
33 | + </dependency> | ||
34 | + | ||
35 | + <dependency> | ||
36 | + <groupId>org.projectlombok</groupId> | ||
37 | + <artifactId>lombok</artifactId> | ||
38 | + </dependency> | ||
39 | + | ||
40 | + <dependency> | ||
41 | + <groupId>org.springframework.boot</groupId> | ||
42 | + <artifactId>spring-boot-starter-data-jpa</artifactId> | ||
43 | + </dependency> | ||
44 | + | ||
45 | + <dependency> | ||
46 | + <groupId>org.springframework.boot</groupId> | ||
47 | + <artifactId>spring-boot-starter-data-elasticsearch</artifactId> | ||
48 | + </dependency> | ||
49 | + | ||
50 | + <dependency> | ||
51 | + <groupId>com.alibaba</groupId> | ||
52 | + <artifactId>fastjson</artifactId> | ||
53 | + <version>${fastjson.version}</version> | ||
54 | + </dependency> | ||
55 | + | ||
56 | + <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport --> | ||
57 | + <dependency> | ||
58 | + <groupId>org.elasticsearch.client</groupId> | ||
59 | + <artifactId>transport</artifactId> | ||
60 | + <version>5.6.10</version> | ||
61 | + </dependency> | ||
62 | + | ||
63 | + | ||
64 | + <dependency> | ||
65 | + <groupId>com.h2database</groupId> | ||
66 | + <artifactId>h2</artifactId> | ||
67 | + </dependency> | ||
68 | + | ||
69 | + <dependency> | ||
70 | + <groupId>org.springframework.boot</groupId> | ||
71 | + <artifactId>spring-boot-starter-web</artifactId> | ||
72 | + </dependency> | ||
73 | + | ||
74 | + | ||
75 | + <dependency> | ||
76 | + <groupId>org.springframework.boot</groupId> | ||
77 | + <artifactId>spring-boot-starter-test</artifactId> | ||
78 | + <scope>test</scope> | ||
79 | + </dependency> | ||
80 | + </dependencies> | ||
81 | + | ||
82 | + <build> | ||
83 | + <plugins> | ||
84 | + <plugin> | ||
85 | + <groupId>org.springframework.boot</groupId> | ||
86 | + <artifactId>spring-boot-maven-plugin</artifactId> | ||
87 | + </plugin> | ||
88 | + </plugins> | ||
89 | + </build> | ||
90 | + | ||
91 | + | ||
92 | +</project> |
src/.DS_Store
0 → 100644
No preview for this file type
1 | +package com.jpa.jpademo; | ||
2 | + | ||
3 | +import org.springframework.boot.SpringApplication; | ||
4 | +import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
5 | + | ||
6 | +@SpringBootApplication | ||
7 | +public class JpaDemoApplication { | ||
8 | + | ||
9 | + public static void main(String[] args) { | ||
10 | + SpringApplication.run(JpaDemoApplication.class, args); | ||
11 | + } | ||
12 | +} |
1 | +package com.jpa.jpademo.domain; | ||
2 | + | ||
3 | +import lombok.Data; | ||
4 | + | ||
5 | +import javax.persistence.*; | ||
6 | +import java.io.Serializable; | ||
7 | +import java.util.List; | ||
8 | + | ||
9 | +/** | ||
10 | + * 指令模型 | ||
11 | + * | ||
12 | + */ | ||
13 | +@Data | ||
14 | +//@Entity | ||
15 | +//@Table(name = "DIRECTIVE_MODULE") | ||
16 | +public class DirectiveModel implements Serializable,Cloneable { | ||
17 | + | ||
18 | + @Id | ||
19 | + @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
20 | + long id; | ||
21 | + | ||
22 | + @Column(name = "TEMPLATE_ID") | ||
23 | + String templateId; | ||
24 | + | ||
25 | + /** | ||
26 | + * monitor新增 执行频率,原本指令是没有频率的,该频率依托于采集任务的执行频率 | ||
27 | + */ | ||
28 | + @Column(name = "INTERVAL") | ||
29 | + String interval; | ||
30 | + | ||
31 | + /** | ||
32 | + * 指令ID | ||
33 | + */ | ||
34 | + @Column(name = "DIRECTIVE_ID") | ||
35 | + String directiveId; // 指令ID | ||
36 | + /** | ||
37 | + * 指令内容 | ||
38 | + */ | ||
39 | + @Column(name = "DIRECTIVE_CONTENT") | ||
40 | + String directiveContent;// 指令内容 | ||
41 | + | ||
42 | + /** | ||
43 | + * monitor新增 指令下挂接指标 | ||
44 | + */ | ||
45 | + List<KpiModel> kpiModelList; | ||
46 | + | ||
47 | + @Override | ||
48 | + protected Object clone() throws CloneNotSupportedException { | ||
49 | + return super.clone(); | ||
50 | + } | ||
51 | + | ||
52 | +} |
1 | +package com.jpa.jpademo.domain; | ||
2 | + | ||
3 | +import lombok.Data; | ||
4 | + | ||
5 | +import javax.persistence.*; | ||
6 | +import java.util.List; | ||
7 | + | ||
8 | +/** | ||
9 | + * 该对象主要用于job调度时参数,任务只需要和模版进行绑定 | ||
10 | + * 每个模版可以绑定多个资源,这也适用与采集 | ||
11 | + */ | ||
12 | +@Data | ||
13 | +@Entity | ||
14 | +@Table(name = "JOB_RUNTIME_DETAIL_INFO") | ||
15 | +public class JobRuntimeDetailInfo { | ||
16 | + | ||
17 | + public static String JOB_RUNTIME_DETAIIL_KEY = "JOB_RUNTIME_DETAIIL_KEY"; | ||
18 | + | ||
19 | + // 任务ID workstation 上报 | ||
20 | + @Id | ||
21 | + @Column(name = "TASK_ID") | ||
22 | + String taskId; | ||
23 | + // 批次号 | ||
24 | + @Transient | ||
25 | + String batchNo; | ||
26 | + // 下次执行时间 | ||
27 | + @Transient | ||
28 | + String nextFireTime; | ||
29 | + // job 类型,由workstation提供,类型包含:增加 1、修改 2、删除 0 | ||
30 | + // 枚举值见Constants.MESSAGE_TYPE_CREATE/MESSAGE_TYPE_UPDATE/MESSAGE_TYPE_DELETE | ||
31 | + @Transient | ||
32 | + int type; | ||
33 | + // 采集器ID | ||
34 | + @Column(name = "COLLECTOR_ID") | ||
35 | + String collectorId; | ||
36 | + // 调度频率,如果job中该频率不为空,则以该频率作为采集频率 | ||
37 | + // 如果该频率为空,则以指令的调度频率作为采集频率 | ||
38 | + @Column(name = "INTERVAL") | ||
39 | + String interval; | ||
40 | + | ||
41 | + // 模版信息 | ||
42 | + @OneToMany(fetch=FetchType.EAGER) | ||
43 | + @JoinTable(name="JOB_TEMPLATE", | ||
44 | + joinColumns={@JoinColumn(name="j_id",referencedColumnName="task_id")}, | ||
45 | + inverseJoinColumns={@JoinColumn(name="t_id",referencedColumnName="id")}) | ||
46 | + List<TemplateInfo> templateInfos; | ||
47 | +} |
1 | +package com.jpa.jpademo.domain; | ||
2 | + | ||
3 | +import lombok.Data; | ||
4 | + | ||
5 | +import javax.persistence.*; | ||
6 | +import java.io.Serializable; | ||
7 | + | ||
8 | +@Data | ||
9 | +//@Entity | ||
10 | +//@Table(name = "KPI_MODULE") | ||
11 | +public class KpiModel implements Serializable,Cloneable { | ||
12 | + | ||
13 | + @Id | ||
14 | + @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
15 | + long id; | ||
16 | + | ||
17 | + @Column(name = "TASK_ID") | ||
18 | + String taskId; | ||
19 | + | ||
20 | + @Column(name = "RESOURCE_ID") | ||
21 | + String resourceId; | ||
22 | + | ||
23 | + @Column(name = "KPI_ID") | ||
24 | + String kpiId; | ||
25 | + @Column(name = "KPI_INTERVAL") | ||
26 | + String kpiInterval; | ||
27 | + @Column(name = "KPI_NAME") | ||
28 | + String kpiName; | ||
29 | + @Column(name = "KPI_VALUE") | ||
30 | + String kpiValue; | ||
31 | + | ||
32 | + @Override | ||
33 | + protected Object clone() throws CloneNotSupportedException { | ||
34 | + return super.clone(); | ||
35 | + } | ||
36 | + | ||
37 | + | ||
38 | +} |
1 | +package com.jpa.jpademo.domain; | ||
2 | + | ||
3 | +import lombok.Data; | ||
4 | + | ||
5 | +import javax.persistence.*; | ||
6 | +import java.io.Serializable; | ||
7 | + | ||
8 | +@Data | ||
9 | +@Entity | ||
10 | +@Table(name = "RESOURCE_MODULE") | ||
11 | +public class ResourceModel implements Serializable,Cloneable { | ||
12 | + | ||
13 | + @Id | ||
14 | + @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
15 | + long id; | ||
16 | + | ||
17 | + @Column(name = "RESOURCE_ID") | ||
18 | + private String resourceId; | ||
19 | + @Column(name = "VERSION") | ||
20 | + private String version;// 版本,包含snmp版本,ssh版本,jdbc版本(oracle/mysql) | ||
21 | + @Column(name = "PROTOCOL") | ||
22 | + private String protocol; | ||
23 | + @Column(name = "URL") | ||
24 | + private String url; | ||
25 | + @Column(name = "IP_ADDR") | ||
26 | + private String ipAddr; | ||
27 | + @Column(name = "PORT") | ||
28 | + private String port; | ||
29 | + @Column(name = "USER_NAME") | ||
30 | + private String userName; | ||
31 | + @Column(name = "PASSWORD") | ||
32 | + private String password; | ||
33 | + /** 比如jdbc所需要的驱动程序 | ||
34 | + * 比如snmp所需要的community | ||
35 | + * 比如https所需要的ssl参数等等 | ||
36 | + */ | ||
37 | + @Column(name = "EXT_PARAMS") | ||
38 | + private String extParams; | ||
39 | + | ||
40 | + @Override | ||
41 | + protected Object clone() throws CloneNotSupportedException { | ||
42 | + return super.clone(); | ||
43 | + } | ||
44 | + | ||
45 | +} |
1 | +package com.jpa.jpademo.domain; | ||
2 | + | ||
3 | +import lombok.Data; | ||
4 | +import org.springframework.util.StringUtils; | ||
5 | + | ||
6 | +import javax.persistence.*; | ||
7 | +import javax.validation.constraints.NotNull; | ||
8 | +import java.io.Serializable; | ||
9 | +import java.util.List; | ||
10 | + | ||
11 | +/** | ||
12 | + * 模版类: | ||
13 | + * 意在表述一个模版由多个指令组成,并且一个模版可以被多个资源进行绑定; | ||
14 | + * 在巡检中,同一个模版下可绑定多个资源,并且他们的采集频率应该是相同的; | ||
15 | + * 在监控中,同一个模版每次绑定一个资源,而监控中的采集模版是根据指令的采集频率来进行调度的,因此,任务调度时以指令中频率为准。 | ||
16 | + */ | ||
17 | +@Data | ||
18 | +@Entity | ||
19 | +@Table(name = "TEMPLATE_INFO") | ||
20 | +public class TemplateInfo implements Serializable { | ||
21 | + | ||
22 | + @Id | ||
23 | + @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
24 | + long id; | ||
25 | + | ||
26 | + @Column(name = "TEMPLATE_ID") | ||
27 | + String templateId; | ||
28 | + @Column(name = "TEMPLATE_NAME") | ||
29 | + String templateName; | ||
30 | + | ||
31 | + // 指令集合 | ||
32 | + /*@NotNull | ||
33 | + @OneToMany(fetch=FetchType.EAGER) | ||
34 | + @JoinTable(name="TEMPLATE_DIRECTIVE", | ||
35 | + joinColumns={@JoinColumn(name="template_id",referencedColumnName="template_id")}, | ||
36 | + inverseJoinColumns={@JoinColumn(name="directive_id",referencedColumnName="directive_id")}) | ||
37 | + List<DirectiveModel> directiveModelList;*/ | ||
38 | + | ||
39 | + // 资源集合 | ||
40 | + @NotNull | ||
41 | + @OneToMany(fetch=FetchType.EAGER) | ||
42 | + @JoinTable(name="TEMPLATE_RESOURCE", | ||
43 | + joinColumns={@JoinColumn(name="template_id",referencedColumnName="template_id")}, | ||
44 | + inverseJoinColumns={@JoinColumn(name="resource_id",referencedColumnName="id")}) | ||
45 | + List<ResourceModel> resourceModels; | ||
46 | + | ||
47 | + public String getTemplateId(){ | ||
48 | + if(StringUtils.isEmpty(templateId)) return "default-template"; | ||
49 | + return templateId; | ||
50 | + } | ||
51 | +} |
1 | +package com.jpa.jpademo.es.docs; | ||
2 | + | ||
3 | +import com.fasterxml.jackson.annotation.JsonProperty; | ||
4 | +import lombok.Data; | ||
5 | +import org.springframework.data.elasticsearch.annotations.Document; | ||
6 | +import org.springframework.data.elasticsearch.annotations.Field; | ||
7 | +import org.springframework.data.elasticsearch.annotations.FieldType; | ||
8 | + | ||
9 | +import javax.persistence.Id; | ||
10 | + | ||
11 | +@Data | ||
12 | +@Document(indexName = "jpa",type = "jpa-test") | ||
13 | +public class JpaTest { | ||
14 | + | ||
15 | + @Id | ||
16 | + Long id; | ||
17 | + | ||
18 | + @Field(type = FieldType.Text,index = false) | ||
19 | + String name; | ||
20 | + @Field(type = FieldType.Text,index = true) | ||
21 | + String content; | ||
22 | + @JsonProperty("json_content") | ||
23 | + String jsonContent; | ||
24 | +} |
src/main/resources/application.yml
0 → 100644
1 | +server: | ||
2 | + port: 8081 | ||
3 | +spring: | ||
4 | + application: | ||
5 | + name: 1818181217 | ||
6 | + jpa: | ||
7 | + generate-ddl: false | ||
8 | + show-sql: true | ||
9 | + hibernate: | ||
10 | + ddl-auto: update | ||
11 | + datasource: | ||
12 | + url: jdbc:h2:file:~/.h2/${spring.application.name} | ||
13 | + driver-class-name: org.h2.Driver | ||
14 | + username: sa | ||
15 | + password: sa | ||
16 | + schema: classpath:/sql/schema.sql | ||
17 | + platform: h2 | ||
18 | + data: | ||
19 | + elasticsearch: | ||
20 | + repositories: | ||
21 | + enabled: true | ||
22 | + cluster-name: my-application | ||
23 | + cluster-nodes: 127.0.0.1:9300 | ||
24 | + h2: | ||
25 | + console: | ||
26 | + path: /h2-console | ||
27 | + enabled: true |
src/main/resources/sql/schema.sql
0 → 100644
1 | + | ||
2 | +drop table JOB_RUNTIME_DETAIL_INFO ; | ||
3 | +drop table RESOURCE_MODULE ; | ||
4 | +drop table TEMPLATE_INFO ; | ||
5 | +drop table JOB_TEMPLATE ; | ||
6 | +drop table TEMPLATE_RESOURCE; | ||
7 | + | ||
8 | + | ||
9 | +create table IF not exists JOB_RUNTIME_DETAIL_INFO( | ||
10 | + task_id VARCHAR(100), | ||
11 | + collector_id VARCHAR(100), | ||
12 | + interval varchar(100), | ||
13 | + PRIMARY KEY (task_id) | ||
14 | +); | ||
15 | + | ||
16 | +create table IF not exists TEMPLATE_INFO( | ||
17 | + id bigint generated BY DEFAULT AS IDENTITY, | ||
18 | + template_id varchar(100), | ||
19 | + template_name varchar(100), | ||
20 | + PRIMARY KEY (id) | ||
21 | +); | ||
22 | + | ||
23 | +CREATE TABLE IF NOT EXISTS RESOURCE_MODULE( | ||
24 | + id bigint generated BY DEFAULT AS IDENTITY, | ||
25 | + resource_id VARCHAR(100), | ||
26 | + version VARCHAR(20), | ||
27 | + protocol VARCHAR(20), | ||
28 | + url VARCHAR(200), | ||
29 | + ip_addr VARCHAR(20), | ||
30 | + port VARCHAR(10), | ||
31 | + user_name VARCHAR(50), | ||
32 | + password VARCHAR(100), | ||
33 | + ext_params VARCHAR(2000), | ||
34 | + PRIMARY KEY (id) | ||
35 | +); |
1 | +package com.jpa.jpademo; | ||
2 | + | ||
3 | +import com.alibaba.fastjson.JSONObject; | ||
4 | +import com.jpa.jpademo.domain.JobRuntimeDetailInfo; | ||
5 | +import com.jpa.jpademo.domain.ResourceModel; | ||
6 | +import com.jpa.jpademo.domain.TemplateInfo; | ||
7 | +import com.jpa.jpademo.es.docs.JpaTest; | ||
8 | +import com.jpa.jpademo.es.repository.JPAEsRepository; | ||
9 | +import com.jpa.jpademo.repository.JobRepository; | ||
10 | +import com.jpa.jpademo.repository.ResourceRepository; | ||
11 | +import com.jpa.jpademo.repository.TemplateRepository; | ||
12 | +import org.junit.Test; | ||
13 | +import org.junit.runner.RunWith; | ||
14 | +import org.springframework.beans.factory.annotation.Autowired; | ||
15 | +import org.springframework.boot.test.context.SpringBootTest; | ||
16 | +import org.springframework.data.domain.Page; | ||
17 | +import org.springframework.data.domain.PageImpl; | ||
18 | +import org.springframework.data.domain.PageRequest; | ||
19 | +import org.springframework.data.domain.Pageable; | ||
20 | +import org.springframework.test.context.junit4.SpringRunner; | ||
21 | + | ||
22 | +import java.util.ArrayList; | ||
23 | +import java.util.List; | ||
24 | +import java.util.UUID; | ||
25 | + | ||
26 | +@RunWith(SpringRunner.class) | ||
27 | +@SpringBootTest | ||
28 | +public class JpaDemoApplicationTests { | ||
29 | + | ||
30 | + @Autowired | ||
31 | + JobRepository jobRepository; | ||
32 | + @Autowired | ||
33 | + TemplateRepository templateRepository; | ||
34 | + @Autowired | ||
35 | + ResourceRepository resourceRepository; | ||
36 | + | ||
37 | + @Test | ||
38 | + public void contextLoads() { | ||
39 | + | ||
40 | + | ||
41 | + JobRuntimeDetailInfo jobRuntimeDetailInfo = new JobRuntimeDetailInfo(); | ||
42 | + jobRuntimeDetailInfo.setTaskId(UUID.randomUUID().toString()); | ||
43 | + jobRuntimeDetailInfo.setInterval("interval" + System.currentTimeMillis()); | ||
44 | + jobRuntimeDetailInfo.setNextFireTime("next-fire-time"); | ||
45 | + | ||
46 | + List<TemplateInfo> templateInfos = new ArrayList<>(); | ||
47 | + TemplateInfo t1 = new TemplateInfo(); | ||
48 | + t1.setTemplateId("1"); | ||
49 | + t1.setTemplateName("name-1"); | ||
50 | + templateInfos.add(t1); | ||
51 | + | ||
52 | + ResourceModel r1 = new ResourceModel(); | ||
53 | + r1.setResourceId("r-1"); | ||
54 | + r1.setIpAddr("127.0.0.1"); | ||
55 | + | ||
56 | + ResourceModel r2 = new ResourceModel(); | ||
57 | + r2.setResourceId("r-2"); | ||
58 | + r2.setIpAddr("127.0.0.2"); | ||
59 | + | ||
60 | + List<ResourceModel> resourceModels = new ArrayList<>(); | ||
61 | + resourceModels.add(r1); | ||
62 | + resourceModels.add(r2); | ||
63 | + | ||
64 | + t1.setResourceModels(resourceModels); | ||
65 | + | ||
66 | + TemplateInfo t2 = new TemplateInfo(); | ||
67 | + t2.setTemplateId("2"); | ||
68 | + t2.setTemplateName("name-2"); | ||
69 | + templateInfos.add(t2); | ||
70 | + | ||
71 | + | ||
72 | + ResourceModel r3 = new ResourceModel(); | ||
73 | + r3.setResourceId("r-1"); | ||
74 | + r3.setIpAddr("127.0.0.1"); | ||
75 | + | ||
76 | + ResourceModel r4 = new ResourceModel(); | ||
77 | + r4.setResourceId("r-2"); | ||
78 | + r4.setIpAddr("127.0.0.2"); | ||
79 | + | ||
80 | + List<ResourceModel> resourceModels2 = new ArrayList<>(); | ||
81 | + resourceModels2.add(r3); | ||
82 | + resourceModels2.add(r4); | ||
83 | + | ||
84 | + t2.setResourceModels(resourceModels2); | ||
85 | + | ||
86 | + /*TemplateInfo t3 = new TemplateInfo(); | ||
87 | + t3.setTemplateId("3"); | ||
88 | + t3.setTemplateName("name-3"); | ||
89 | + templateInfos.add(t3); | ||
90 | + | ||
91 | + t3.setResourceModels(resourceModels);*/ | ||
92 | + | ||
93 | + jobRuntimeDetailInfo.setTemplateInfos(templateInfos); | ||
94 | + | ||
95 | + resourceRepository.save(r1); | ||
96 | + resourceRepository.save(r2); | ||
97 | + resourceRepository.save(r3); | ||
98 | + resourceRepository.save(r4); | ||
99 | + | ||
100 | + templateRepository.save(t1); | ||
101 | + templateRepository.save(t2); | ||
102 | + //templateRepository.save(t3); | ||
103 | + | ||
104 | + jobRepository.save(jobRuntimeDetailInfo); | ||
105 | + | ||
106 | + Iterable<JobRuntimeDetailInfo> jobs = jobRepository.findAll(); | ||
107 | + | ||
108 | + jobs.forEach( | ||
109 | + j -> j.getTemplateInfos().forEach( | ||
110 | + t -> t.getResourceModels().forEach( | ||
111 | + r->System.out.println(j.getTaskId()+"->"+t.getId()+"->"+r.getResourceId()) | ||
112 | + ) | ||
113 | + ) | ||
114 | + ); | ||
115 | + | ||
116 | + | ||
117 | + | ||
118 | + } | ||
119 | + | ||
120 | + @Autowired | ||
121 | + JPAEsRepository jpaEsRepository; | ||
122 | + @Test | ||
123 | + public void jpaESTest(){ | ||
124 | + JpaTest jpaTest = new JpaTest(); | ||
125 | + jpaTest.setId(System.currentTimeMillis()); // ID相同的数据只会存放一条 | ||
126 | + jpaTest.setName("zhangdajun"+System.currentTimeMillis()); | ||
127 | + jpaTest.setContent("print zhangdj "+System.currentTimeMillis()); | ||
128 | + jpaTest.setJsonContent("{\"ext\":\"my ext information\"}"); | ||
129 | + | ||
130 | + jpaEsRepository.save(jpaTest); | ||
131 | + | ||
132 | + Iterable<JpaTest> rstIts = jpaEsRepository.findAll(); | ||
133 | + | ||
134 | + | ||
135 | + System.out.println("\n\n=++++++++++++++++++++++++=华丽分割线=+++++++++++++++++++++++++++++=\n\n"); | ||
136 | + Page<JpaTest> data = jpaEsRepository.findAll(new PageRequest(1,20)); | ||
137 | + System.out.println(JSONObject.toJSONString(data)); | ||
138 | + | ||
139 | + System.out.println("\n\n=++++++++++++++++++++++++=华丽分割线=+++++++++++++++++++++++++++++=\n\n"); | ||
140 | + | ||
141 | + rstIts.forEach(e->System.out.println(JSONObject.toJSONString(e))); | ||
142 | + | ||
143 | + | ||
144 | + } | ||
145 | + | ||
146 | +} |
-
Please register or login to post a comment