Recoil 현업에서 사용해도 되나요?
미해결
코드로 배우는 React 19 with 스프링부트 API서버
Recoil이 아직 실험적 api 단계로 아는데 현업에서 써도 될정도로 안정적인가요?
- react
- spring-boot
- jpa
- jwt
- redux-toolkit
- recoil
176만명의 커뮤니티!! 함께 토론해봐요.
미해결
코드로 배우는 React 19 with 스프링부트 API서버
Recoil이 아직 실험적 api 단계로 아는데 현업에서 써도 될정도로 안정적인가요?
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
최초 db 실행시에 파일모드로 실행해서 db파일을 만드는 것까지는 이해가 되었습니다. 하지만 이후부터는 tcp를 이용해서 네트워크 모드로 접속한다고 되어있는데 그 이유를 찾아보니 여러 어플리케이션이 동시에 해당 db를 사용하는 경우에는 db를 파일모드로는 사용하지 못하고 네트워크 모드로만 가능하다는 내용을 찾게 되었습니다. 이러한 이유가 맞는지 궁금합니다.
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의를 듣다가 패키지관련으로 궁금증이 생겨 질문을 남기게 되었습니다. 현재 강의에서는 편의성을 위해 회원이나 상품 이런 여러 도메인을 각각 domain, repositoy 등 한 패키지에 몰아서 하고 있는 것으로 보입니다. 그렇다면 제가 따로 category를 추가해서 개발을 해보거나 더 형태가 복잡한 개발을 할 때는 패키지 구성을 어떻게 하는 것이 효율적인가요? (jpabook.jpashop 바로 아래 패키지 기준) 주제별로 하위 패키지 ex) 상품(패키지) - domain(패키지) - 상품, 주문 (클래스) - repository(패키지) - 상품repo(클래스) 기능별로 하위패키지 ex) domain(패키지) - member(패키지) - 멤버(클래스) domain(패키지) - 상품(패키지) - 상품(클래스)
해결됨
실전! 스프링 데이터 JPA
영상에서는 findTop3by에 대한 쿼리메서드의 sql이 limit으로 나가는데 실습해보니 first ? rows only로 나가는걸 확인했습니다. 찾아보니 동일한 기능을 하지만 데이터베이스 호환성으로 first? rows only가 날려지는것으로 이해했는데. 이 부분 맞을까요?
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Team teamA = new Team(); teamA.setName("팀A"); em.persist(teamA); Team teamB = new Team(); teamB.setName("팀B"); em.persist(teamB); Member member1 = new Member(); member1.setUsername("회원1"); member1.setTeam(teamA); em.persist(member1); Member member2 = new Member(); member2.setUsername("회원2"); member2.setTeam(teamA); em.persist(member2); Member member3 = new Member(); member3.setUsername("회원3"); member3.setTeam(teamB); em.persist(member3); String query = "select t from Team t join fetch t.members"; List<Team> result = em.createQuery(query, Team.class) .getResultList(); 위의 코드를 실행했을 때 강사님의 결과값은 3개가 나왔는데 저는 2개가 결과로 나왔습니다. 시간이 지나서 JPQL이 중복을 제거하게 바뀐 걸까요??
미해결
스프링 DB 2편 - 데이터 접근 활용 기술
토이프로젝트를 하다 어쩌다 보니 spring webflux를 사용하게 되고 spring data jpa 는 reactive 환경에서 사용하지 못한다는 것을 모른 채 개발하다가... @SpringBootTest 에서 @Transactional 을 쓴 테스트에서 롤백이 되지 않는 현상을 발견했습니다.. TRACE 로 설정해 두고 실행시켜본 결과...```2024-01-11T00:54:00.058+09:00 INFO 18764 --- [ Test worker] c.s.o.s.StockMarketDataServiceTest : Started StockMarketDataServiceTest in 10.371 seconds (process running for 11.483) 2024-01-11T00:54:00.124+09:00 DEBUG 18764 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Creating new transaction with name [com.stock.oppenheimer.service.StockMarketDataServiceTest.testAddByStockName]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT 2024-01-11T00:54:00.125+09:00 DEBUG 18764 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Opened new EntityManager [SessionImpl(2129901484<open>)] for JPA transaction 2024-01-11T00:54:00.132+09:00 DEBUG 18764 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@7b5f886d] 2024-01-11T00:54:00.606+09:00 DEBUG 18764 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Found thread-bound EntityManager [SessionImpl(2129901484<open>)] for JPA transaction 2024-01-11T00:54:00.606+09:00 DEBUG 18764 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Participating in existing transaction 2024-01-11T00:54:00.606+09:00 TRACE 18764 --- [ Test worker] o.s.t.i.TransactionInterceptor : Getting transaction for [com.stock.oppenheimer.service.StockMarketFacadeService.addStockMarketData] 2024-01-11T00:54:00.607+09:00 DEBUG 18764 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Found thread-bound EntityManager [SessionImpl(2129901484<open>)] for JPA transaction 2024-01-11T00:54:00.607+09:00 DEBUG 18764 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Participating in existing transaction 2024-01-11T00:54:00.607+09:00 TRACE 18764 --- [ Test worker] o.s.t.i.TransactionInterceptor : Getting transaction for [com.stock.oppenheimer.service.StockDataService.addStockData] 2024-01-11T00:54:00.628+09:00 TRACE 18764 --- [ Test worker] o.s.t.i.TransactionInterceptor : Completing transaction for [com.stock.oppenheimer.service.StockDataService.addStockData] 2024-01-11T00:54:00.629+09:00 TRACE 18764 --- [ Test worker] o.s.t.i.TransactionInterceptor : Completing transaction for [com.stock.oppenheimer.service.StockMarketFacadeService.addStockMarketData] 2024-01-11T00:54:02.705+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Creating new transaction with name [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT 2024-01-11T00:54:02.706+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Opened new EntityManager [SessionImpl(576234319<open>)] for JPA transaction 2024-01-11T00:54:02.706+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@183cb66b] 2024-01-11T00:54:02.706+09:00 TRACE 18764 --- [ctor-http-nio-2] o.s.t.i.TransactionInterceptor : Getting transaction for [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save] 2024-01-11T00:54:02.749+09:00 TRACE 18764 --- [ctor-http-nio-2] o.s.t.i.TransactionInterceptor : Completing transaction for [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save] 2024-01-11T00:54:02.749+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Initiating transaction commit 2024-01-11T00:54:02.749+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Committing JPA transaction on EntityManager [SessionImpl(576234319<open>)] 2024-01-11T00:54:02.758+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Closing JPA EntityManager [SessionImpl(576234319<open>)] after transaction 2024-01-11T00:54:02.759+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Creating new transaction with name [com.stock.oppenheimer.service.MarketDataService.fetchMarketData]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT 2024-01-11T00:54:02.759+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Opened new EntityManager [SessionImpl(222446599<open>)] for JPA transaction 2024-01-11T00:54:02.759+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@7a4f5e33] 2024-01-11T00:54:02.759+09:00 TRACE 18764 --- [ctor-http-nio-2] o.s.t.i.TransactionInterceptor : Getting transaction for [com.stock.oppenheimer.service.MarketDataService.fetchMarketData] 2024-01-11T00:54:02.760+09:00 TRACE 18764 --- [ctor-http-nio-2] o.s.t.i.TransactionInterceptor : Completing transaction for [com.stock.oppenheimer.service.MarketDataService.fetchMarketData] 2024-01-11T00:54:02.761+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Initiating transaction commit 2024-01-11T00:54:02.761+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Committing JPA transaction on EntityManager [SessionImpl(222446599<open>)] 2024-01-11T00:54:02.761+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Closing JPA EntityManager [SessionImpl(222446599<open>)] after transaction 2024-01-11T00:54:03.536+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Creating new transaction with name [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT 2024-01-11T00:54:03.537+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Opened new EntityManager [SessionImpl(1744980953<open>)] for JPA transaction 2024-01-11T00:54:03.537+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@364f6c3d] 2024-01-11T00:54:03.537+09:00 TRACE 18764 --- [ctor-http-nio-2] o.s.t.i.TransactionInterceptor : Getting transaction for [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save] 2024-01-11T00:54:03.546+09:00 TRACE 18764 --- [ctor-http-nio-2] o.s.t.i.TransactionInterceptor : Completing transaction for [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save] 2024-01-11T00:54:03.546+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Initiating transaction commit ``` 이러한 상황을 경험하게 되었습니다. 2024-01-11T00:54:02.706+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Opened new EntityManager [SessionImpl(576234319<open>)] for JPA transaction 2024-01-11T00:54:02.759+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Opened new EntityManager [SessionImpl(222446599<open>)] for JPA transaction 2024-01-11T00:54:03.537+09:00 DEBUG 18764 --- [ctor-http-nio-2] o.s.orm.jpa.JpaTransactionManager : Opened new EntityManager [SessionImpl(1744980953<open>)] for JPA transaction 기존에 쓰이던 엔티티매니저가 없어지고 계속 새로운 엔티티 매니저가 오픈이 되고 있었습니다. 2024-01-11T02:01:18.229+09:00 DEBUG 25524 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Rolling back JPA transaction on EntityManager [SessionImpl(1495319789<open>)] 하지만 마지막에 롤백 되는 엔티티메니저는 [Test worker thread] 에서 소환한 엔티티매니저 단 하나였습니다. 해당 부분을 소환하는 코드는 이렇습니다.. @Transactional public Flux<MarketData> saveMarketData(MktDataDTO marketDataDTO, StockData savedStockData) { MarketData marketData = conversionService.convert(marketDataDTO, MarketData.class); marketData.setStockData(savedStockData); marketDataRepository.save(marketData); return Flux.just(marketData); } 골이 당겨 오네요 ㅜㅜㅜ.. r2dbc 로 마이그레이션을 하지 않고 transaction 설정을 잘 이용해서 이 상황을 해결할 방법이 있을지 한번 여쭤봅니다. 코드 전문은 kimseunghyun-kr/oppenheimer at VolumeProfile (github.com) 여기 있습니다..
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Team team = new Team(); team.setName("TeamA"); em.persist(team); em.flush(); em.clear(); 1차 캐시 비우기 em.close(); 영속성 컨텍스트 종료 로 알고 있는데 System. out .println(" =============== "); System. out .println("team = " + team.getId()); System. out .println(" =============== "); 이 team.getId() 값이 null이 아니라 해당 id 값이 출력될 수 있는 이유가 persist 할떄 team id 필드에 초기화 되서 인건가요?
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 주문 내역이 없을 시 화면이 출력 되는데요 값이 1개라도 존재할 경우 오류가 발생합니다. ChatGTP 돌려본 결과 "Unable to access property 'name' through getter method" 와 같이 item.member.name 에 getter을 이용하여 접근할 수 없다는 내용의 에러가 나옵니다. 또, Lazy로딩에 관한 문제로 member.name 에 접근할 수 없다는 에러도 보이길래 fetch조인 사용해도 문제가 발생합니다 pdf에 존재하는 findAllByString() 메소드를 그대로 덮어쓰고 orderList.html까지 그대로 사용해도 문제가 발생합니다. 아래는 /orders 접속 시 발생한 에러입니다 r Error, status=500). An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse( AbstractMarkupTemplateParser.java:241 ) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone( AbstractMarkupTemplateParser.java:100 ) at org.thymeleaf.engine.TemplateManager.parseAndProcess( TemplateManager.java:666 ) at org.thymeleaf.TemplateEngine.process( TemplateEngine.java:1103 ) at org.thymeleaf.TemplateEngine.process( TemplateEngine.java:1077 ) at org.thymeleaf.spring6.view.ThymeleafView.renderFragment( ThymeleafView.java:372 ) at org.thymeleaf.spring6.view.ThymeleafView.render( ThymeleafView.java:192 ) at org.springframework.web.servlet.DispatcherServlet.render( DispatcherServlet.java:1431 ) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult( DispatcherServlet.java:1167 ) at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1106 ) at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:979 ) at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1014 ) at org.springframework.web.servlet.FrameworkServlet.doGet( FrameworkServlet.java:903 ) at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:564 ) at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:885 ) at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:658 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:205 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:51 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:167 ) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:90 ) at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:482 ) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:115 ) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:93 ) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:74 ) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:340 ) at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:391 ) at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:896 ) at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1744 ) at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) at org.apache.tomcat.util.threads.ThreadPoolExecutor$ Worker.run ( ThreadPoolExecutor.java:659 ) at org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run ( TaskThread.java:61 ) at java.base/ java.lang.Thread.run ( Thread.java:833 ) Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: " item.member.name " (template: "order/orderList" - line 42, col 21) at org.attoparser.MarkupParser.parseDocument( MarkupParser.java:393 ) at org.attoparser.MarkupParser.parse( MarkupParser.java:257 ) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse( AbstractMarkupTemplateParser.java:230 ) ... 48 more Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: " item.member.name " (template: "order/orderList" - line 42, col 21) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate( SPELVariableExpressionEvaluator.java:292 ) at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression( VariableExpression.java:166 ) at org.thymeleaf.standard.expression.SimpleExpression.executeSimple( SimpleExpression.java:66 ) at org.thymeleaf.standard.expression.Expression.execute( Expression.java:109 ) at org.thymeleaf.standard.expression.Expression.execute( Expression.java:138 ) at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess( AbstractStandardExpressionAttributeTagProcessor.java:144 ) at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess( AbstractAttributeTagProcessor.java:74 ) at org.thymeleaf.processor.element.AbstractElementTagProcessor.process( AbstractElementTagProcessor.java:95 ) at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process( ProcessorConfigurationUtils.java:633 ) at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement( ProcessorTemplateHandler.java:1314 ) at org.thymeleaf.engine.OpenElementTag.beHandled( OpenElementTag.java:205 ) at org.thymeleaf.engine.Model.process( Model.java:282 ) at org.thymeleaf.engine.Model.process( Model.java:290 ) at org.thymeleaf.engine.IteratedGatheringModelProcessable.processIterationModel( IteratedGatheringModelProcessable.java:368 ) at org.thymeleaf.engine.IteratedGatheringModelProcessable.process( IteratedGatheringModelProcessable.java:222 ) at org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement( ProcessorTemplateHandler.java:1640 ) at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleCloseElementEnd( TemplateHandlerAdapterMarkupHandler.java:388 ) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleCloseElementEnd( InlinedOutputExpressionMarkupHandler.java:322 ) at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleCloseElementEnd( OutputExpressionInlinePreProcessorHandler.java:220 ) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleCloseElementEnd( InlinedOutputExpressionMarkupHandler.java:164 ) at org.attoparser.HtmlElement.handleCloseElementEnd( HtmlElement.java:169 ) at org.attoparser.HtmlMarkupHandler.handleCloseElementEnd( HtmlMarkupHandler.java:412 ) at org.attoparser.MarkupEventProcessorHandler.handleCloseElementEnd( MarkupEventProcessorHandler.java:473 ) at org.attoparser.ParsingElementMarkupUtil.parseCloseElement( ParsingElementMarkupUtil.java:201 ) at org.attoparser.MarkupParser.parseBuffer( MarkupParser.java:725 ) at org.attoparser.MarkupParser.parseDocument( MarkupParser.java:301 ) ... 50 more Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1021E: A problem occurred whilst attempting to access the property 'name': 'Unable to access property 'name' through getter method' at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty( PropertyOrFieldReference.java:220 ) at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal( PropertyOrFieldReference.java:111 ) at org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue( PropertyOrFieldReference.java:416 ) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal( CompoundExpression.java:98 ) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue( SpelNodeImpl.java:114 ) at org.springframework.expression.spel.standard.SpelExpression.getValue( SpelExpression.java:338 ) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate( SPELVariableExpressionEvaluator.java:265 ) ... 75 more Caused by: org.springframework.expression.AccessException: Unable to access property 'name' through getter method at org.springframework.expression.spel.support .ReflectivePropertyAccessor$ OptimalPropertyAccessor.read ( ReflectivePropertyAccessor.java:698 ) at org.springframework.expression.spel.ast.PropertyOrFieldRefe
미해결
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요. 선생님께서 제공해주신 UI 화면을 저희 프로젝트 서버에 연결하는 방법이 궁금합니다. 프론트엔드에서 버튼을 클릭했을 때 API와 연결되어 동작하는 과정이 궁금합니다!
미해결
실전! 스프링 데이터 JPA
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 1.9.0으로 바꾸시면 나올겁니다!
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@GetMapping("/orders") public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) { List<Order> orders = orderService.findOrders(orderSearch); model.addAttribute("orders", orders); return "order/orderList"; } 여기 로직에서 검색조건 없이 홈 화면에서 주문 내역 버튼 눌러서 들어갔을 때 어떻게 모든 주문 내역이 출력되는거죠? 코드에는 orderSearch로 검색조건 받아서 검색, 출력하는 코드밖에 없는데 이해가 안가네요 ㅜㅜ 같은 메소드에서 모두 조회, 검색조건에 따른 조회가 같이 일어나는것인가요
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 선생님! 강의를 잘 듣던 와중에 궁금증이 생겨 질문 드립니다. 게이트 웨이에 설정한 필터 중, 요청 uri를 재정의 하기 위해서 RewritePath 라는 필터를 사용하잖아요. 이때 /user-service/(?<segment>.*), /$\{segment} 는 정규식인가요??... 정규식표현에 segment라는 것이 찾아봐도 나오지 않아서요!!
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의와 자료 내용대로 수업을 듣고 라이브 코딩으로 강사님과 똑같은 구동상황을 확인했습니다. 그러다 한 가지 궁금증이 생겨서 질문을 남깁니다. 지금 상황에서는 @ManyToMany 어노테이션을 사용해서 Category 클래스와 Item 클래스가 다대다 관계를 가져, 자동으로 category_item테이블이 생성되는 것으로 보입니다. 그렇다면 강사님이 주신 자료에서 회원 테이블 분석표대로 CategoryItem클래스를 생성하여 @OnetoMany @ManyToOne 관계로 전환한다면 일대다 다대일 관계가 성립하면서 추가로 다른 컬럼을 추가한다거나 하는 게 가능할까요?
해결됨
입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
수업자료 파트에서 강의노트 파일을 받았는데 비어 있는 파일이라고 나옵니다.
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 여기서 Build and run using과 Run tests using을 Intellij IDEA로 설정하면 아무런 에러가 나오지 않고 잘 작동이 되는데, Gradle을 사용하게 되면 에러가 납니다. 이런 에러가 나옵니다. Project Structure의 SDK는 17로 해두었고, 스프링부트 버전은 3.2.1, java는 17입니다. 현재 Gradle 버전은 8.5입니다. 제공해주신 피피티에서는 스프링 부트 3.2부터 JDK 17과 꼭 Gradle을 선택하라고 하셔서 고민이 되어 질문 남깁니다. 그냥 Intellij IDEA를 사용하여 수업을 들어도 괜찮을까요? 에러는 어떻게 해야 해결이 될까요..? 검색해봐도 잘 나오지 않아 여쭤봅니다.
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
사진과 같은 문제로 구글링을 해봐서 캐시도 지우고 재시작해보고 rebuild도 해봤는데 해결이 되지 않아 질문 남깁니다.
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 위 사진처럼 인스턴스의 ID가 아래의 yml파일로 설정한데로 적용되지 않고 있어 질문드렸습니다. 커서를 두었을 때 포트번호도 확인해서 해당 인스턴스인것도 확인하였습니다. 원인이나 해결방법을 알 수 있을까요 ㅠㅠ
미해결
안녕하세요. QueryDSL에서 in 연산자를 사용해서 쿼리를 작성하려합니다. 문제 요약 의도 : QueryDSL에서 In연산자를 사용해 비교하는 쿼리 작성하려함. 비교대상 컬럼은 복수개 (in 연산자 좌항) (동적으로 생성한) 리터럴 2차원 배열 (서브쿼리가 아님) 문제 : 자꾸 첫째 항목에서 괄호가 사라짐... 의문 : queryDSL 방법을 잘못 쓴 것인지? 혹은 실제 QueryDSL이나 JPA의 오류인지 알고싶음. 상세 내용 작성하려는 쿼리는 입력된 복수개의 은행사와 계좌번호 쌍을 기준으로 계좌(BankAccount)엔티티의 정보를 검색하는 것입니다. 테이블에 "은행사,계좌번호" 쌍 중에 원하는 조합만 검색하는 게 목적입니다. 실제 데이터베이스에서 실행되길 의도한 쿼리 select ba.* from bank_account ba where (ba.bank_name, ba.account_num ) in ( /* 입력된 리스트에 따라 가변적으로 변하는 부분 */ /* 아래 조합에만 일치하는 것만 검색 */ ( '하나', '3333-444-555'), ( '국민', '4455-1111-44') /* 조합계속 ... */ ) 따라서 아래와 같이 Expressions.list() 메소드로 IN절의 좌항을 완성하고 in의 파라미터로 서브쿼리 (서브쿼리가 들어가면 잘 동작함) 대신 리터럴 값을 넣어 생성했습니다. QueryDSL에서 쿼리 생성 예시(민감정보 바꾸고 간소화함) fun getBankAccountList( ) jpaQueryFactory.selectFrom(bankAccount) .where( Expressions.list( bankAccount.bank, //은행사 bankAccount.accountNum, // 계좌번호 ).`in`( /* 사용자로부터 입력받은 은행사,계좌번호 쌍들 */ Expressions.list( Expressions.constant(BankName.HANA.value), Expressions.constant("1234-56-789"), ), Expressions.list( Expressions.constant(BankName.HANA.value), Expressions.constant("2345-67-890"), ), Expressions.list( Expressions.constant(BankName.WOORI.value), Expressions.constant("3333-33-333"), ), ) // in() ) // where() .fetch() 실제로 생성된 쿼리를 보면 자꾸 2차원 배열의 첫째 항의 괄호가 사라집니다. 생성된 쿼리 예시 SELECT /* 컬럼 파트 */ FROM BANK_ACCOUNT B0_ WHERE ( B0_.BANK_NAME, B0_.ACCOUNT_NUM ) IN ( '하나', '1234-56-789', // 여기 첫째 항목의 괄호가 없어짐.. ( '하나', '1234-56-789'), ( '우리', '3333-33-333') ) 일단 다른 방법으로 기능 구현은 마친 상황입니다. in 절이 본질적으로 각 항목과 컬럼을 동등비교하는 조건이 or연산자 기준으로 반복 되는 것을 알고 있기에, 해당 방법으로 기능 자체는 구현은 했습니다. (따라서 왜 괄호가 빠지는 것인지 자체에 대해 집중되었으면 하는 바람이 있습니다. ) 그래서 의문사항은 다음 두가지 입니다 . 이게 제대로된 queryDSL IN절 사용법이 아니라 그런 것일까요? 아니라면 옳은 방법은 뭘까요? 그냥 queryDSL 혹은 JPA의 이슈일까요? 환경 언어 : 코틀린(1.5.31) 자바버전 : 11 queryDSL : 5.0.0 springBoot : 2.5.6
미해결
호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세 >> hasPermission targetId null 문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요. https://github.com/IE-MangChi/RepositoryForAsk.git 영상에선 그냥 넘어갔지만 targetId값이 null로 찍히는게 맞는지 잘모르겠습니다. 강의내용대로면 저값이 매핑되어야하는데, 공식홈페이지보니 아닌거 같아서 질문드립니다!
해결됨
자바 ORM 표준 JPA 프로그래밍 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 테스트 파일 있고.. h2아예 지우고 관련 파일 지우고 다시 깔아서 h2에는 접속은 되는데 인텔리제이에서 연결하려면 저런 코드가 뜨네요.. 어떤문제일까여