묻고 답해요
138만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
야생형 코스를 따라가고 있는데요
엔티티 설계를 강의를 들으면서 엔티티끼리의 관계(다:다, 1:다, 1:1 등등)양방향관계, 단방향관계 @Embedded@JoinColumn등을 잘 이해하지 못하고 클론코딩 하기 급급했는데 일단 이 활용편 강의를 마저 듣고 기본편을 들으면 될까요 ?
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
17:27초 질문입니다
formData.find('#id').remove(); formData.find('#title').remove(); formData.find('#content').remove(); formData.find('#writer').remove();에서 modify.jsp 파일에는 id 속성을 가지고 있는 태그가 없는데 #태그를 사용해서 remove()하는 이유가 무엇인가요?? #태그는 id속성과 일치하는 값을 가져오는 것으로 알고 있었는데 혼란스럽네요.https://github.com/bitcocom/spring2/blob/main/SpringMVC09/src/main/webapp/WEB-INF/views/board/modify.jsp
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
16:25초 부터의 설명이 이해가 가지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Column에서 unique나 length제약조건을 거는것은 런타임에 영향을 주지 않는다 하시고 @Table에서 name을 사용해서 테이블 명을 바꾸는것은 런타임에 영향을 주신다고 하셧는데 둘의 차이를 이해하지 못하고 있습니다. @Table의 name을 변경하는것이 인서트 쿼리나 업데이트 쿼리에 영향을 준다고 하셧는데 이 말 자체를 이해하지 못하고 있는 것 같습니다..
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
mappedSupperclass를 왜 써야하는걸까요??
mappedSupperclass를 안써도 될 것 같은 느낌이 들어 test코드를 작성해보았습니다. 하지만 값이 안들어 왔다는 null 결과가 나오더라구요 흠,, 정말 변수들에 값을 넣어주기 위해 mappedSupperclass를 사용하는건가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
2대 이상의 Host PC에 Multi Cluster를 구성하는 방법 문의
K8S나 Docker Swarm 없이 2대 이상의 Host PC에 Multi Cluster를 구성할 수 있을까요?혹시 2대의 PC에 각각 Docker를 설치하고, 여기에 분산되서 올라간 Container들을 하나의 Network으로 묶는것이 가능한가 해서요.방법이 있으면 알고 싶습니다
-
해결됨실전! Querydsl
Controller, Serivce에서의 Querydsl, JPA 의존(?)
Querydsl 강의 <섹션 7. 스프링 데이터 JPA가 제공하는 Querydsl 기능> 강의를 들으면서QuerydslPredicateExecutor나 Querydsl Web 지원을 사용하게 되면 Controller나 Service에서Querydsl에 의존하게 되니까 사용하는걸 권장하지 않는다고 말씀해주셨습니다. 스프링 데이터 JPA에서 Pageable을 사용하면 Controller나 Service에서org.springframework.data.domain.Pageable 에 의존하게 됩니다.Spring Web과 Spring Data JPA 를 같이 사용하는 경우가 많기 때문에Spring Web이 Spring Data JPA에 의존하게 되는건 크게 문제가 되지 않는건가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쓰기지연, 변경감지 매커니즘의 동작과정에 대해서 질문드립니다.
그림상에서 flush가 두번 찍혀있어서 매커니즘의 구동 순서가 조금 햇갈려서 그런데1번의 flush와 4번의 flush의 의미가 조금 다른건가요? 아니, flush가 두번 동작하는건가요?우선은 선생님께서 트랜잭션 커밋 요청 시 내부적으로 flush가 발생한다고 하셨습니다.flush의 동작과정이 1차 캐시의 최초 스냅샷과 수정된 Entity의 값을 비교하고 변경내용 있을 경우 저장소에 UPDATE쿼리 저장하고 쿼리를 실행하는것까지가 맞을까요?그렇다면 쓰기지연의 경우에도 동일한 매커니즘처럼 보이는데 해당 그림에서는 flush가 빠져있어서 조금 햇갈리네요..쓰기지연의 경우는 persist 동작과정중에 따로 flush를 하지 않고 1차캐시에 저장됨과 동시에 쓰기지연 저장소에도 저장된다고 설명해주셨고, 이후에 트랜잭션 커밋 요청시 내부적으로 flush가 발생하면서 쿼리가 실질적으로 실행된다는 순서로 이해했습니다.강의 내용상으로 요약해보면 [쓰기지연] persist호출 후 flush 호출persist에서 INSERT 쿼리 저장flush에서 저장된 쿼리 실행[변경감지] flush가 두번 작동첫번째 flush에서 변경감지후 UPDATE 쿼리 저장두번째 flush에서 저장된 쿼리 실행이렇게 차이가 나는걸로 이해를 했습니다.두 매커니즘이 위와 같이 약간의 차이가 있는게 맞을까요?그리고 추가적으로 엔티티 삭제 remove시에는 직전 내용인 변경감지와 동일한 매커니즘이라고 설명해주셨는데아무리 생각해도 delete의 경우에는 변경감지의 매커니즘보다는 쓰기지연의 매커니즘과 같다고 생각이 들어서 질문드립니다!질문드리기가 조금 까다로운내용이라 저의 궁금포인트가 이해가 되셨는지 모르겠네요...영속성 관리 파트의 모든 강의를 들어야 명확하게 이해가 가능한건지제가 너무 까다롭게 이해하려고 하는 건지 그래도 순서를 조금 철저히 명확하게 알아야 정확하게 JPA를 사용할수 있지 않을까 싶어 질문드리오니 너그러운 마음으로 답변 부탁드리겠습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
find() 영속화 이후 저장, 쿼리 순서 트랜잭션영향여부
저장의 경우에 persist 이후 transaction commit시점에 쿼리를 날린다고 하신건 이해가 됬습니다.혹시 그렇다면 find시에는단순히 find해서 영속성을 두번 조회할때 로직 절차상으로는 member1을 영속화 하면서 1차캐시에 저장해둠과 동시에 SELECT쿼리가 나가고 member2를 조회할때 1차캐시에서 조회하는것에 대해서 이해가 되었습니다혹시 이때에는 갱신에서의 절차와 같이 아래의 트랜잭션 commit과는 연관없이 find()시 바로 영속화와 Select쿼리를 동시에 날리는것인가요?그리고 하나 더, JPA를 떠나서 스프링에서 데이터 처리를 하는 경우 readOnly=true 옵션인 SELECT에는 트랜잭션을 걸지 않아도 상관이 없는것 인지도 궁금합니다.보통은 전체단위로 트랜잭션을 readonly default로 걸어주고삽입 혹은 삭제 등의 갱신에서 추가적으로 readOnly=false옵션을 걸어주는방식으로 개발을 진행해왔습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
order service mariadb 연동 에러
안녕하세요. 강의를 듣던 중 에러가 발생하여 질문드립니다. order service에 마리아디비 연동시 에러가 발생합니다.(pom.xml 파일에 마리아디비 의존성 추가 했습니다)order-service: application.ymlserver: port: 0 spring: application: name: order-service h2: console: enabled: true settings: web-allow-others: true path: /h2-console datasource: # driver-class-name: org.h2.Driver # url: jdbc:h2:mem:testdb # username: sa driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mysql://localhost:3306/mydb username: root password: 0422 jpa: hibernate: ddl-auto: update show-sql: true generate-ddl: true eureka: instance: hostname: localhost instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}} # ???? ??? random?? ?? client: register-with-eureka: true # #eureka server? ???? ???? fetch-registry: true service-url: defaultZone: http://127.0.0.1:8761/eureka # ??? eureka ??? ?? logging: level: com.example.orderservice: DEBUG 에러 내용"C:\Program Files\Java\jdk-11.0.12\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\lib\idea_rt.jar=53302:C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\bin" -Dfile.encoding=UTF-8 -classpath C:\work\springcloud\msa_with_spring_cloud\order-service\target\classes;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.4.2\spring-boot-starter-data-jpa-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.4.2\spring-boot-starter-aop-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-aop\5.3.3\spring-aop-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\aspectj\aspectjweaver\1.9.6\aspectjweaver-1.9.6.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.4.2\spring-boot-starter-jdbc-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-jdbc\5.3.3\spring-jdbc-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\hibernate\hibernate-core\5.4.27.Final\hibernate-core-5.4.27.Final.jar;C:\Users\JUNGMINJI\.m2\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;C:\Users\JUNGMINJI\.m2\repository\org\javassist\javassist\3.27.0-GA\javassist-3.27.0-GA.jar;C:\Users\JUNGMINJI\.m2\repository\net\bytebuddy\byte-buddy\1.10.19\byte-buddy-1.10.19.jar;C:\Users\JUNGMINJI\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\JUNGMINJI\.m2\repository\org\jboss\jandex\2.1.3.Final\jandex-2.1.3.Final.jar;C:\Users\JUNGMINJI\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\JUNGMINJI\.m2\repository\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.2.Final\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\JUNGMINJI\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.3\jaxb-runtime-2.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\glassfish\jaxb\txw2\2.3.3\txw2-2.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.11\istack-commons-runtime-3.0.11.jar;C:\Users\JUNGMINJI\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\data\spring-data-jpa\2.4.3\spring-data-jpa-2.4.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\data\spring-data-commons\2.4.3\spring-data-commons-2.4.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-orm\5.3.3\spring-orm-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-beans\5.3.3\spring-beans-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-aspects\5.3.3\spring-aspects-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.4.2\spring-boot-starter-web-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter\2.4.2\spring-boot-starter-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.4.2\spring-boot-starter-logging-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\JUNGMINJI\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;C:\Users\JUNGMINJI\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\JUNGMINJI\.m2\repository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.4.2\spring-boot-starter-json-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;C:\Users\JUNGMINJI\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;C:\Users\JUNGMINJI\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;C:\Users\JUNGMINJI\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.4.2\spring-boot-starter-tomcat-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.41\tomcat-embed-core-9.0.41.jar;C:\Users\JUNGMINJI\.m2\repository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.41\tomcat-embed-websocket-9.0.41.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-web\5.3.3\spring-web-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-webmvc\5.3.3\spring-webmvc-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-expression\5.3.3\spring-expression-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\cloud\spring-cloud-starter-netflix-eureka-client\3.0.0\spring-cloud-starter-netflix-eureka-client-3.0.0.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\cloud\spring-cloud-starter\3.0.0\spring-cloud-starter-3.0.0.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\cloud\spring-cloud-context\3.0.0\spring-cloud-context-3.0.0.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\security\spring-security-crypto\5.4.2\spring-security-crypto-5.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\cloud\spring-cloud-commons\3.0.0\spring-cloud-commons-3.0.0.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\security\spring-security-rsa\1.0.9.RELEASE\spring-security-rsa-1.0.9.RELEASE.jar;C:\Users\JUNGMINJI\.m2\repository\org\bouncycastle\bcpkix-jdk15on\1.64\bcpkix-jdk15on-1.64.jar;C:\Users\JUNGMINJI\.m2\repository\org\bouncycastle\bcprov-jdk15on\1.64\bcprov-jdk15on-1.64.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\cloud\spring-cloud-netflix-eureka-client\3.0.0\spring-cloud-netflix-eureka-client-3.0.0.jar;C:\Users\JUNGMINJI\.m2\repository\com\netflix\eureka\eureka-client\1.10.10\eureka-client-1.10.10.jar;C:\Users\JUNGMINJI\.m2\repository\com\netflix\netflix-commons\netflix-eventbus\0.3.0\netflix-eventbus-0.3.0.jar;C:\Users\JUNGMINJI\.m2\repository\com\netflix\netflix-commons\netflix-infix\0.3.0\netflix-infix-0.3.0.jar;C:\Users\JUNGMINJI\.m2\repository\commons-jxpath\commons-jxpath\1.3\commons-jxpath-1.3.jar;C:\Users\JUNGMINJI\.m2\repository\joda-time\joda-time\2.3\joda-time-2.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;C:\Users\JUNGMINJI\.m2\repository\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;C:\Users\JUNGMINJI\.m2\repository\com\google\code\gson\gson\2.8.6\gson-2.8.6.jar;C:\Users\JUNGMINJI\.m2\repository\org\apache\commons\commons-math\2.2\commons-math-2.2.jar;C:\Users\JUNGMINJI\.m2\repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;C:\Users\JUNGMINJI\.m2\repository\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;C:\Users\JUNGMINJI\.m2\repository\com\google\guava\guava\19.0\guava-19.0.jar;C:\Users\JUNGMINJI\.m2\repository\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar;C:\Users\JUNGMINJI\.m2\repository\org\apache\httpcomponents\httpcore\4.4.14\httpcore-4.4.14.jar;C:\Users\JUNGMINJI\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\JUNGMINJI\.m2\repository\commons-configuration\commons-configuration\1.10\commons-configuration-1.10.jar;C:\Users\JUNGMINJI\.m2\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;C:\Users\JUNGMINJI\.m2\repository\com\google\inject\guice\4.1.0\guice-4.1.0.jar;C:\Users\JUNGMINJI\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar;C:\Users\JUNGMINJI\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;C:\Users\JUNGMINJI\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;C:\Users\JUNGMINJI\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;C:\Users\JUNGMINJI\.m2\repository\org\codehaus\jettison\jettison\1.4.0\jettison-1.4.0.jar;C:\Users\JUNGMINJI\.m2\repository\com\netflix\eureka\eureka-core\1.10.10\eureka-core-1.10.10.jar;C:\Users\JUNGMINJI\.m2\repository\com\fasterxml\woodstox\woodstox-core\5.3.0\woodstox-core-5.3.0.jar;C:\Users\JUNGMINJI\.m2\repository\org\codehaus\woodstox\stax2-api\4.2\stax2-api-4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\cloud\spring-cloud-starter-loadbalancer\3.0.0\spring-cloud-starter-loadbalancer-3.0.0.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\cloud\spring-cloud-loadbalancer\3.0.0\spring-cloud-loadbalancer-3.0.0.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-validation\2.4.2\spring-boot-starter-validation-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\hibernate\validator\hibernate-validator\6.1.7.Final\hibernate-validator-6.1.7.Final.jar;C:\Users\JUNGMINJI\.m2\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;C:\Users\JUNGMINJI\.m2\repository\io\projectreactor\reactor-core\3.4.2\reactor-core-3.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\reactivestreams\reactive-streams\1.0.3\reactive-streams-1.0.3.jar;C:\Users\JUNGMINJI\.m2\repository\io\projectreactor\addons\reactor-extra\3.4.2\reactor-extra-3.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-starter-cache\2.4.2\spring-boot-starter-cache-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-context-support\5.3.3\spring-context-support-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\com\stoyanr\evictor\1.0.0\evictor-1.0.0.jar;C:\Users\JUNGMINJI\.m2\repository\com\thoughtworks\xstream\xstream\1.4.14\xstream-1.4.14.jar;C:\Users\JUNGMINJI\.m2\repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;C:\Users\JUNGMINJI\.m2\repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-devtools\2.4.2\spring-boot-devtools-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot\2.4.2\spring-boot-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.4.2\spring-boot-autoconfigure-2.4.2.jar;C:\Users\JUNGMINJI\.m2\repository\com\h2database\h2\1.3.176\h2-1.3.176.jar;C:\Users\JUNGMINJI\.m2\repository\org\modelmapper\modelmapper\2.3.8\modelmapper-2.3.8.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\kafka\spring-kafka\2.6.5\spring-kafka-2.6.5.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-context\5.3.3\spring-context-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-messaging\5.3.3\spring-messaging-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-tx\5.3.3\spring-tx-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\retry\spring-retry\1.3.1\spring-retry-1.3.1.jar;C:\Users\JUNGMINJI\.m2\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\apache\kafka\kafka-clients\2.6.0\kafka-clients-2.6.0.jar;C:\Users\JUNGMINJI\.m2\repository\com\github\luben\zstd-jni\1.4.4-7\zstd-jni-1.4.4-7.jar;C:\Users\JUNGMINJI\.m2\repository\org\lz4\lz4-java\1.7.1\lz4-java-1.7.1.jar;C:\Users\JUNGMINJI\.m2\repository\org\xerial\snappy\snappy-java\1.1.7.3\snappy-java-1.1.7.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\projectlombok\lombok\1.18.16\lombok-1.18.16.jar;C:\Users\JUNGMINJI\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-core\5.3.3\spring-core-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\springframework\spring-jcl\5.3.3\spring-jcl-5.3.3.jar;C:\Users\JUNGMINJI\.m2\repository\org\mariadb\jdbc\mariadb-java-client\2.7.1\mariadb-java-client-2.7.1.jar com.example.orderservice.OrderServiceApplication . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.4.2) 2023-04-15 21:57:34.182 INFO 14488 --- [ restartedMain] c.e.o.OrderServiceApplication : Starting OrderServiceApplication using Java 11.0.12 on BOOK-V7E4AM7Q4G with PID 14488 (C:\work\springcloud\msa_with_spring_cloud\order-service\target\classes started by JUNGMINJI in C:\work\springcloud\msa_with_spring_cloud\order-service) 2023-04-15 21:57:34.183 DEBUG 14488 --- [ restartedMain] c.e.o.OrderServiceApplication : Running with Spring Boot v2.4.2, Spring v5.3.3 2023-04-15 21:57:34.184 INFO 14488 --- [ restartedMain] c.e.o.OrderServiceApplication : No active profile set, falling back to default profiles: default 2023-04-15 21:57:34.208 INFO 14488 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable 2023-04-15 21:57:34.209 INFO 14488 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' 2023-04-15 21:57:34.626 INFO 14488 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2023-04-15 21:57:34.670 INFO 14488 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 35 ms. Found 1 JPA repository interfaces. 2023-04-15 21:57:34.828 INFO 14488 --- [ restartedMain] o.s.cloud.context.scope.GenericScope : BeanFactory id=3562463c-b5e6-3ddc-abee-96251adfcd9a 2023-04-15 21:57:35.150 INFO 14488 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 0 (http) 2023-04-15 21:57:35.156 INFO 14488 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-04-15 21:57:35.156 INFO 14488 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.41] 2023-04-15 21:57:35.243 INFO 14488 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-04-15 21:57:35.243 INFO 14488 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1034 ms 2023-04-15 21:57:35.265 INFO 14488 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt true ticketCache is null isInitiator true KeyTab is null refreshKrb5Config is false principal is null tryFirstPass is false useFirstPass is false storePass is false clearPass is false Acquire TGT from Cache Principal is null null credentials from Ticket Cache [Krb5LoginModule] authentication failed Unable to obtain Principal Name for authentication 2023-04-15 21:57:36.324 ERROR 14488 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. java.sql.SQLInvalidAuthorizationSpecException: Could not connect to address=(host=localhost)(port=3306)(type=master) : GSS-API authentication exception at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:66) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1392) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.Driver.connect(Driver.java:89) ~[mariadb-java-client-2.7.1.jar:na] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.4.5.jar:na] at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.lambda$h2Console$0(H2ConsoleAutoConfiguration.java:67) ~[spring-boot-autoconfigure-2.4.2.jar:2.4.2] at org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.ifAvailable(DefaultListableBeanFactory.java:2035) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.h2Console(H2ConsoleAutoConfiguration.java:66) ~[spring-boot-autoconfigure-2.4.2.jar:2.4.2] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1179) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:571) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:212) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:203) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:97) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:86) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:259) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:233) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:53) ~[spring-boot-2.4.2.jar:2.4.2] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5166) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) ~[na:na] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) ~[na:na] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.StandardService.startInternal(StandardService.java:434) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.startup.Tomcat.start(Tomcat.java:486) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:104) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:451) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:200) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:181) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:159) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:582) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.4.2.jar:2.4.2] at com.example.orderservice.OrderServiceApplication.main(OrderServiceApplication.java:12) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.4.2.jar:2.4.2] Caused by: java.sql.SQLException: GSS-API authentication exception at org.mariadb.jdbc.internal.com.send.authentication.gssapi.StandardGssapiAuthentication.authenticate(StandardGssapiAuthentication.java:169) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.com.send.authentication.SendGssApiAuthPacket.process(SendGssApiAuthPacket.java:133) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authenticationHandler(AbstractConnectProtocol.java:752) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:553) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1387) ~[mariadb-java-client-2.7.1.jar:na] ... 78 common frames omitted Caused by: javax.security.auth.login.LoginException: Unable to obtain Principal Name for authentication at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:819) ~[jdk.security.auth:na] at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:682) ~[jdk.security.auth:na] at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:592) ~[jdk.security.auth:na] at java.base/javax.security.auth.login.LoginContext.invoke(LoginContext.java:726) ~[na:na] at java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:665) ~[na:na] at java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:663) ~[na:na] at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na] at java.base/javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:663) ~[na:na] at java.base/javax.security.auth.login.LoginContext.login(LoginContext.java:574) ~[na:na] at org.mariadb.jdbc.internal.com.send.authentication.gssapi.StandardGssapiAuthentication.authenticate(StandardGssapiAuthentication.java:119) ~[mariadb-java-client-2.7.1.jar:na] ... 82 common frames omitted 2023-04-15 21:57:36.376 INFO 14488 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2023-04-15 21:57:36.394 INFO 14488 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.27.Final 2023-04-15 21:57:36.447 INFO 14488 --- [ restartedMain] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final} 2023-04-15 21:57:36.484 INFO 14488 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt true ticketCache is null isInitiator true KeyTab is null refreshKrb5Config is false principal is null tryFirstPass is false useFirstPass is false storePass is false clearPass is false Acquire TGT from Cache Principal is null null credentials from Ticket Cache [Krb5LoginModule] authentication failed Unable to obtain Principal Name for authentication 2023-04-15 21:57:37.498 ERROR 14488 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. java.sql.SQLInvalidAuthorizationSpecException: Could not connect to address=(host=localhost)(port=3306)(type=master) : GSS-API authentication exception at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:66) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1392) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.Driver.connect(Driver.java:89) ~[mariadb-java-client-2.7.1.jar:na] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.4.5.jar:na] at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.4.2.jar:2.4.2] at com.example.orderservice.OrderServiceApplication.main(OrderServiceApplication.java:12) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.4.2.jar:2.4.2] Caused by: java.sql.SQLException: GSS-API authentication exception at org.mariadb.jdbc.internal.com.send.authentication.gssapi.StandardGssapiAuthentication.authenticate(StandardGssapiAuthentication.java:169) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.com.send.authentication.SendGssApiAuthPacket.process(SendGssApiAuthPacket.java:133) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authenticationHandler(AbstractConnectProtocol.java:752) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:553) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1387) ~[mariadb-java-client-2.7.1.jar:na] ... 55 common frames omitted Caused by: javax.security.auth.login.LoginException: Unable to obtain Principal Name for authentication at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:819) ~[jdk.security.auth:na] at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:682) ~[jdk.security.auth:na] at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:592) ~[jdk.security.auth:na] at java.base/javax.security.auth.login.LoginContext.invoke(LoginContext.java:726) ~[na:na] at java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:665) ~[na:na] at java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:663) ~[na:na] at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na] at java.base/javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:663) ~[na:na] at java.base/javax.security.auth.login.LoginContext.login(LoginContext.java:574) ~[na:na] at org.mariadb.jdbc.internal.com.send.authentication.gssapi.StandardGssapiAuthentication.authenticate(StandardGssapiAuthentication.java:119) ~[mariadb-java-client-2.7.1.jar:na] ... 59 common frames omitted 2023-04-15 21:57:37.500 WARN 14488 --- [ restartedMain] o.h.e.j.e.i.JdbcEnvironmentInitiator : HHH000342: Could not obtain connection to query metadata java.sql.SQLInvalidAuthorizationSpecException: Could not connect to address=(host=localhost)(port=3306)(type=master) : GSS-API authentication exception at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:66) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1392) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.Driver.connect(Driver.java:89) ~[mariadb-java-client-2.7.1.jar:na] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.4.5.jar:na] at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.4.2.jar:2.4.2] at com.example.orderservice.OrderServiceApplication.main(OrderServiceApplication.java:12) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.4.2.jar:2.4.2] Caused by: java.sql.SQLException: GSS-API authentication exception at org.mariadb.jdbc.internal.com.send.authentication.gssapi.StandardGssapiAuthentication.authenticate(StandardGssapiAuthentication.java:169) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.com.send.authentication.SendGssApiAuthPacket.process(SendGssApiAuthPacket.java:133) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authenticationHandler(AbstractConnectProtocol.java:752) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:553) ~[mariadb-java-client-2.7.1.jar:na] at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1387) ~[mariadb-java-client-2.7.1.jar:na] ... 55 common frames omitted Caused by: javax.security.auth.login.LoginException: Unable to obtain Principal Name for authentication at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:819) ~[jdk.security.auth:na] at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:682) ~[jdk.security.auth:na] at jdk.security.auth/com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:592) ~[jdk.security.auth:na] at java.base/javax.security.auth.login.LoginContext.invoke(LoginContext.java:726) ~[na:na] at java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:665) ~[na:na] at java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:663) ~[na:na] at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na] at java.base/javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:663) ~[na:na] at java.base/javax.security.auth.login.LoginContext.login(LoginContext.java:574) ~[na:na] at org.mariadb.jdbc.internal.com.send.authentication.gssapi.StandardGssapiAuthentication.authenticate(StandardGssapiAuthentication.java:119) ~[mariadb-java-client-2.7.1.jar:na] ... 59 common frames omitted 2023-04-15 21:57:37.501 ERROR 14488 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 2023-04-15 21:57:37.502 WARN 14488 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 2023-04-15 21:57:37.505 INFO 14488 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2023-04-15 21:57:37.512 INFO 14488 --- [ restartedMain] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2023-04-15 21:57:37.525 ERROR 14488 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.4.2.jar:2.4.2] at com.example.orderservice.OrderServiceApplication.main(OrderServiceApplication.java:12) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.4.2.jar:2.4.2] Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:127) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-5.3.3.jar:5.3.3] ... 22 common frames omitted Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final] ... 39 common frames omitted Process finished with exit code 0 Could not connect to address=(host=localhost)(port=3306)(type=master) 이 내용을 봐서, 마리아 디비 서버와 연결이 안되는 것 같은데 도무지 어디에서 잘못된 것인지 모르겠습니다..MySQLClient를 통해 마리아db서버에 정상적으로 접속했습니다.시도한 방법1. url, username, password 정보 확인2. org.mariadb.jdbc 버전 다운그레이드3. 마리아db 재설치
-
해결됨실전! Querydsl
Querydsl 설정과 검증 중 오타가 있는 거 같습니다
testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: ‘org.junit.vintage’, module: ‘junit-vintage-engine' } 에서 ‘org.junit.vintage’, module: ‘junit-vintage-engine'작은 따옴표가 이상한 거 같습니다복사 붙여넣기해서 IDE에 넣으면 작은 따옴표가 아니라 백틱 코드가 나오긴 하네요
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
방대한 유저의 데이터들이 유입되었을 경우
수업을 듣다가 혼자서 만드는 것이라도 프로그램을 설계할 때 방대한 유저들의 데이터가 유입되었을 경우를 생각해보면서 설계하는 것이 좋을 것 같다는 생각이 들었습니다. 만약에 실제 프로그램이라면 여러 클래스 혹은 데이터베이스를 건드는 코드가 방대하게 있을텐데, 어떤 부분 혹은 코드가 성능을 저하시키고 어떤 코드가 잘 짜진 곳이라고 현업에서 어떻게 판단하시는지 너무 궁금합니다. ㅎㅎ 항상 강의 너무 유익하고 감사하게 듣고 있습니다. ^^
-
해결됨실전! Querydsl
jakarta 환경에서 javax 클래스패스로 entityManager를 찾고있습니다.
실행환경gradle 7.6.1java 17, jdk19spring boot 3.0.2제일 처음 환경을 설정한 후 테스트하는 코드에서 아래와 같은 로그가 발생합니다.java: cannot access javax.persistence.EntityManager class file for javax.persistence.EntityManager not found import static org.assertj.core.api.Assertions.*; import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import study.querydsl.entity.Hello; import study.querydsl.entity.QHello; @SpringBootTest @Transactional class QuerydslApplicationTests { @Autowired EntityManager em; @Test void contextLoads() { Hello hello = new Hello(); em.persist(hello); //현재 컴파일 에러가 나고 있는 부분 JPAQueryFactory query = new JPAQueryFactory(em); //em에서 javax.persistence.EntityManager 클래스를 찾을 수 없다는 에러가 나고 있음. QHello qHello = new QHello("h"); Hello result = query .selectFrom(qHello) .fetchOne(); assertThat(result).isEqualTo(hello); } }import문까지 모두 jakarta로 해주고 있습니다. 정상적으로 Q타입클래스가 되어있는데 JPAQueryFactory 생성자 부분의 에러가 전혀 사라지지 않습니다.버전문제인가 싶어서 여러번 버전을 확인했는데도, 제가 확인한 바로는 버전 호환에서는 문제 될 것이 없어보입니다.dataJPA가 3.0.X버전이상에서는 hibernate를 6+버전으로 맞춰줘야한다고 해서 확인해본 결과 hibernate는 다음과 같습니다.org.hibernate.orm:hibernate-core:6.1.7.Final추가적으로 build.gradle 코드를 올려놓겠습니다.plugins { id 'java' id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency-management' version '1.1.0' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' 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 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' // == 스프링 부트 3.0 이상일 때, querydsl 의존성 == implementation "com.querydsl:querydsl-core:5.0.0" implementation "com.querydsl:querydsl-collections" implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta") annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api:3.1.0" testImplementation ('org.springframework.boot:spring-boot-starter-test') testImplementation 'jakarta.persistence:jakarta.persistence-api' testImplementation 'com.querydsl:querydsl-jpa:5.0.0' } tasks.named('test') { useJUnitPlatform() } //querydsl 세팅 시 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl }
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제이와 mysql 대신 사용 가능한가요?
안녕하세요! 이번에 큰맘 먹고 수강 신청한 초보 개발자 입니다.인텔리제이 대신 이클립스를 사용해도 괜찮을까요?꼭 mysql로 사용해야 하는 건지, 그렇다면 강의에서 설명해 주시는 내용과 차이가 많이 생기는 건가요?위의 궁금한 사항에 답 부탁드립니다 :)
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
INSERT를 시도해보고 싶은데 에러가 발생합니다.
[질문 내용]maven이 아니라 gradle로 시도를 해보고 싶어서스프링부트로 생성하여 진행을 해봤는데em.persist(member);를 실행할때 에러가 발생하는데도저히 원인을 못찾겠는데 혹시 어떤 문제인지 아시나요?package com.example.demo.entity; import jakarta.persistence.Entity; import jakarta.persistence.Id; @Entity public class Member { @Id private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.example.demo.entity.Member; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; @SpringBootApplication public class StudySpringJpaApplication { public static void main(String[] args) { SpringApplication.run(StudySpringJpaApplication.class, args); EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //애플리케이션 전체 공유 (persistence.xml 참조) EntityManager em = emf.createEntityManager(); //한번 쓰고 버려야함, 쓰레드간 공유하지 않음 EntityTransaction tx = em.getTransaction(); //조회를 제외한 DML 작업시 필수로 사용 tx.begin(); try { Member member = new Member(); member.setId(1L); member.setName("memberA"); em.persist(member); tx.commit(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); System.out.println("=== ROLLBACK 진행 ==="); } finally { em.close(); } emf.close(); } } <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <!-- EntityManagerFactory 생성 시 사용되는 persistence name --> <persistence-unit name="hello"> <class>com.example.demo.entity.Member</class> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="비밀번호"/> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3307/jpa?characterEncoding=UTF-8&serverTimezone=UTC"/> <!-- 하이버네이트 사용 시 다른 DB에서 MySQL 문법을 사용 가능하도록 변경.--> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL57Dialect"/> <!-- 콘솔에 SQL 출력 여부 --> <property name="hibernate.show_sql" value="true"/> <!-- 가독성 높여주는 formatting 여부 --> <property name="hibernate.format_sql" value="true"/> <!-- Comment 확인 여부 --> <property name="hibernate.use_sql_comments" value="true"/> </properties> </persistence-unit> </persistence> 에러는 다음과 같이 발생합니다.jakarta.persistence.PersistenceException: Converting `org.hibernate.property.access.spi.PropertyAccessException` to JPA `PersistenceException` : Error accessing field [private java.lang.Long com.example.demo.entity.Member.id] by reflection for persistent property [com.example.demo.entity.Member#id] : com.example.demo.entity.Member@1bc6c7f0 at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:165) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:175) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:182) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:743) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:721) at com.example.demo.StudySpringJpaApplication.main(StudySpringJpaApplication.java:29) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) Caused by: org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private java.lang.Long com.example.demo.entity.Member.id] by reflection for persistent property [com.example.demo.entity.Member#id] : com.example.demo.entity.Member@1bc6c7f0 at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:48) at org.hibernate.metamodel.mapping.internal.BasicEntityIdentifierMappingImpl.getIdentifier(BasicEntityIdentifierMappingImpl.java:148) at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:5269) at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:4856) at org.hibernate.engine.internal.ForeignKeys.isTransient(ForeignKeys.java:293) at org.hibernate.event.internal.EntityState.getEntityState(EntityState.java:59) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:93) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:53) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:737) ... 7 more Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field com.example.demo.entity.Member.id to com.example.demo.entity.Member at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167) at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171) at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58) at java.base/jdk.internal.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36) at java.base/java.lang.reflect.Field.get(Field.java:425) at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:44) ... 16 more === ROLLBACK 진행 ===
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
1차캐시와 SQL 쓰기지연 저장소에 저장되는 시점이 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]섹션3을 듣고 나서 영속성 컨텍스트에 대해서 이해가 되지 않아서 질문드립니다./* 비영속 / Member member = new Member(); member.setId(101L); member.setName("HelloJPA"); / 영속 / em.persist(member); Member findMember = em.find(Member.class, 101L); / 변경 감지 */ findMember.setName("HelloJPA dirty checking"); tx.commit();영속성 컨텍스트의 동작원리에 대해 이해하려다 보니 이상한? 코드가 작성되었는데 양해 부탁드립니다.Member 객체를 persist하면 영속성 컨텍스트에 저장되고 em.find를 하면 그 객체를 다시 가져오게 이때 영속성 컨텍스트에 저장된 객체는 1개그 객체의 value를 다시 변경하면 dirty checking에 의해 1차캐시에 저장된 객체에 반영 로그를 확인했을 때 commit 시점에 insert쿼리와 update쿼리가 둘다 나감. 트랜잭션이 commit되는 시점에 sql 쓰기지연 저장소에서 insert문 하나만 나갈 것으로 예상했는데 둘다 나가서 의아질문 드립니다.도중에 flush되는 시점이 없고 sql쓰기지연저장소에 쌓이는 시점 때문인거 같긴한데, 변경감지해서 쓰기지연저장소에 쌓이는 시점이 commit할 때가 아닌건가요? 아니라면 어느시점에 쌓이는 건지 궁금합니다. 또한 그래서 1차캐시가 sql 쓰기지연 저장소와 동기화가 되지 않는다고 이해하면 될까요?실제로 이렇게 코드가 작성되지는 않겠지만 영속성 컨텍스트가 어떤 메커니즘으로 작동하는지 궁금해서 여쭤봅니다. 강의 너무 잘듣고 있어요.!! 감사합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Kafka Consumer GroupID
안녕하세요!제가 강의를 다 듣고 난 뒤 추가로 공부를 해볼 생각으로catalog-service 에서 example-catalog-topic 를 받은 뒤상품의 개수를 파악 후 재고 유무의 따라 order-service 에주문 상태를 전달 해주는 example-order-topic 를 만들어 구독 중인 order-service 에서example-order-topic 에서 전달 받은 주문 상태를 업데이트 하는 로직을 구현하려고 했습니다.로컬에서 order-service 와 catalog-service 의 consumer groupId 를 consumerGroupId 로 통일해서 사용 했을 때는 괜찮았으나, docker 에 올리니 example-order-topic 이 생성은 됐으나 구독 및 전달이 되지 않더라구요.... 혹시나 해서 order-service 의 consumer groupId 를 consumerGroupId2 로 변경하여 docker 에 올리니 정상 작동이 됩니다. 혹시 각각의 service 는 groupId 를 다르게 해주어야 할까요??
-
해결됨실전! Querydsl
동적 정렬(orderBy)처리중 페이징 문제가 발생했는데 해결해주실 수 있을까요?ㅠㅠ
개인 프로젝트를 진행하며 querydsl을 사용하여 동적 쿼리문을 작성했습니다. 무한스크롤 페이징 처리를 하였고, 코드의 일부분만 보여드리면 아래와 같습니다.public ArticlePagingResponse<Article> searchDynamicQueryAndPaging(Long lastArticleId, ArticleSearchCond cond, String orderBy, int size) { JPAQuery<Article> query = new JPAQuery<>(em); query.from(article) .join(article.member,member)//article.member는 Article테이블에 있는 member_id, member는 Member테이블에 있는 id라고 생각 .join(article.restaurant, restaurant)//article.restaurant는 Article테이블에 있는 restaurant_id, restaurant는 Restaurant테이블에 있는 id .fetchJoin() .where( // no-offset 페이징 처리 ltStoreId(lastArticleId), // 검색조건들 생략... ); //정렬 동적 처리 switch(orderBy){ case OrderConst.CREATED_DATE_DESC://최신 순으로 정렬 query.orderBy(article.createdDate.desc()); break; case OrderConst.CREATED_DATE_ASC://오래된 순으로 정렬 query.orderBy(article.createdDate.asc()); break; case OrderConst.VIEWS_DESC://조회수 순으로 정렬 query.orderBy(article.views.desc(),article.createdDate.desc()); break; case OrderConst.LIKE_COUNT_DESC://좋아요 갯수 순으로 정렬 query.leftJoin(likeArticle) .on(article.id.eq(likeArticle.article.id)) .groupBy(article.id) .orderBy(likeArticle.count().desc(),article.createdDate.desc()); break; case OrderConst.COMMENT_COUNT_DESC://댓글 갯수 순으로 정렬 query.leftJoin(comment) .on(article.id.eq(comment.article.id)) .groupBy(article.id) .orderBy(comment.count().desc(),article.createdDate.desc()); break; default: throw new IllegalStateException("OrderConst에 정의되어있는 orderBy값 외의 다른 값이 들어왔습니다."); } List<Article> results = query .limit(size + 1) .fetch();//size를 DB에서 받는 것보다 프론트에서 받는게 더 유연할 것같음.fetch(); boolean hasNext = false; if (results.size() > size) {//결과가 6개이면 size(5)보다 크므로 다음 페이지가 있다는 의미 hasNext = true; results.remove(size - 1);//다음 페이지 확인을 위하 게시글을 하나더 가져왔으므로 확인 후 삭제 } return new ArticlePagingResponse<>(results,hasNext); }코드를 보면 no-offset방식으로 구현을 하였습니다. whrer문의 lastArticleId 값을 받고 그것보다 작은 값중에 5개씩 받도록 처리하였습니다.예) 10, 9, 8, 7, 6 의 게시글을 받고 그다음 스크롤 이벤트가 발생하면 6보다 작은 값 중에서 5개인 5, 4, 3, 2, 1 을 가져 오는 것입니다.문제는 최신순으로 정렬하여 값을 가져오면 최신 게시글의 id값이 가장 크므로 잘 작동하는데 다른 정렬 조건(오래된 순, 조회수순, 좋아요 갯수순, 댓글 갯수순) 으로 가져올 때는 id값의 순서를 예상하지 못하니때문에 정렬이 되지않는 문제가 발생하였습니다.오래된 순은 id값을 lt 대신에 gt쓰고 어떻게 구현할 수 있을 것같은데 다른 정렬 조건(조회수순, 좋아요순, 댓글순)은 어떻게 구현할 좋은 방법이 생각 나질 않네요 방법을 아시는 분 계시면 알려주시면 감사하겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
CQS 커멘드와 쿼리 분리에 대한 설명
public Long save(Member member) { em.persist(member); return member.getId(); }리포지토리에 이 코드가 Member를 반환하지 않는 이유를 설명하면서 커멘드 메서드와 쿼리의 분리를 언급하셨습니다. 그래서 코드가 아무 값도 반환을 하지 않는 코드를 작성하실 줄 알았는데, 또 다음 설명에서 Id를 가져와 반환한 이유를 설명해주셨습니다. 그럼 Member 반환하는 코드는 CQS에 위배되지만, Id를 가져와 반환하는 것 까지는 CQS에 부합하는 코드라는 설명으로 이해해야하는 것인지 혼동됩니다. 제가 이해하기론 설명하고 반대되는 코드라고 생각되어 질문을 남깁니다. CQS에 대한 설명은 하셨지만, Id 정도는 의도가 있으니 Query해도 된다. 정도로 이해하면되는걸까요? 제가 이해못한 부분이 있다면 설명 부탁드리겠습니다. 감사합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
태그가 Account에 반영이 안됩니다.
저장시에 findById로 가져온 부분에는 잘 들어가는데 현재 Account에는 반영이 되지 않습니다. 또한 새로고침을 하면 현재 account도, db 정보에도 null 로 뜹니다. Account 엔티티에 @ManyToMany private Set<Tag> tags = new HashSet<>();했습니다...
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Cannot resolve class 'org.h2.Driver'
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]persistence.xml에 그대로 복붙해서 넣었는데Cannot resolve class 'org.h2.Driver'에러가 뜨면서 아래 코드의 org.h2.Driver에 빨간줄이 뜹니다. 서칭해도 나오지 않아 여쭤봅니다.<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>