inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

2회기출, 제2유형

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

기출2회, 제2유형의 해설 관련 저는 아래 랜포사용해서 진행했는데, 아래와 같이 predic_proba 사용했으므로 1차원 배열로 바꿔줘야하나요? DataFrame 'pred' : pred[:,1] 해줘야 1차원으로 변경되는지 문의드립니다. from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state = 0) rf.fit(x_tr, y_tr) pred = rf.predict_proba(test) test_ID = test.pop('ID') submit = pd.DataFrame({'ID' : test_ID, 'Reached.on.Time_Y.N' : pred[:,1]}) submit.to_csv('result.csv', index=False) # 랜덤포레스트 model = RandomForestClassifier(random_state=2022) model.fit(X_tr, y_tr) pred = model.predict_proba(X_val) print(roc_auc_score(y_val, pred[:,1]))

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wlysh999 댓글 2 좋아요 0 조회수 77

O(1)의 값에 대한 질문

해결됨

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 MyheshSetV0에 클래스에서 (밑의 코드는 중략) 이 클래스의 인스턴스 변수인 int[] elementData 배열은 기본형이기에 모두 0으로 초기화 되어지는데 이러한 메인 클래스에서 첫 set.addO(1)이 되는 부분이 이해가 잘 안되네요 ㅜㅜ 결국 기본형 배열에 0으로 초기화가 되어있으니 끝까지 비교가 되어 처음 add 역시 O(n)이 될 것 같아서 Integer 제너릭 타입은 널이 들어가서 for-each문 배열을 안 돌지만 int형은 0으로 n번째만큼 돌지 않을까? 라는 생각을 하고 있습니다 혹시 가르쳐 주실 수 있을까요 (요약문) int[] elementData는 기본형으로 0으로 전부 초기화 contains의 0값을 data에 다 넣어서 == 비교처리가 됨으로 O(n)처리가 되지 않을지 질문( 추후 Integer배열(null 초기화)로 가정하면 될지)

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
류정균 댓글 2 좋아요 3 조회수 187

JdbcClient 생성 질문

미해결

토비의 스프링 6 - 이해와 원리

JdbcOrderRepository 에서 JdbcClient 경우 Bean 으로 주입 받지않고, 생성자에서 직접 사용하셨는데 Bean 주입받는거와 차이가 있을까요? JdbcClient 를 구현하고 있는 DefaultJdbcClient 경우 상태를 가지지않고 datasource 또는 jdbcTemplate 을 이용해서 생성하는 로직밖에 없는데 강의해서 직접 생성하신 부분이 어떤 차이가 있는지 궁금합니다. 아래는 제가 추측 및 생각한 흐름입니다. EntityManager 경우에는 reuqest 및 transaction context 마다 생성을 해줘야되는데 이와 유사하게 처리를 하신건가? 그렇다고 하기에 DataConfig 에서 JdbcOrderRepository 는 싱글톤으로 한번만 만들어지는데 이러면 JdbcClient 도 싱글톤 아닌가?

  • java
  • spring
김태형 댓글 2 좋아요 0 조회수 215

문득 영한님의 키세팅이 궁금해서 여쭤봅니다

미해결

김영한의 실전 자바 - 중급 1편

[질문 내용] 저도 mac os를 사용중인데 이번 문제 같이 String값을 대문자로 써야할때면 기본키가 Caps Lock키를 꾹 누르는거라 시간도 오래걸리고 사용하기 어려운데 다른 키로 사용하시는 걸까요? 뭔가 금방금방 바꾸시는거 같아서요

  • java
  • 객체지향
김지협 댓글 1 좋아요 0 조회수 147

requests 관련 질문

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 기본편

25년 5월 시점에서 하다보니깐, requests 강의를 들을때 클래스 파싱 하는 과정이 작동이 안되서 확인해보니, requests는 javascript 로 만들어진 동적 내용을 긁을 수 없다고 하더라구요. 그래서 selenium의 webdriver를 사용했는데, 작동은 되는데 불편한 점이 각 실행시마다 크롬 창이 떠요. 혹시 javascript도 requests로 파싱할 수 있는 방법 이 있을까요?

  • python
  • 웹-크롤링
최다니엘 댓글 2 좋아요 1 조회수 170

추상 클래스와 인터페이스 활용 영역에 대한 문의

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] 강의를 통해 제가 최종적으로 이해한바로는, 인터페이스의 경우는 다형성을 위해서 제약사항을 좀더 추가 된것과 더불어 클라이언트 코드 입장에서는 내부 구현 클래스를 굳이 알 필요가 없고 확장성에 용이 하다는점. 추상클래스는 객체 생성을 방지와 더불어, 자식 클래스에서 추상클래스 내의 메소드를 사용할 수 있게 한것으로 이해했는데요. 여기서 궁금한게 있습니다. 보통 실무에서는 공통 모듈이나 공통 적인 유틸성 함수들을 구현해서 사용하는 경우가 많은데요. 이런 경우는 추상클래스내의 추상메소도를 통해 구현해서 활용하는것이 더 효율적인지? 아니면, 꼭 추상클래스로 안해도 되는지? 추상클래스의 적절한 활용 범위와 더불어 런타임시(메모리 상에서) 처리 성능에 있어서 어느정도의 이점이 있는지 궁금합니다.

  • java
  • 객체지향
hwi 댓글 1 좋아요 0 조회수 104

3-8 해쉬-2 코드 질문

해결됨

38군데 합격 비법, 2026 코딩테스트 필수 알고리즘

3-8 해쉬 -2 안녕하세요! 설명해주신 코드에서 해쉬를 이용하면 결국 시간 복잡도는 결국 O(N)인데, 아래와 같이 해도 되나요? 아래도 시간복잡도가 O(N)이라고 생각하는게 맞는지 궁금합니다! all_students = ["나연", "정연", "모모", "사나", "지효", "미나", "다현", "채영", "쯔위"] present_students = ["정연", "모모", "채영", "쯔위", "사나", "나연", "미나", "다현"] set(all_students)-set(present_students)

  • python
  • 코딩-테스트
  • 알고리즘
  • data-structure
snoapple3 댓글 2 좋아요 0 조회수 109

interrupt 에 대하여

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

안녕하세요 강사님! 간단한 질문이 있습니다!! shutdown 이나 shutdownNow 모두 작업중이 스레드에게 Interrupt 를 거니까, 100초 짜리 작업이 interrupt 체킹이 안되어있는 스레드였다면 (sleep 함수가 아니라 실제로 작업이 100초짜리 걸려서, Thread.isInterrupted 같은걸로 체크가 없다면) (sleep 은 interrupt 를 잡음) shutdownNow 에도 동작을 안하나요?

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
댓글 1 좋아요 0 조회수 124

댓글 신규 path 동시성 이슈

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

댓글의 path를 설정하는 과정에서 public CommentPath createChildCommentPath(String descendantsTopPath) { if (descendantsTopPath == null) { return CommentPath.create(path + MIN_CHUNK); } String childrenTopPath = findChildrenTopPath(descendantsTopPath); return CommentPath.create(increase(childrenTopPath)); } 이런식으로 findChildrenTopPath 를 설정하게 되는데 이 과정에서 동시성 이슈가 발생할 수 있을 것 같아 질문 드립니다. increase 하는 함수에서도 동시성 제어를 하는 파트가 없어 동시에 같은 계층의 댓글이 생성되면 id가 겹칠 것 같습니다!

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
See Go 댓글 2 좋아요 0 조회수 131

제네릭 연습문제 1번

미해결

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. isEmpty() 메서드 관련해서 제네릭은 실행 시점에 타입이 정해지는데 단순 null 인지만 확인하는것이 아닌 기본형,참조형 각각의 타입별로 비어있는지를 구현해야 하지 않나 싶습니다. 아래와 같이 test를 해보면 잘못된 값이 나옵니다. public class ContainerTest { public static void main(String[] args) { Container<Integer> integerContainer = new Container<>(); System.out.println("빈값 확인1: " + integerContainer.isEmpty()); } }

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
큐펀치 댓글 2 좋아요 0 조회수 121

jpa 책 질문있습니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

강의에서 2015년에 나왔다고 하셨던거 같은데 지금 책 구매해서 봐도 괜찮나요? 에러라던가 버전이라던가 아니면 jpa 방식이 변했다던가 그런부분은 거의 없나요 ?

  • java
  • spring
  • mvc
  • spring-boot
열심인 참새 댓글 1 좋아요 0 조회수 176

application.yaml 에 redis 정보

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

redis 분산락을 사용할때, application.yaml 에 아래와 같은 redis 정보가 없어도 정상동작하는 이유가 궁금합니다 !!! spring: data: redis: host: localhost port: 6379

  • java
  • spring
  • 동시성
힝훙항 댓글 2 좋아요 0 조회수 116

작업형2 모의문제 1

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

여기서 평가 지표가 정확도, 정밀도, f1score 등 많은데 왜 roc_auc_score인 proba로 예측하고 정리할 때 roc_auc_score로 확인하는지 궁금합니다

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
최수영 댓글 2 좋아요 0 조회수 109

print 사용

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요 강의 잘 듣고 있습니다 ! 영상에서 예를 들어 선생님께서는 이렇게 cols만 붙이시거나 train.head()이렇게만 하시는데 실제 시험에서는 모든 식 앞에 print()를 붙여야 하나요? 또, print를 붙여야 되는 식은 어떻게 구분하는지 질문드립니다 ! cols = train.select_dtypes(include="object").columns cols cols = train.select_dtypes(include="object").columns print(cols)

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
최수영 댓글 2 좋아요 0 조회수 74

[JAVA] 함수, 생성자을 파악하는 기준

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

JAVA의 구조와 기초용어(13분 45초 ~ 13분 54초) 여기서 설명을 하실 때 함수같이 생긴 것이라고 말하셨는데 함수같이 생긴 것이 무엇인지 모르겠습니다. 혹시 다른 커리큘럼에서 말씀을 하셨다면 어디인지 알려주세요. 감사합니다.

  • python
  • java
  • c
  • 정보처리기사
1302641 댓글 2 좋아요 0 조회수 117

알림은 왜 pub sub 구조로 설계하나요?

해결됨

RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기

동일한 메시지를 여러 서비스에서 처리하는 것을 pub sub 구조로 이해하였는데요, 알림이라는 하나의 서비스에서 처리한다면 pub sub 구조로 설계할 필요가 없는 걸까요?

  • java
  • spring-boot
  • jpa
  • msa
  • websocket
  • rabbitmq
Jerry 댓글 2 좋아요 0 조회수 182

인기글 Consumer 구현 - 이벤트 핸들러 및 서비스 레이어 강의 질문

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 해당 강의 마지막 부분의 handleEventIfScoreUpdatedEventTest()에서 given(event.getType()).willReturn(mock(EventType.class)); 위의 코드로 test하신 이유가 단순히 게시글 생성과 게시글 삭제만 아니면 되어서, 그냥 아무 class로 테스트하신게 맞으실까요?? 아래 코드로도 가능하긴 하지만 그냥 게시글 생성과 게시글 삭제만 아니면, test 가능하니로 이해하면 될까요? given(event.getType()).willReturn(EventType.ARTICLE_UPDATED);

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
parkhs 댓글 2 좋아요 0 조회수 126

OAuth2AuthorizedClient 이해 및 활용 강의 내용 질문

미해결

스프링 시큐리티 OAuth2

1 의문 ................................................ 강의 내용중에서 oauth2Login(Customizer.withDefaults()) 없이 oauth2Client(Customizer.withDefaults()) 만 사용한 경우에는 인가 처리만 하기 때문에 따로 인증 처리를 해주는 과정을 보여주셨는데 2 배경지식 ................................................ oauth2Client 와 oauth2Login 의 차이는 1단계 처리 필터 : OAuth2AuthorizationRequestRedirectFilter 로 동일 2단계 를 처리필터: OAuth2LoginAuthenticationFilter 대신 여기선 OAuth2AuthorizationCodeGrantFilter 사용 즉 OAuth2LoginAuthenticationFilter 를 거치지않아 OAuth2LoginAuthenticationFilter에서 사용하는 OidcAuthorizationCodeAuthenticationProvider에서 IdToken 을 추출해 OidcIdToken를 만들고 OidcUser 를 로드하는 부분의 유무가 핵심적인 차이라고 생각이드는데요 그리고 OAuth2User는 인가 개념만 있지 인증 개념은 없다고 들었습니다 3 질문 ....................................................... 단순히 OAuth2User를 만들어 OAuth2AuthenticationToken을 SecurityContextHolder에 수동 저장한다고 해서 "인증된 사용자"로 간주되는 않아서 로그아웃도 제대로 동작하지 않습니다 . 물론 스프링 시큐리티 자체에서 세션,쿠키,SecurityContextHolder에 강제로 저장한 Authentication 없애기를 통해 일부는 처리는 되지만 질문1 : keycloak 에서의 실제 세션은 로그아웃을 못하지않나요 ? @GetMapping("/logout") public String logout( HttpServletRequest request, HttpServletResponse response){ Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); // 로그아웃 처리 SecurityContextLogoutHandler logoutHandler = new SecurityContextLogoutHandler(); logoutHandler.logout(request, response, authentication); // 로그아웃 요청을 위한 Keycloak 로그아웃 URL String logoutUrl = "http://localhost:8080/realms/oauth2/protocol/openid-connect/logout"; // 로그아웃 후 리디렉션할 URI String redirectUri = "http://localhost:8081/login"; // 로그아웃 후 돌아올 URL // 실제 ID Token을 가져오는 코드 // 로그아웃 URL에 필요한 파라미터들을 추가 String logoutRequestUrl = logoutUrl + "?id_token_hint=" + idTokenHint + "&post_logout_redirect_uri=" + redirectUri; // 로그아웃 요청을 Keycloak으로 리디렉션 return "redirect:" + logoutRequestUrl; } 이런식으로 강제로 형식 만들려고 해도 mvc 에서 id_token을 참조할 수 있는 방법이없습니다 . 디버깅으로 확인해보니 scope 에 openId 를 추가해서 id_token이 있을거라고 생각했는데 OAuth2AuthorizationCodeGrantFilter의 OAuth2AuthorizationCodeGrantFilter에서 authenticationResult 에 additionalParameters = {HashMap@7785} size = 4 "id_token" -> "ㅁㄴㅇㄹㄴㅇㅁㄻㄴㅇㅁㄴㅇㄹ" "session_state" -> "7a3b7dbb-ec62-4a07-8ef8-f67b17b2f3ac" "refresh_expires_in" -> {Integer@7818} 1800 "not-before-policy" -> {Integer@7820} 1746349855 이런식으로 있긴하지만 사용하지않고 authenticationResult로부터 authenticationResult.getClientRegistration() 추출해서 OAuth2AuthorizedClient 만들어서 저장하고 끝내내요 private void processAuthorizationResponse(HttpServletRequest request, HttpServletResponse response) throws IOException { OAuth2AuthorizationRequest authorizationRequest = this.authorizationRequestRepository.removeAuthorizationRequest(request, response); String registrationId = (String)authorizationRequest.getAttribute("registration_id"); ClientRegistration clientRegistration = this.clientRegistrationRepository.findByRegistrationId(registrationId); MultiValueMap<String, String> params = OAuth2AuthorizationResponseUtils.toMultiMap(request.getParameterMap()); String redirectUri = UrlUtils.buildFullRequestUrl(request); OAuth2AuthorizationResponse authorizationResponse = OAuth2AuthorizationResponseUtils.convert(params, redirectUri); OAuth2AuthorizationCodeAuthenticationToken authenticationRequest = new OAuth2AuthorizationCodeAuthenticationToken(clientRegistration, new OAuth2AuthorizationExchange(authorizationRequest, authorizationResponse)); authenticationRequest.setDetails(this.authenticationDetailsSource.buildDetails(request)); OAuth2AuthorizationCodeAuthenticationToken authenticationResult; try { authenticationResult = (OAuth2AuthorizationCodeAuthenticationToken)this.authenticationManager.authenticate(authenticationRequest); } catch (OAuth2AuthorizationException var16) { OAuth2AuthorizationException ex = var16; OAuth2Error error = ex.getError(); UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromUriString(authorizationRequest.getRedirectUri()).queryParam("error", new Object[]{error.getErrorCode()}); if (StringUtils.hasLength(error.getDescription())) { uriBuilder.queryParam("error_description", new Object[]{error.getDescription()}); } if (StringUtils.hasLength(error.getUri())) { uriBuilder.queryParam("error_uri", new Object[]{error.getUri()}); } this.redirectStrategy.sendRedirect(request, response, uriBuilder.build().encode().toString()); return; } Authentication currentAuthentication = this.securityContextHolderStrategy.getContext().getAuthentication(); String principalName = currentAuthentication != null ? currentAuthentication.getName() : "anonymousUser"; OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(authenticationResult.getClientRegistration(), principalName, authenticationResult.getAccessToken(), authenticationResult.getRefreshToken()); this.authorizedClientRepository.saveAuthorizedClient(authorizedClient, currentAuthentication, request, response); String redirectUrl = authorizationRequest.getRedirectUri(); SavedRequest savedRequest = this.requestCache.getRequest(request, response); if (savedRequest != null) { redirectUrl = savedRequest.getRedirectUrl(); this.requestCache.removeRequest(request, response); } this.redirectStrategy.sendRedirect(request, response, redirectUrl); } 질문 2 : 강의(OAuth2AuthorizedClient 이해 및 활용)에서는 OAuth2User를 만들어 OAuth2AuthenticationToken 을 저장하는 식으로 처리하셨는데 수업을 듣다 보니 이렇게 처리한 이유가 궁금해 질문 드립니다 .

  • java
  • spring
  • spring-boot
  • oauth
kkkkkk 댓글 1 좋아요 0 조회수 223

OrderService의 .cancel() 메서드에 대해 질문드립니다.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 이 부분 관련해서 반복적으로 학습중인데 이해가 잘 되지 않아 질문드립니다! /* 취소 */ @Transactional public void cancelOrder(Long orderId) { //주문 엔티티 조회 Order order = orderRepository.findOne(orderId); //주문취소 order.cancel(); } 이 부분에서 orderId "주문 PK" 를 인자로 받아 주문에 대한 데이터 order 를 조회해왔습니다. 그다음 order.cancel(); 메서드를 호출하는데 해당 메서드에는 파라미터로 아무것도 넣지 않았습니다. //==비즈니스 로직==// /** * 주문 취소 */ public void cancel(){ if (delivery.getStatus() == DeliveryStatus.COMP) { throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEL); for (OrderItem orderItem : orderItems) { orderItem.cancel(); } } 그 다음 위의 Order 엔티티의 cancel 메서드가 호출이 되는데 예외처리 부분을 지나 이제 "해당 주문에 포함된(저장된) 주문품목(OrderItem) 의 addStock() 하는 메서드까지 연결이 됩니다. OrderService > Order > OrderItem > Item 까지의 순차적인 cancel 및 addStock() 메서드까지 실행이 완료되면 OrderService의 cancelOrder메서드의 트랜잭션이 종료가 되어 flush가 발생/DB 쿼리가 날라감 까지 제가 이해를 하고 있습니다. 혹시 틀린 부분이 있다면 말씀부탁드리겠습니다! 가장 헷갈리는 부분이 이건데, Order order.cancel() 이 부분에서 order 라는 Order 엔티티 객체에 바로 cancel() 메서드를 사용했는데 /** * 주문 취소 */ public void cancel(){ if (delivery.getStatus() == DeliveryStatus.COMP) { throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEL); for (OrderItem orderItem : orderItems) { orderItem.cancel(); } }조회한 데이터는 Order 뿐인데 다음 코드가 delivery.getStatus() 입니다. 갑자기 delivery가 어디서 나온건지.. 모르겠습니다. 예외처리가 끝나면 나오는 orderItem 또한 갑자기 무슨 데이터를 가지고 반복문을 돌리는지 모르겠습니다. 제 짧은 지식의 추측상 예외처리시에 delivery.getStatus() 는 Order엔티티와 1:1 관계이기에 delivery가 사용하게 될 때 지연로딩을 이용하여 delivery 데이터를 조회하여 사용하고 OrderItem 또한 Order와 일대다관계이기에 for (OrderItem orderItem : orderItems) { orderItem.cancel(); } 이렇게 사용될 때 지연로딩을 이용하여 Order pk를 가진 OrderItem 의 데이터를 가지고와 반복문을 돌리게 되는건가요?? 너무 헷갈리네요.. 제가 이해하고 있는게 맞나요?

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

내장함수 관련 질문

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요, 강의 中 내장 함수 관련한 내용을 보고서 아래와 같이 실습해보니 listbox = [2,4,6,8,10]을 기준으로 sum을 하면 정상적으로 30이 실행되지만, 물리적으로 모든 원소를 더해준 값을 프린트 한 값과의 비교는 다르다 뜹니다. 파이썬 비교 연산자(혹은 모든 연산자)들은 자료형을 기준으로 출력이 되나요? [실습]

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
choeun8219 댓글 2 좋아요 0 조회수 115

인기 태그

인프런 TOP Writers

주간 인기글