inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

강의때 들었던 내용을 블로그 같은걸로 작성해도 되는지 궁금합니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요 취업한지 1년반정도된 주니어 개발자입니다. 취업하기 이전에는 취미삼아 깃허브에 블로그를 만들어서 pre에 코드프리터같은걸로 간단하게 개인 공부노트같이 만들어서 쓰고 있었는데 취업하고 나서는 회사에서 운영 및 유지보수 위주로만 작업하고 그래도 최근에 플러터로 앱 제작을 하나 하긴했었지만 끝난지 벌써 몇달이 되면서 개발 자체에 흥미가 떨어진 상태였는데 최근에 아는 형이 강사님의 JPA 강의를 다시 보면서 공부에 재미를 다시 붙이고 있습니다. 제 블로그를 보는 사람이 있으려나 모르겠지만 최근에 마크다운으로도 깃허브 블로그를 쓸 수 있다는 것을 알고 기존의 pre로 작성된 게시글들을 md파일로 변경하는 작업을 하고 있습니다. 그래서 이번 작업이 끝난 뒤 로드맵을 완강하면 정리해서 블로그에 쓸려고 했었는데 아까 말씀드린 형의 말로는 강의같은거는 저작권때문에 문제가 생길수 있다고 들었습니다. 만약 개인적으로 블로그에 쓰고 싶을때는 어떤식으로 허락을 맡아야 게시글로 쓸수 있는지 궁금합니다.

  • java
  • jpa
  • 저작권
  • 블로그
그냥곰 댓글 1 좋아요 0 조회수 817

user-service에서 설정파일 정보를 읽어오지 못하고 있습니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

현재 학습하고 있는 스프링 버전은 3.0.5 버전입니다. implementation 'org.springframework.cloud:spring-cloud-starter-config' implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap' 위 두개의 라이브러리를 추가한 후 bootstrap.yml 파일을 생성해서 아래와 같이 작성을 하면 spring: cloud: config: uri: http://localhost:8888 name: ecommerce 서버 실행 후 아래와 같이 로그가 출력됩니다. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.0.5) 2023-05-01T17:24:26.009+09:00 INFO 81323 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888 2023-05-01T17:24:26.117+09:00 INFO 81323 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Located environment: name=ecommerce, profiles=[default], label=null, version=6bb0cd579b695bb651be6edc215d85335734c939, state=null 2023-05-01T17:24:26.117+09:00 INFO 81323 --- [ restartedMain] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-configClient'}, BootstrapPropertySource {name='bootstrapProperties-file:///Users/..../git-local-repo/ecommerce.yml'}] name=ecommerce로 정상적으로 불러지고 있고, yml 파일 위치도 정상적으로 출력이 됩니다. 하지만 서버가 실행되다가 8888포트를 이미 사용을 하고 있다는 메시지와 함께 서버가 종료가 되었습니다. 검색을 해 보니 2.4버전대부터 설정하는 방법이 바뀌었다고 해서 변경된 방법으로 적용을 했습니다. bootstrap 라이브러리를 삭제했습니다. implementation 'org.springframework.cloud:spring-cloud-starter-config' bootstrap.yml 파일을 삭제했습니다. application.yml 파일에 내용을 추가했습니다. spring: config: name: ecommerce import: optional:configserver:http://localhost:8888 그리고 실행을 하면 아래와 같이 name=user-service로 적용이 됩니다. 2023-05-01T17:33:51.792+09:00 INFO 82127 --- [ restartedMain] o.s.c.c.c.ConfigServerConfigDataLoader : Fetching config from server at : http://localhost:8888 2023-05-01T17:33:51.792+09:00 INFO 82127 --- [ restartedMain] o.s.c.c.c.ConfigServerConfigDataLoader : Located environment: name=user-service, profiles=[default], label=null, version=6bb0cd579b695bb651be6edc215d85335734c939, state=null 이유가 application.yml 파일에서 config 설정 윗 부분에 spring: application: name: user-service 이렇게 application name을 설정을 해서 그렇게 나오는것 같습니다. 그리고 로그중에 아래와 같이 뜨는데 2023-05-01T17:33:51.793+09:00 INFO 82127 --- [ restartedMain] o.s.b.devtools.restart.ChangeableUrls : The Class-Path manifest attribute in /Users/.../.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-impl/4.0.1/bad26cea1d483dda57b6f634cdeaca3238637aea/jaxb-impl-4.0.1.jar referenced one or more files that do not exist: file:/Users/.../.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-impl/4.0.1/bad26cea1d483dda57b6f634cdeaca3238637aea/jaxb-core.jar,file:/Users/.../.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-impl/4.0.1/bad26cea1d483dda57b6f634cdeaca3238637aea/angus-activation.jar 2023-05-01T17:33:51.794+09:00 INFO 82127 --- [ restartedMain] o.s.b.devtools.restart.ChangeableUrls : The Class-Path manifest attribute in /Users/.../.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-core/4.0.1/e8bf2d711d2d4250537199602bccae0cd4e62726/jaxb-core-4.0.1.jar referenced one or more files that do not exist: file:/Users/.../.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-core/4.0.1/e8bf2d711d2d4250537199602bccae0cd4e62726/jakarta.activation-api.jar,file:/Users/.../.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-core/4.0.1/e8bf2d711d2d4250537199602bccae0cd4e62726/jakarta.xml.bind-api.jar 아래의 라이브러리중 어떤것을 설치를 해도 똑같은 로그가 출력됩니다. 파일이 존재하지 않는다는 내용인데.. INFO레벨로 출력이 되서 우선은 그냥 넘어갔습니다. implementation 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359' // implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.2.4' user-service를 실행을 시켜보면 아래와 같이 외부 설정 파일의 값을 읽어오지 못하고 있습니다. It's Working in User Service, port(local.server.port)=56942, port(server.port)=0, token secret=null, token expiration time=null 아래의 공식 문서도 참고를 해 봤는데 어느 부분이 잘못됐는지 모르겠더라구요.. https://docs.spring.io/spring-cloud-config/docs/current/reference/html/ 이 전단계의 git-local-repo 디렉토리를 만들어서 git을 commit까지 하는것은 정상적으로 됐고, 설정파일을 읽어오는것까지는 정상적으로 됐었습니다. 제 경우 한가지 이슈사항이 있던 부분은 git branch가 master로 되어있어서 오류가 나는 부분이 있어서 그 부분은 git branch를 main으로 하나 만들어서 적용을 하니 해당 오류는 해결이 됐었습니다. 최신 버전으로 적용을 할려고 하니 이리저리 쉽지가 않네요..

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
인프러너 댓글 2 좋아요 0 조회수 1409

제공되는 html 파일을 사용해도 될까요?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

QueryDSL까지 강의를 다 듣고 난 이후에 게시판이나 쇼핑몰 같은 포트폴리오를 만들기전에 자그맣게 배운걸 써보고 싶은데 html,css,js를 모르다보니 view쪽을 처리할 수가 없더라구요. 그래서 혹시 활용1편에 제공되는 HelloShop view단 파일을 사용해도 될지 궁금합니다. 깃허브에 올리려고 하고 백엔드단 코드는 전부 스스로 짤 생각입니다.!

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 350

지연로딩과 fetchJoin 성능 차이

미해결

실전! 스프링 데이터 JPA

즉시로딩을 사용하면 Member 객체를 불러 올 때 1+N문제가 발생하고 Lazy로딩을 사용하면 Team 객체를 사용할 때 쿼리문이 나가서 즉시로딩이든 지연로딩이든 결국 1+N 문제가 생기는 게 맞나요 ? 이 1+N 문제의 해결방법으로 fetchJoin이 나온 것 같은데 지연 로딩, 즉시 로딩보다 무조건 fetchJoin이 이점이 있는 것 아닌가요? 왜 디폴트값으로 지연로딩으로 설정하고 fetchJoin을 선택해서 사용하는지 궁금합니다. 기본적으로 fetchJoin을 사용하고 연관관계에 있는 객체를 사용하지 않을 것 같은 경우에만 지연로딩을 선택적으로 사용하는게 더 편하지 않나요? 사용하지 않는 객체를 가져오는 fetchJoin의 쿼리문 몇 줄이 성능에 그렇게 큰 영향을 미치나요?

  • java
  • spring
  • spring-boot
  • jpa
댓글 2 좋아요 1 조회수 682

2분 정도에 이 코드는 안되는 이유가 있나요?

미해결

실전! 스프링 데이터 JPA

Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); teamRepository.save(teamA); teamRepository.save(teamB); memberRepository.save(new Member("member1", 10, teamA)); memberRepository.save(new Member("member2", 10, teamB)); 강의에서 이렇게 한번에 하려다가 Member를 생성해주고 따로 save를 해주던데 한번에 하면 안되는 이유가 있을까요 ?

  • java
  • spring
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 338

Page 자료구조에 관해 질문입니다.

미해결

실전! 스프링 데이터 JPA

PageRequest pageRequest = PageRequest.of(0, 3, Sort.by(Direction.DESC, "username")); int age = 10; //when Page<Member> page = memberRepository.findByAge(age, pageRequest); PageRequest.of 코드에서 첫 번째 파라미터가 무엇을 의미하는지 헷갈립니다. PageRequest.of 의 2번째 파라미터는 한 페이지의 element 개수이고(limit), 3번째 파라미터는 정렬 조건이 맞나요? List<Member> content = page.getContent(); assertThat(content.size()).isEqualTo(3); assertThat(page.getTotalElements()).isEqualTo(5); assertThat(page.getNumber()).isEqualTo(0); assertThat(page.getTotalPages()).isEqualTo(2); assertThat(page.isFirst()).isTrue(); assertThat(page.hasNext()).isTrue(); page.getContent()는 현재 페이지의 데이터를 가져오는 메소드인가요? page.getNumber()는 현재 페이지를 가져오는 메소드인가요? Page는 책처럼 0,1,2,3 ... 이렇게 페이지가 있는 거고 Content는 그 Page안에 있는 데이터를 의미하는 건가요? List<List<data>> 와 같은 구조로 되어 있는 것일까요? Page와 Content의 자료 구조가 어떻게 되어있는지가 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 684

33강 완강기준 list -> get -> list -> 페이지이동 오류 해결법

미해결

스프링 프레임워크는 내 손에 [스프2탄]

33강 완강기준이며 list에서 제목을 클릭하여 get(상세페이지) 이동후 뒤로가기를 눌러 list로 돌아와서 페이지 이동을 하면 다음페이지(list)가 아닌 get(상세페이지)가 나오는 현상이 발생했습니다. 코드를 분석해보면 지금 상세보기 클릭을 누르면 pageFrm.attr("action","${cpath}/board/get"); <-- 해당 코드를 통해 jsp내 적혀있는 pageFrm이란 form의 action에 ${cpath}/board/get <-- 해당 주소로 이동하기 때문에 get(상세페이지)가 나오게 됩니다. 여기서 뒤로가기를 누르더라도 이미 jsp 상의 pageFrm이란 form의 action에는 ${cpath}/board/get <-- 이 주소가 적혀있으므로 새로고침을 하기전에 페이지 이동을 시도하면 list가 아닌 get(상세페이지)가 나오게 되는것입니다. 해결방법은 간단합니다. ㄴ 페이지 번호를 눌렀을때 pageFrm이란 form의 액션에 list 주소가 들어가도록 추가로 js에서 처리해주면 됩니다. (아래 사진 참고하시면 됩니다.)

  • spring
  • jquery
  • mvc
  • jpa
  • spring-security
ten 댓글 1 좋아요 1 조회수 629

제이쿼리 modify 수정하실 부분이 있습니다 : )

해결됨

스프링 프레임워크는 내 손에 [스프2탄]

우선 강의 차수는 33강 수정과 삭제후 페이지 번호 유지하기 파트입니다. idx, title, content, writer가 리스트로 넘어갈때는 필요하지 않기 때문에 find()로 찾고 remove() 해주는 방식인데 formData.find("#idx") <--- 현재 id 선택자로 찾고있습니다. 강의 / github 둘다 확인해보시면 name만 지정하였기 때문에 formData.find("#idx")로는 찾을수가 없습니다. 수정해주시겠지만 해당 글을 보는 다른 분들을 위해서 방안을 2가지 정도 적어보자면 1. formData.find("#idx") <-- 여기서 id로 idx를 찾아주고 있으니 각 id,title,content,writer가 기입되어 있는 태그에 id를 작성해주시면 될듯합니다. 예시 -> <td><input type="text" class="form-control" id ="idx" name ="idx" value="${vo.idx}" readonly ="readonly"/></td> 2. formData.find("#idx") <-- 현재는 id를 읽고 있는데 name을 읽을수 있게 변경하면 됩니다. 예시 -> formData.find("input[name='idx']").remove();

  • spring
  • jquery
  • mvc
  • jpa
  • spring-security
ten 댓글 1 좋아요 0 조회수 403

@Modelattribute와 Requestparam의 생략

해결됨

스프링 프레임워크는 내 손에 [스프2탄]

강의를 듣다가 헷갈리는 부분이 생겨서 질의합니다..!!! 1.68번 라인의 Board vo, Vriteria cri가 각각 @Modelattribute가 생략 처리가 된게 맞을까요? 2.93번 라인의 int idx는 @RequestParm이 생략처리가 된것인지 궁금합니다. 감사합니다 : )

  • spring
  • jquery
  • mvc
  • jpa
  • spring-security
ten 댓글 2 좋아요 0 조회수 784

config-service docker 실행 시 오류

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요. 강의에서 config-service의 yml 파일 내 uri와 jks 파일의 위치를 바꿔서 docker에서 실행해도 강의에서 나왔던 오류가 발생합니다. bootstrap.yml encrypt: # key: abcdefghijkimnopqrstuvwxz0123456789 key-store: location: file:/apiEncryptionKey.jks password: test1234 alias: apiEncryptionKey jks 파일의 위치를 Dockerfile과 동일한 경로에 복사했습니다. application.yml server: port: 8888 spring: application: name: config-server rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest cloud: config: server: native: search-locations: file://C:\work\springcloud\git-local-repo git: uri: https://github.com/mjjunng/spring-cloud-config management: endpoints: web: exposure: include: health, busrefresh docker 실행 로그 해당 에러를 확인해보면, 강의에서 파일의 위치를 변경하지 않았던 에러와 동일한 것으로 생각됩니다. 강의와 마찬가지로 파일 경로를 바꿔도 해당 에러가 발생하는데, 제가 놓친 부분이 있을까요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
mjjung 댓글 1 좋아요 1 조회수 829

글자를 크게 보는 방법이 없을까요?

해결됨

Practical Testing: 실용적인 테스트 가이드

강사님께서 올려주신 영상의 코드 폰트가 너무 작습니다.. 30분 정도 봤는데, 눈이 너무 아픕니다..ㅠㅜ 다른 강의 보면서 작다고 느낀적은 한번도 없는데 혹시, 녹화한 강의를 크게 보는 방법이 없을까요?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
ㅎㅇㅎㅇㅎㅇ 댓글 2 좋아요 2 조회수 1120

h2 db 연동

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] db 연결에 대한 정보 입력할때 password 에 0000 이라고 입력을 했을때 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] 이런 에러가 발생해서 한참 찾아보다 잘못된 부분이 없는것 같아서 비번 값을 '0000' 이렇게 변경했더니 잘 동작했습니다. 원래 그냥 '' 없이 치는게 맞는거 아닌가요? yml 파일에서 '' 나 "" 사용하는걸 본적이 없는데 언제 사용하는 건가요 ?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
김나노 댓글 1 좋아요 0 조회수 611

kafka connect 실행 에러가 발생합니다..

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

강사님이 제공하기 파일로 진행하고 있었습니다. .\bin\windows\connect-distributed.bat . \etc\kafka\connect-distributed.properties 위의 명령어로 kafka connect을 실행하려하는데 아래와 같은 에러가 발생합니다. log4j:ERROR Could not read configuration file from URL [file:C:/Work/confluent-7.3.1/config/connect-log4j.properties]. java.io .FileNotFoundException: C:\Work\confluent-7.3.1\config\connect-log4j.properties (지정된 경로를 찾을 수 없습니다) at java.base/java.io.FileInputStream.open0(Native Method) at java.base/java.io.FileInputStream.open( FileInputStream.java:219 ) at java.base/java.io.FileInputStream.<init>( FileInputStream.java:157 ) at java.base/java.io.FileInputStream.<init>( FileInputStream.java:112 ) at java.base/sun.net.www.protocol.file.FileURLConnection.connect( FileURLConnection.java:86 ) at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream( FileURLConnection.java:184 ) at org.apache.log4j.PropertyConfigurator.doConfigure( PropertyConfigurator.java:557 ) at org.apache.log4j.helpers.OptionConverter.selectAndConfigure( OptionConverter.java:504 ) at org.apache.log4j.LogManager.<clinit>( LogManager.java:119 ) at org.slf4j.impl.Reload4jLoggerFactory.<init>( Reload4jLoggerFactory.java:67 ) at org.slf4j.impl.StaticLoggerBinder.<init>( StaticLoggerBinder.java:72 ) at org.slf4j.impl.StaticLoggerBinder.<clinit>( StaticLoggerBinder.java:45 ) at org.slf4j.LoggerFactory.bind( LoggerFactory.java:150 ) at org.slf4j.LoggerFactory.performInitialization( LoggerFactory.java:124 ) at org.slf4j.LoggerFactory.getILoggerFactory( LoggerFactory.java:417 ) at org.slf4j.LoggerFactory.getLogger( LoggerFactory.java:362 ) at org.slf4j.LoggerFactory.getLogger( LoggerFactory.java:388 ) at org.apache.kafka.connect.cli.ConnectDistributed.<clinit>( ConnectDistributed.java:59 ) log4j:ERROR Ignoring configuration file [file:C:/Work/confluent-7.3.1/config/connect-log4j.properties]. log4j:WARN No appenders could be found for logger (org.apache.kafka.connect.runtime.WorkerInfo). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. log4j 가 없다는거 같은데 어떻게 해결할지 알려주시면 감사하겠습니다..

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
Calice 댓글 1 좋아요 0 조회수 1248

[31강]오류를 찾아 내지 못하겠습니다.

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

2023-04-29 16:04:35.522 ERROR 19256 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException] with root cause java.lang.IllegalArgumentException: null at java.base/java.util.Optional.orElseThrow( Optional.java:403 ) ~[na:na] at com.group.libraryapp.service.book .BookService.loanBook( BookService.java:36 ) ~[main/:na] at com.group.libraryapp.service.book .BookService$$FastClassBySpringCGLIB$$9fdbff4c.invoke(<generated>) ~[main/:na] at org.springframework.cglib.proxy.MethodProxy.invoke( MethodProxy.java:218 ) ~[spring-core-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy.invokeMethod( CglibAopProxy.java:386 ) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy.access$000( CglibAopProxy.java:85 ) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept( CglibAopProxy.java:704 ) ~[spring-aop-5.3.24.jar:5.3.24] at com.group.libraryapp.service.book .BookService$$EnhancerBySpringCGLIB$$fffb0d80.loanBook(<generated>) ~[main/:na] at com.group.libraryapp.controller.book .BookController.loanBook( BookController.java:25 ) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:78 ) ~[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:567 ) ~[na:na] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke( InvocableHandlerMethod.java:205 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest( InvocableHandlerMethod.java:150 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:117 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod( RequestMappingHandlerAdapter.java:895 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal( RequestMappingHandlerAdapter.java:808 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle( AbstractHandlerMethodAdapter.java:87 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1071 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:964 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1006 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.FrameworkServlet.doPost( FrameworkServlet.java:909 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service( HttpServlet.java:696 ) ~[tomcat-embed-core-9.0.70.jar: 4.0.FR ] at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:883 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service( HttpServlet.java:779 ) ~[tomcat-embed-core-9.0.70.jar: 4.0.FR ] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:227 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:53 ) ~[tomcat-embed-websocket-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:177 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:97 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:541 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:135 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:92 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:78 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:360 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:399 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run( Thread.java:831 ) ~[na:na] 항상 좋은 답변해주셔서 감사합니다. 하루동안 오류를 찾아내는데 못 찾겠습니다....ㅠ 도와주세요

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
임수빈 댓글 1 좋아요 1 조회수 3748

@Transactional 에 따른 변경감지 작동여부 질문

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요! 먼저 좋은 강의 감사하다는 말씀 드립니닷! 개인 프로젝트 수행 중에, 변경 감지와 관련한 이슈를 발견해서 질문드립니다. 물론 개인 프로젝트 관련한 질문은 안 받아주시는 것을 충분히 숙지하고 있지만, 개념적인(?) 내용이라 혹시 도움 받을 수 있을까 싶어 질문드립니다. (사실 아무리 생각해봐도 모르겠습니다..ㅠㅠ) 상황 한 트랜잭션 안에서, 엔티티 객체를 만들고 이를 영속성 컨텍스트에 올려 id 값을 받아와 이 id 값을 가지고 해시값을 만들어 해당 해시값을 다시 엔티티 객체에 할당하려 합니다. 문제 문제는 위 작업을 수행하는 메소드의 @Transactional 위치에 따라 변경감지가 될 때가 있고 안 될 때가 있다는 점입니다. 위 쪽의 create(ShortUrlCreateRequest request) 메서드를 호출하여 아래에 오버로딩된 create(String originUrl, Period expirationPeriod) 를 통해 위에 서술한 작업을 하려합니다. (Repository 객체는 Data Jpa Repository를 사용하고 있습니다.) create(ShortUrlCreateRequest request) 를 호출하면, 아래의 create(String originUrl, Period expirationPeriod) 메서드에 @Transactional 을 붙였음에도 아래와 같이 insert 문만 호출됩니다. 이번에는 위의 create() 에 @Transactionl 붙였을 때 입니다. insert 문과 update 문 모두 의도한 대로 호출되는 것을 확인할 수가 있습니다. 트랜잭션 진입 시점이 다른 것인데 왜 이에 따라 변경감지 가 일어나고/ 안 일어나는 지 감을 잡지 못하겠습니다. 일말의 힌트를 주실 수 있을까요? 항상 영한님과 서포터님들께 감사드립니닷!!

  • java
  • jpa
동해물과백두산이마르고닳도록 댓글 1 좋아요 1 조회수 1003

postman 대신 insomnia 사용 가능할까요?

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

기존에 insomnia를 사용했었는데, 혹시 postman 대신 insomnia를 이용해도 무관할까요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
조채원 댓글 1 좋아요 1 조회수 893

BookRepository 위치

해결됨

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

혹시 BookRepository를 domain/book 아래에 만드신 이유가 있으신가요?? BookRepository이니까 repository/book 아래 만드는게 나중에 찾을 때도 편할거 같고 좀더 직관적인 거같아서 질문드립니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
lwisekiml 댓글 1 좋아요 4 조회수 453

뭘 사용할지 선택에 있어서 질문입니다.

미해결

실전! 스프링 데이터 JPA

EntityManger를 주입받는 방법으로 private final EntityManager em; 이렇게 선언하고 @RequiredArgsConstructor로 받을 수도 있고, 이번 강의에서처럼 @PersistenceContext로 받을 수도 있는데 각각의 차이점이 무엇인가요 ? public long count() { return em.createQuery("select count(m) from Member m", Long.class) .getSingleResult(); } 또 여기서 메소드 선언문에는 long 타입을 반환타입으로 설정했는데 createQuery의 2번째 파라미터로는 Long값을 주는데 어떤 이유인지 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 438

@GeneratedValue에 관한 질문입니다.

미해결

실전! 스프링 데이터 JPA

member = Member(id=3, username=member1, age=10) -> member.getTeam() = Team(id=1, name=teamA) member = Member(id=4, username=member2, age=20) -> member.getTeam() = Team(id=1, name=teamA) member = Member(id=5, username=member3, age=30) -> member.getTeam() = Team(id=2, name=teamB) member = Member(id=6, username=member4, age=40) -> member.getTeam() = Team(id=2, name=teamB) Team을 먼저 persist 했기때문에 team의 id가 1,2가 됐고, 그 뒤에 순차적으로 member의 id가 3,4,5,6이 된 건가요 ? Team은 Team대로, Member는 Member대로 각 엔티티마다 id를 사용하는게 낫지 않나요? 실무에서는 어떤지 궁금하고, 만약 실무에서는 각 엔티티마다 id값을 공유한다면 강의에서는 모든 엔티티가 같은 id값을 공유하는지 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 300

'Spring Boot를 이용한 RESTful Web Services 개발' 강의와의 연관성

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요, 제 질문은 아래와 같습니다. '강의를 시작하며' 수업에서 본 강의는 ' Spring Boot를 이용한 RESTful Web Services 개발' 강의의 후속 강의라고 말씀해주셨습니다. 기존에 Rest API를 알고 있음에도, ' Spring Boot를 이용한 RESTful Web Services 개발' 강의를 먼저 들어야만 할까요? 감사합니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
yoongdoo0819 댓글 2 좋아요 0 조회수 503

인기 태그

인프런 TOP Writers

주간 인기글