강의 섹션4. 데이터베이스를 지배하라. 챕터에서 아래는 JPA 방식으로 일대다 관계를 가진 데이터를 페치 조인으로 가져오는 예제 코드야. returnnew JpaCursorItemReaderBuilder <Post>() .name( "postBlockReader" ) .entityManagerFactory(entityManagerFactory) .queryString( """ SELECT p FROM Post p JOIN FETCH p.reports r WHERE r.reportedAt >= :startDateTime AND r.reportedAt < :endDateTime """ ) .parameterValues(Map.of( "startDateTime" , startDateTime, "endDateTime" , endDateTime )) .build(); 근데 jdbc 커서 예제에서는 킬구형이 아래처럼 단일 테이블만 조회하는 예제를 사용했어. @Bean public JdbcCursorItemReader < Victim > terminatedVictimReader () { returnnew JdbcCursorItemReaderBuilder<Victim>() .name( "terminatedVictimReader" ) .dataSource(dataSource) .sql( "SELECT * FROM victims WHERE status = ? AND terminated_at <= ?" ) .queryArguments(List.of( "TERMINATED" , LocalDateTime.now ())) .beanRowMapper(Victim. class ) .build(); } 근데 내가 지금 하려고 하는 건 jdbc 커서 방식에서 일대다 관계 테이블 데이터를 조회해서 일일정산 데이터 만드는 기능으로 복습해보려고 하는데, 데이터가 뻥튀기 되서 강의 예제에서 해당 케이스를 찾아보려고 하는데, 못 찾아서 질문글 작성했어. jdbc 방식으로 일대다 관계 데이터를 Reader로 읽어와서 위에 jpa 구조로 매핑하려면 어떻게 해야하는지 알려줄 수 있어? @Bean @StepScope public JdbcCursorItemReader<OrderBatchJoinDto> jdbcCursorReader( @Value("#{jobParameters['orderDate']}") LocalDate orderDate) { LocalDateTime startOrderDate = orderDate.atStartOfDay(); LocalDateTime endOrderDate = orderDate.atTime(23, 59, 59); return new JdbcCursorItemReaderBuilder<OrderBatchJoinDto>() .name("jdbcCursorReader") .dataSource(dataSource) .sql(""" SELECT ob.ORDERS_BATCH_ID, ob.USER_ID, ob.STATUS, ob.ORDER_DATE_TIME, oib.ORDERS_ITEM_BATCH_ID, oib.ORDERS_BATCH_ID, oib.PRODUCT_BATCH_ID, oib.PRODUCT_NAME, oib.PRICE, oib.QUANTITY FROM orders_batch ob LEFT JOIN orders_item_batch oib ON ob.ORDERS_BATCH_ID = oib.ORDERS_BATCH_ID WHERE ob.ORDER_DATE_TIME BETWEEN ? AND ? ORDER BY ob.ORDERS_BATCH_ID, oib.ORDERS_ITEM_BATCH_ID """) .queryArguments(List.of(startOrderDate, endOrderDate)) .beanRowMapper(OrderBatchJoinDto.class) } public class OrderItemBatchDto { private Long id; private Long ordersBatchId; private Long productBatchId; private String productName; private int price; private int quantity; } public class OrderItemBatchDto { private Long id; private Long ordersBatchId; private Long productBatchId; private String productName; private int price; private int quantity; }
이정환 쌤 강의는 무조건 다 듣는 프론트 개발자 학생입니다. 근데, 궁금한점이 있어 질문드려요. 리액트 강의부터 하시고, 그다음 Next.js 강의 하시고, 다시 리액트로 이번에 강의를 하시는데, 저는 이정환 쌤 Next.js 강의를 듣고 난 후에는 리액트로는 개발을 안하고 Next.js로만 개발했거든요. 다시 리액트로 돌아간 이유에 대해 궁금해서 질문드립니다. Next.js 말고 리액트를 선택한 이유가 있을까요? Next.js에 어떤 이슈가 있는걸까요?
Q. SQL 로 미리 테이블 작성하거나 인덱스 설정을 SQL 로 직접하는데 이유가 궁금합니다 인덱스 같은경우 jpa 에서 쓸수있는 옵션이 제한적이라 따로 SQL 로 관리한다고 듣긴했는데 테이블도 실제로 SQL 에서 하는지 궁금하고, SQL 로만 테이블 생성 인덱스 관리를 할경우 현업에서는 어떤 db 마이그레이션 라이브러리를 주로 사용하는지도 궁금합니다. Q. 참조관계를 DB 에서 걸지않고 논리적으로만 걸었을때 참조테이블에대한 조인은 어떤식으로 하는지 궁금합니다. MSA 기준으론 데이터베이스가 아예 분리될텐데 어떤식으로 조인하나요? 추가적으로 논리적으로 참조설계가 된 상황에서 @ManyToOne 사용이 가능한지궁급합니다. 예를들면 Comment 엔티티에서 parentCommentId 같은 같은 데이터베이스에 있는 테이블에 @ManyToOne 적용이 가능한지궁급합니다.
안녕하세요! 강의를 모두 학습하고, 실습도 진행하면서 오케스트레이션 방식을 적용해보고 있는데 궁금한 점이 있어 질문드립니다. 현재 실습 환경에서는 service_1 이 단일 진입점 역할을 하면서 Account 관련 로직까지 함께 처리하고 있습니다. 그런데 실무에서는 이 두 역할을 분리하는 것이 맞는지 고민되고 있습니다. 제가 생각하기로는, 명확한 Orchestrator 서비스가 존재하지 않으면 각 서비스가 상황에 따라 오케스트레이션 역할을 맡게 되고, 시간이 지나면서 구조가 복잡해지고 유지보수에 많이 불리할 것 같습니다. 그래서 실제 운영 환경에서는 다음과 같은 구조가 더 적절한지 여쭙고 싶습니다. orchestration-service → account-service → ... 즉, 오케스트레이션만 담당하는 서비스를 별도로 두고, 각 도메인 서비스는 자신의 책임만 수행하도록 설계하는 것이 맞을까요? 좋은 강의 감사합니다! 많이 배우고 있습니다!
안녕하세요 좋은 강의 감사드립니다. 강의에서 이해가 안되는 부분이 생겨 질문드립니다. 2.4 답변을 검증하는 self rag 에서, hallucination을 판단하는 부분에 대한 질문입니다. node가 hallucination을 잘 판단하지 못하자, 강의에서는 크게 3가지 조치를 취하셨는데요 hallucination prompt 직접 작성 hallucination_llm의 temperature = 0 으로 설정 generate_llm의 max_completion_tokens를 100, 50 으로 감소 근데 저는 강의대로 따라해도, 계속 hallucinated, not hallucinated가 번갈아가면서 나오더라고요. max_completion_tokens을 100 --> 70, 50으로 감소시켜도, test하는 셀을 여러번 돌리면 hallucinated, not hallucinated가 번갈아가면서 나옵니다. 답변 내용을 보면, 저의 answer는 5천만원에 대한 소득세를 624만원으로 잘 계산을 하는데 check_hallucination만 판단을 잘 못하는것 같았습니다. 답변을 "소득세는 624만원입니다." 이런 식으로만 짧게 대답을 하다보니, hallucination에 대한 판단을 잘 못하는것 같다는 느낌을 받았습니다. 그래서 chatgpt의 도움을 받아서 아래와 같이 수정을 하니 hallucination에 대한 판단은 일관되게 not hallucinated로 판단하더라고요. generate_llm의 max_completion_tokens를 200, 300 정도로 증가 generate_prompt를 직접 작성하면서, 작성할때 답변에 대한 근거 도 같이 제시하라고 지시 아마도 답변에 대한 근거가 같이 제시되면서 hallucination에 대한 판단에 도움을 준 것 같습니다. 그런데 문제가 있습니다 ㅠ 소득세 계산을 잘 못합니다. 수업 코드로 하면 소득세 계산은 624만원으로 매번 잘 계산을 하지만, 이렇게 바꾸는 경우 소득세 계산이 맞을때도 있고 틀릴때도 있습니다. 그럼 현실에서는 max_completion_tokens 을 150, 100 이렇게 조절해가면서 중간의 타협점?을 찾는 것이 방법인지요? 아니면 제 방법이 틀린 것인지, 다른 방법이 있는 것인지 코멘트 해주시면 감사하겠습니다.
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요! 마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요. 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요. 편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~ 자바 코테 바이블 같은 경우에는 문제를 직접 풀어볼 수 있는 사이트를 제공하던데, 현재 강의에서 문제를 직접 풀어보려면 강의에 나오는 문제를 보고 개인적으로 풀어보는 방법밖에 없나요?
spring-boot 버전 4.0.0 으로 프로젝트를 생성하면 어플리케이션 구동 시 아래와 같은 오류가 발생합니다. (현재 2025-12-08) 3.x 버전으로 내리면 발생하지 않으니 참고해주세요. 2025-12-08T18:40:05.881+09:00 INFO 2496 --- [splearn] [ main] .s.b.d.c.l.DockerComposeLifecycleManager : Using Docker Compose file /Users/coffeenjava/work/study/splearn/compose.yaml 2025-12-08T18:40:06.285+09:00 ERROR 2496 --- [splearn] [ main] o.s.boot.SpringApplication : Application run failed tools.jackson.core.exc.StreamReadException: Unexpected character ('\' (code 92)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false') at [Source: REDACTED StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION disabled); byte offset: #UNKNOWN] at tools.jackson.core.JsonParser._constructReadException(JsonParser.java:1800) ~[jackson-core-3.0.2.jar:3.0.2]
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 10분00초에서 클래스레벨에서 테스트, save와 findByName을 각각 테스트 하는 것을 보여주셨는데 저는 클래스를 테스트 할 때는 둘다 정상적으로 완료가 되는데, 이상하게 하나씩 테스트를 하면 아래의 에러가 납니다 Exception in thread "main" java.lang.NoSuchMethodError: 'java.lang.String org.junit.platform.engine.discovery.MethodSelector.getMethodParameterTypes()' at com.intellij.junit5.JUnit5TestRunnerUtil.loadMethodByReflection(JUnit5TestRunnerUtil.java:127) at com.intellij.junit5.JUnit5TestRunnerUtil.buildRequest(JUnit5TestRunnerUtil.java:102) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:43) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
안녕하세요 강의 잘 듣고 이력서 작성중인 신입 개발자입니다. 제목과 마찬가지로 개발과 상관없는 이력의 경우 쓰는게 좋은가요? 인턴이 끝나고 몇개월정도 개발과 상관없는 서비스직을 했었는데 공백기를 설명하기 위해 적는게 좋을까요? 아니면 따로 적진않고 공백기를 물어보면 그때 답하는게 좋을까요?
안녕하세요. 강의 잘 들었습니다. 덕분에 포트폴리오 작성 방향을 잡는 데 많은 도움을 받았습니다. 데이터 사이언티스 포트폴리오 작성과 관련해 몇 가지 질문을 드리고 싶습니다. 프로젝트 대신 논문을 작성해도 괜찮을까요? 석사 과정 동안 프로젝트는 수행한 게 없고 논문만 작성하였습니다. (논문 1개 게재완료, 1개는 하위논문) 이 경우에는 기존 모델 대비 정확도 개선 등 구체적인 수치 기반 성과로 작성하면 적절할까요? 학부 시절 프로젝트가 워드클라우드, 기본적인 시각화 수준이라 프로젝트라고 하기에는 애매합니다. 굉장히 기초적인 데이터 분석이었는데 이런 것도 작성해야할까요? 취업 준비 기간 동안 캐글/데이콘 등 대회 참여, 혹은 백준 알고리즘 티어 상승 등 .. 중 어떤 활동이 데이터 사이언스 포트폴리오에 더 효과적인지 궁금합니다. 이외에도 데이터 사이언티스트 직무 포트폴리오에서 강조해야할 부분이 있다면 말씀해주시면 감사하겠습니다!
강의 잘 듣고 있습니다. 현재 문서를 읽어 agent로 구현하는 학습까지 완료했는데요(17강) gpt 4.0을 활용하여 agent를 구현해 질문을 하는 것과, chatgpt 웹을 켜서 문서를 올려 질문하는 것에 어떤 차이가 있나요? 보안의 차이나 프롬프트를 잘쓰면 성능이 웹gpt보다 좋아지나요? 주어진 서비스를 사용하지 않고 이걸 구현해야하는지가 명확하게 이해가 안되서요. 감사합니다.