- 
                Notifications
    You must be signed in to change notification settings 
- Fork 151
[4기 유명한] Springboot-jpa weekly 미션 1차 PR입니다. #306
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
          
     Open
      
      
            yumyeonghan
  wants to merge
  57
  commits into
  prgrms-be-devcourse:yumyeonghan
  
    
      
        
          
  
    
      Choose a base branch
      
     
    
      
        
      
      
        
          
          
        
        
          
            
              
              
              
  
           
        
        
          
            
              
              
           
        
       
     
  
        
          
            
          
            
          
        
       
    
      
from
yumyeonghan:main
  
      
      
   
  
    
  
  
  
 
  
      
    base: yumyeonghan
Could not load branches
            
              
  
    Branch not found: {{ refName }}
  
            
                
      Loading
              
            Could not load tags
            
            
              Nothing to show
            
              
  
            
                
      Loading
              
            Are you sure you want to change the base?
            Some commits from the old base branch may be removed from the timeline,
            and old review comments may become outdated.
          
          
  
     Open
                    Changes from 37 commits
      Commits
    
    
            Show all changes
          
          
            57 commits
          
        
        Select commit
          Hold shift + click to select a range
      
      3a80b1c
              
                feat: init
              
              
                 481a4b6
              
                chore: yml 설정
              
              
                 449d6fb
              
                chore: validation 의존성
              
              
                 8f7277e
              
                feat: Customer 엔티티 작성
              
              
                 1f38c32
              
                feat: CustomerRepository 구현
              
              
                 c067ec4
              
                feat: Customer 엔티티 수정
              
              
                 f4cf28c
              
                feat: CustomerService create() 구현
              
              
                 cc7f4cd
              
                feat: CustomerController create() 구현
              
              
                 bbe9897
              
                feat: Customer 엔티티 수정
              
              
                 b221610
              
                feat: CustomerService 구현
              
              
                 1d28c73
              
                feat: CustomerController 구현
              
              
                 06f54f8
              
                chore: 테스트 환경에서 롬복 적용
              
              
                 2b6ce87
              
                chore: 테스트 환경 yml 설정
              
              
                 b84643d
              
                feat: 엔티티 생성
              
              
                 88ca736
              
                feat: Item 엔티티 재설계
              
              
                 8cddf9d
              
                feat: 페이징 구현
              
              
                 b08bb29
              
                feat: 예약어로 지정된 엔티티 이름 수정
              
              
                 5f17d96
              
                feat: OrderItem 생성자 추가
              
              
                 510c77c
              
                feat: Item 엔티티 재설계
              
              
                 6d9d450
              
                refactor: dto 경로 수정
              
              
                 96d1e9d
              
                refactor: dto 경로 수정
              
              
                 63ef641
              
                feat: Item 엔티티 @Getter 추가
              
              
                 b6f5ecf
              
                test: ItemTest 테스트 코드 작성
              
              
                 d4cbc53
              
                test: EntityLifecycle 실습
              
              
                 8cd5113
              
                test: OrderTest 테스트 코드 작성
              
              
                 a4b95db
              
                test: OrderTest @Slf4j 제거
              
              
                 a4829a2
              
                test: OrderItemTest 테스트 코드 작성
              
              
                 ad00134
              
                feat: changeName() 구현
              
              
                 2a24045
              
                refactor: use single class import
              
              
                 e68ff06
              
                feat: id 생성 전략 지정
              
              
                 e018ed4
              
                feat: 요청 dto validation 적용
              
              
                 230eb61
              
                refactor: @RequestMapping("/api/customers") 수정
              
              
                 f558c31
              
                feat: 비즈니스 로직 접근제어자 수정
              
              
                 8630c99
              
                test: ItemRepositoryTest 테스트 클래스명 수정
              
              
                 6c94d9f
              
                feat: BaseEntity 추상 클래스로 설정
              
              
                 01ded66
              
                feat: validateMemo(), Blank 검증 추가
              
              
                 09c3431
              
                chore: create 대신 create-drop 사용
              
              
                 a8ac87c
              
                feat: Item 엔티티 재설계
              
              
                 79cecd0
              
                feat: ItemRepository 설정
              
              
                 baae279
              
                feat: Food, Car 재설계
              
              
                 bc0b427
              
                chore: 롬복 버전 제거
              
              
                 1ef47e3
              
                feat: 필요없는 상수 제거
              
              
                 12a9339
              
                chore: ddl-auto: create-drop 사용
              
              
                 74dfcda
              
                feat: ItemRepository findAllByItemType() 구현
              
              
                 1f6ddf3
              
                test: ItemRepositoryTest 테스트 수정
              
              
                 dcfc40a
              
                feat: 길이 검증 로직 추가
              
              
                 aa6c6bd
              
                refactor: 롬복 사용
              
              
                 63660e1
              
                feat: 배달 주문 상태 추가
              
              
                 6f859c1
              
                feat: 불필요한 코드 제거
              
              
                 02bd839
              
                refactor: 패키지 경로 수정
              
              
                 c364851
              
                feat: OrderStatus 상태 추가
              
              
                 c953a41
              
                feat: Order 엔티티 재설계
              
              
                 81f2fbd
              
                test: OrderTest 수정
              
              
                 2ba681b
              
                feat: 예외 메세지에 id 추가
              
              
                 d2b1a36
              
                feat: 도메인 길이 검증 로직 추가
              
              
                 3106c11
              
                refactor: 도메인 메서드 명 수정
              
              
                 06b48f9
              
                feat: 주문 상태가 배달, 배달완료 일때 멱등성 보장
              
              
                 File filter
Filter by extension
Conversations
          Failed to load comments.   
        
        
          
      Loading
        
  Jump to
        
          Jump to file
        
      
      
          Failed to load files.   
        
        
          
      Loading
        
  Diff view
Diff view
There are no files selected for viewing
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,99 @@ | ||
| # Default ignored files | ||
| /shelf/ | ||
| /.idea/workspace.xml | ||
| # Editor-based HTTP Client requests | ||
| /httpRequests/ | ||
| # Datasource local storage ignored files | ||
| /dataSources/ | ||
| /dataSources.local.xml | ||
|  | ||
| # Created by https://www.toptal.com/developers/gitignore/api/gradle,java,macos | ||
| # Edit at https://www.toptal.com/developers/gitignore?templates=gradle,java,macos | ||
|  | ||
| ### Java ### | ||
| # Compiled class file | ||
| *.class | ||
|  | ||
| # Log file | ||
| *.log | ||
|  | ||
| # BlueJ files | ||
| *.ctxt | ||
|  | ||
| # Mobile Tools for Java (J2ME) | ||
| .mtj.tmp/ | ||
|  | ||
| # Package Files # | ||
| *.jar | ||
| *.war | ||
| *.nar | ||
| *.ear | ||
| *.zip | ||
| *.tar.gz | ||
| *.rar | ||
| .idea | ||
| # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml | ||
| hs_err_pid* | ||
| replay_pid* | ||
|  | ||
| ### macOS ### | ||
| # General | ||
| .DS_Store | ||
| .AppleDouble | ||
| .LSOverride | ||
|  | ||
| # Icon must end with two \r | ||
| Icon | ||
|  | ||
|  | ||
| # Thumbnails | ||
| ._* | ||
|  | ||
| # Files that might appear in the root of a volume | ||
| .DocumentRevisions-V100 | ||
| .fseventsd | ||
| .Spotlight-V100 | ||
| .TemporaryItems | ||
| .Trashes | ||
| .VolumeIcon.icns | ||
| .com.apple.timemachine.donotpresent | ||
|  | ||
| # Directories potentially created on remote AFP share | ||
| .AppleDB | ||
| .AppleDesktop | ||
| Network Trash Folder | ||
| Temporary Items | ||
| .apdisk | ||
|  | ||
| ### macOS Patch ### | ||
| # iCloud generated files | ||
| *.icloud | ||
|  | ||
| ### Gradle ### | ||
| .gradle | ||
| **/build/ | ||
| !src/**/build/ | ||
|  | ||
| # Ignore Gradle GUI config | ||
| gradle-app.setting | ||
|  | ||
| # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) | ||
| !gradle-wrapper.jar | ||
|  | ||
| # Avoid ignore Gradle wrappper properties | ||
| !gradle-wrapper.properties | ||
|  | ||
| # Cache of project | ||
| .gradletasknamecache | ||
|  | ||
| # Eclipse Gradle plugin generated files | ||
| # Eclipse Core | ||
| .project | ||
| # JDT-specific (Eclipse Java Development Tools) | ||
| .classpath | ||
|  | ||
| ### Gradle Patch ### | ||
| # Java heap dump | ||
| *.hprof | ||
|  | ||
| # End of https://www.toptal.com/developers/gitignore/api/gradle,java,macos | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| plugins { | ||
| id 'java' | ||
| id 'org.springframework.boot' version '3.1.2' | ||
| id 'io.spring.dependency-management' version '1.1.2' | ||
| } | ||
|  | ||
| group = 'com.programmers' | ||
| version = '0.0.1-SNAPSHOT' | ||
|  | ||
| java { | ||
| sourceCompatibility = '17' | ||
| } | ||
|  | ||
| configurations { | ||
| compileOnly { | ||
| extendsFrom annotationProcessor | ||
| } | ||
| } | ||
|  | ||
| repositories { | ||
| mavenCentral() | ||
| } | ||
|  | ||
| dependencies { | ||
| implementation 'org.springframework.boot:spring-boot-starter-data-jpa' | ||
| implementation 'org.springframework.boot:spring-boot-starter-web' | ||
| implementation 'org.springframework.boot:spring-boot-starter-validation' | ||
| testImplementation 'org.projectlombok:lombok:1.18.22' | ||
| compileOnly 'org.projectlombok:lombok' | ||
| runtimeOnly 'com.h2database:h2' | ||
| annotationProcessor 'org.projectlombok:lombok' | ||
| testImplementation 'org.springframework.boot:spring-boot-starter-test' | ||
| } | ||
|  | ||
| tasks.named('test') { | ||
| useJUnitPlatform() | ||
| } | ||
            Binary file not shown.
          
    
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| distributionBase=GRADLE_USER_HOME | ||
| distributionPath=wrapper/dists | ||
| distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip | ||
| zipStoreBase=GRADLE_USER_HOME | ||
| zipStorePath=wrapper/dists | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
              
              | Original file line number | Diff line number | Diff line change | 
|---|---|---|
| @@ -0,0 +1,240 @@ | ||
| #!/bin/sh | ||
|  | ||
| # | ||
| # Copyright © 2015-2021 the original authors. | ||
| # | ||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||
| # you may not use this file except in compliance with the License. | ||
| # You may obtain a copy of the License at | ||
| # | ||
| # https://www.apache.org/licenses/LICENSE-2.0 | ||
| # | ||
| # Unless required by applicable law or agreed to in writing, software | ||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| # See the License for the specific language governing permissions and | ||
| # limitations under the License. | ||
| # | ||
|  | ||
| ############################################################################## | ||
| # | ||
| # Gradle start up script for POSIX generated by Gradle. | ||
| # | ||
| # Important for running: | ||
| # | ||
| # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is | ||
| # noncompliant, but you have some other compliant shell such as ksh or | ||
| # bash, then to run this script, type that shell name before the whole | ||
| # command line, like: | ||
| # | ||
| # ksh Gradle | ||
| # | ||
| # Busybox and similar reduced shells will NOT work, because this script | ||
| # requires all of these POSIX shell features: | ||
| # * functions; | ||
| # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», | ||
| # «${var#prefix}», «${var%suffix}», and «$( cmd )»; | ||
| # * compound commands having a testable exit status, especially «case»; | ||
| # * various built-in commands including «command», «set», and «ulimit». | ||
| # | ||
| # Important for patching: | ||
| # | ||
| # (2) This script targets any POSIX shell, so it avoids extensions provided | ||
| # by Bash, Ksh, etc; in particular arrays are avoided. | ||
| # | ||
| # The "traditional" practice of packing multiple parameters into a | ||
| # space-separated string is a well documented source of bugs and security | ||
| # problems, so this is (mostly) avoided, by progressively accumulating | ||
| # options in "$@", and eventually passing that to Java. | ||
| # | ||
| # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, | ||
| # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; | ||
| # see the in-line comments for details. | ||
| # | ||
| # There are tweaks for specific operating systems such as AIX, CygWin, | ||
| # Darwin, MinGW, and NonStop. | ||
| # | ||
| # (3) This script is generated from the Groovy template | ||
| # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||
| # within the Gradle project. | ||
| # | ||
| # You can find Gradle at https://github.com/gradle/gradle/. | ||
| # | ||
| ############################################################################## | ||
|  | ||
| # Attempt to set APP_HOME | ||
|  | ||
| # Resolve links: $0 may be a link | ||
| app_path=$0 | ||
|  | ||
| # Need this for daisy-chained symlinks. | ||
| while | ||
| APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path | ||
| [ -h "$app_path" ] | ||
| do | ||
| ls=$( ls -ld "$app_path" ) | ||
| link=${ls#*' -> '} | ||
| case $link in #( | ||
| /*) app_path=$link ;; #( | ||
| *) app_path=$APP_HOME$link ;; | ||
| esac | ||
| done | ||
|  | ||
| APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | ||
|  | ||
| APP_NAME="Gradle" | ||
| APP_BASE_NAME=${0##*/} | ||
|  | ||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||
|  | ||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||
| MAX_FD=maximum | ||
|  | ||
| warn () { | ||
| echo "$*" | ||
| } >&2 | ||
|  | ||
| die () { | ||
| echo | ||
| echo "$*" | ||
| echo | ||
| exit 1 | ||
| } >&2 | ||
|  | ||
| # OS specific support (must be 'true' or 'false'). | ||
| cygwin=false | ||
| msys=false | ||
| darwin=false | ||
| nonstop=false | ||
| case "$( uname )" in #( | ||
| CYGWIN* ) cygwin=true ;; #( | ||
| Darwin* ) darwin=true ;; #( | ||
| MSYS* | MINGW* ) msys=true ;; #( | ||
| NONSTOP* ) nonstop=true ;; | ||
| esac | ||
|  | ||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
|  | ||
|  | ||
| # Determine the Java command to use to start the JVM. | ||
| if [ -n "$JAVA_HOME" ] ; then | ||
| if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
| # IBM's JDK on AIX uses strange locations for the executables | ||
| JAVACMD=$JAVA_HOME/jre/sh/java | ||
| else | ||
| JAVACMD=$JAVA_HOME/bin/java | ||
| fi | ||
| if [ ! -x "$JAVACMD" ] ; then | ||
| die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
| Please set the JAVA_HOME variable in your environment to match the | ||
| location of your Java installation." | ||
| fi | ||
| else | ||
| JAVACMD=java | ||
| which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
| Please set the JAVA_HOME variable in your environment to match the | ||
| location of your Java installation." | ||
| fi | ||
|  | ||
| # Increase the maximum file descriptors if we can. | ||
| if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | ||
| case $MAX_FD in #( | ||
| max*) | ||
| MAX_FD=$( ulimit -H -n ) || | ||
| warn "Could not query maximum file descriptor limit" | ||
| esac | ||
| case $MAX_FD in #( | ||
| '' | soft) :;; #( | ||
| *) | ||
| ulimit -n "$MAX_FD" || | ||
| warn "Could not set maximum file descriptor limit to $MAX_FD" | ||
| esac | ||
| fi | ||
|  | ||
| # Collect all arguments for the java command, stacking in reverse order: | ||
| # * args from the command line | ||
| # * the main class name | ||
| # * -classpath | ||
| # * -D...appname settings | ||
| # * --module-path (only if needed) | ||
| # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. | ||
|  | ||
| # For Cygwin or MSYS, switch paths to Windows format before running java | ||
| if "$cygwin" || "$msys" ; then | ||
| APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | ||
| CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | ||
|  | ||
| JAVACMD=$( cygpath --unix "$JAVACMD" ) | ||
|  | ||
| # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
| for arg do | ||
| if | ||
| case $arg in #( | ||
| -*) false ;; # don't mess with options #( | ||
| /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath | ||
| [ -e "$t" ] ;; #( | ||
| *) false ;; | ||
| esac | ||
| then | ||
| arg=$( cygpath --path --ignore --mixed "$arg" ) | ||
| fi | ||
| # Roll the args list around exactly as many times as the number of | ||
| # args, so each arg winds up back in the position where it started, but | ||
| # possibly modified. | ||
| # | ||
| # NB: a `for` loop captures its iteration list before it begins, so | ||
| # changing the positional parameters here affects neither the number of | ||
| # iterations, nor the values presented in `arg`. | ||
| shift # remove old arg | ||
| set -- "$@" "$arg" # push replacement arg | ||
| done | ||
| fi | ||
|  | ||
| # Collect all arguments for the java command; | ||
| # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | ||
| # shell script including quotes and variable substitutions, so put them in | ||
| # double quotes to make sure that they get re-expanded; and | ||
| # * put everything else in single quotes, so that it's not re-expanded. | ||
|  | ||
| set -- \ | ||
| "-Dorg.gradle.appname=$APP_BASE_NAME" \ | ||
| -classpath "$CLASSPATH" \ | ||
| org.gradle.wrapper.GradleWrapperMain \ | ||
| "$@" | ||
|  | ||
| # Stop when "xargs" is not available. | ||
| if ! command -v xargs >/dev/null 2>&1 | ||
| then | ||
| die "xargs is not available" | ||
| fi | ||
|  | ||
| # Use "xargs" to parse quoted args. | ||
| # | ||
| # With -n1 it outputs one arg per line, with the quotes and backslashes removed. | ||
| # | ||
| # In Bash we could simply go: | ||
| # | ||
| # readarray ARGS < <( xargs -n1 <<<"$var" ) && | ||
| # set -- "${ARGS[@]}" "$@" | ||
| # | ||
| # but POSIX shell has neither arrays nor command substitution, so instead we | ||
| # post-process each arg (as a line of input to sed) to backslash-escape any | ||
| # character that might be a shell metacharacter, then use eval to reverse | ||
| # that process (while maintaining the separation between arguments), and wrap | ||
| # the whole thing up as a single "set" statement. | ||
| # | ||
| # This will of course break if any of these variables contains a newline or | ||
| # an unmatched quote. | ||
| # | ||
|  | ||
| eval "set -- $( | ||
| printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | | ||
| xargs -n1 | | ||
| sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | | ||
| tr '\n' ' ' | ||
| )" '"$@"' | ||
|  | ||
| exec "$JAVACMD" "$@" | 
      
      Oops, something went wrong.
        
    
  
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
버전을 명시해주는 이유가 있나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
인텔리제이에서 추천해주는 라이브러리 버전을 그대로 사용했습니다.
그래서 딱히 이유는 없지만,
만약 버전명을 명시적으로 지정해주면 팀프로젝트나 협업할 때 팀원들이 같은 버전을 사용하게 되어 일관성을 지킬수 있고, 버전에 따라 발생할 수 있는 문제를 방지할 수 있을것 같습니다.
반대로 버전을 명시하지 않으면 gradle이 최신 버전을 자동으로 가져오는것으로 알고있습니다.
지금같은 개인프로젝트에서는 버전을 명시하거나, 명시하지 않아도 큰 문제가 되지 않을거 같아서 인텔리제이에서 추천해주는것을 그대로 사용했습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그러면 일관되게 하는 것이 좋아보입니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
반영했습니다!