inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

미해결

실전! 스프링 데이터 JPA

@PrePersist 가 있는 메서드는 영속성 컨텍스트에 엔티티를 저장할때 즉, save()나 persist() 호출 시점에 호출되는것인가요? 아니면 flush()이후에 INSERT쿼리가 실행되기 직전에 호출되는것인가요? @PreUpdate 가 있는 메서드는 엔티티의 변경 감지가 일어나고 트랜잭션 커밋 또는 em.flush()시점에 UPDATE쿼리가 실행되는데, 이 UPDATE쿼리가 실행되기 직전에 호출되는것이 맞을까요?

  • java
  • spring
  • spring-boot
  • jpa
오리쉐리 댓글 2 좋아요 0 조회수 127

xxx서비스와 xxx핸들러 의 구분 기준

해결됨

제미니의 개발실무 - 커머스 백엔드 기본편

안녕하세요! 궁금한점이 생겼는데요. 로직을 수행하는 객체중 어떤것은 xxx서비스 어떤것은 xxx핸들러또는매니저(컴포넌트) 등의 객체로 나눠지는데요. 이에 대한 기준이 있을까요? 컨트롤러가 호출하는 객체를 xxx서비스, 서비스가 호출하는 객체를 xxx핸들러또는매니저(컴포넌트)라고 보면 될까요? 그렇다면 컴포넌트는 특정 개념에서의 로직들이 응집되어있는 객체 라고 보면 될까요?

  • kotlin
  • spring-boot
  • 도메인
  • dbms/rdbms
  • backend
홍티즈 댓글 2 좋아요 1 조회수 130

주식거래와 같은 실시간 보장이 필요한 상황에서 SAGA 패턴 도입에 대한 문의

해결됨

카카오 면접관이 알려주는 MSA 관점에서의 분산 트랜잭션 패턴

안녕하세요! 과거에, MSA 학습용으로 모의 주식 투자 서비스(?)를 만들어본 사람입니다. 당시에, 주식 매수의 기능을, 2개의 service 로 운영했었고, 이때 각 요청의 순서는 이벤트 기반으로 처리하였습니다. client -> stock service -> kafka -> payment service(이벤트 구독) 이때, 특정 문제에 대한 트랜잭션 보장을, 보장 로직을 통해 구현하였었습니다. 이때, kafka pub/sub 이벤트를 동기적으로 처리되었는지 확인하도록 구성해놓았었습니다. 주식 거래와 같은 일관성이 매우 중요한 서비스에서 어떤 방향성이 더 올바른(?) 방향이라고 생각하고, 어떤 생각을 가지고 계신지 궁금합니다. 현재 생각으로는, 2pc 를 채택하는게 더 올바른 선택이었다고 생각이 듭니다.

  • java
  • spring
  • mysql
  • spring-boot
  • msa
BeakGwa 댓글 2 좋아요 0 조회수 124

메타데이터 관리

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

킬구형 메타데이터쪽 update를 읽다가 이해가 안가는게 있는데 형이 update() 메서드는 매 트랜잭션의 커밋 직전에 호출된다. 단, 처리 도중 예외가 발생하여 트랜잭션이 롤백되는 경우에는 호출되지 않는다. 이는 실패한 처리 내용이 실행 정보에 반영되는 것을 방지한다. 라고 했는데 그러면 문제가 생겨서 update를 호출하지 않고 롤백이 됬다고 하면 open입장에서는 실패했는지 안했는지도 모르는거아니야? 실패를 해도 마지막으로 저장된 곳부터 다시 시작하니까 실패를 아예 저장을 안한다는거야? 재시작할때 메타테이블에서 execution값을 받아와서 괜찮은건가?

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
ABBCD 댓글 2 좋아요 1 조회수 95

68강 ArrayEx6 클래스 질문

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 혹시 이 코드도 정답으로 인정되나요? package array.ex; import java.util.Scanner; public class ArrayEx6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("입력받을 숫자의 개수를 입력하세요:"); int n = sc.nextInt(); System.out.println(n + "개의 정수를 입력하세요:"); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for (int i = 0; i < n; i++) { max = Math.max(max, arr[i]); min = Math.min(min, arr[i]); } System.out.println("가장 작은 정수: " + min); System.out.println("가장 큰 정수: " + max); } }

  • java
lgh8079 댓글 1 좋아요 0 조회수 89

안녕하세요. 좋은 강의 감사합니다. 질문이 있습니다.

해결됨

포트폴리오 어나더레벨 | 합격하는 이력서 작성법

안녕하세요. 큰돌님 유튜브도 보고있고 최근 개발 소식도 자주 접하고 있습니다. 최근에는 새로 내신 강의도 구매하여 수강을 하였습니다. 여기서 질문이 있습니다. 강의에서 "배포가 되어있는게 좋다"는 말이 있습니다. 포트폴리오나 사이드 프로젝트를 할 때 "배포의 중요성"이 중요한지 아니면 대체를 할 수 있는지 생각을 듣고 습니다. 요즘은 많은 오픈소스를 사용하는 것으로 알고있습니다. 그중에는 kafka, elasticsearch, redis 더 나아가 debezium, flink같은 것도 많습니다. 물론 이러한 것들은 대규모 트래픽이 발생하거나 많은 정보가 있을 때 사용하면 좋은 효율을 내고 있습니다. 보통 사이드 프로젝트 더 나아가서는 스타트업이나 중소기업까지도 트래픽이 적다면 구지 사용을 하지 않고 유지를해도 문제가 없을 수 있는 인프라 구조도 될 수 있다고 생각합니다. 하지만 기업들은 이러한 것을 요구합니다. 여기서 질문이 이런 인프라들은 배포를 할려면 비용이 상당히 많이 발생하고 유지가 힘든것으로 알고있습니다. 강의에서 말씀하신 인스턴스 최소 두대 또한 계속 유지하기에는 비용이 계속 누적이 될거라고 생각합니다. 물론 배포를 해놓고 그걸 보여주면 아주 best이고 현재의 상태를 잘 보여주고 느낄 수 있다고 생각합니다. 그런데 배포라는게 중요한것인지 의문이 들어 질문드렸습니다. 경력직에서 이직을 할때도 경력서에 쓰는 프로젝트 대부분이 배포는 현재 되있지만 실제적으로 그런 부분을 신경을 쓰지 않는 것(못하는것)으로 알고있어요. 그리고 회사에서도 막상 큰 회사일 수록 많은 트래픽을 받고있지만 인프라가 좋아 그거에 대해서 체감을 못하고 올바르지 않은 방향으로 나갈 수 있고 효율적인거보다 기능구현이 우선순위로 높게 배정됬을 수 도 있을 것 같아요. 반대로 큰 회사나 적은 회사든 어드민 부서는 존재하고 어드민 부서는 코어 부서보다 적은 트래픽을 받는 것 으로 알고있습니다. 그러면 이 때는 어떻게 어필을 하면 좋을 지 고민입니다. 이거에 대한 큰돌님의 생각을 의견을 듣고싶어 질문을 올렸습니다. 감사합니다.

  • HTML/CSS
  • javascript
  • python
  • java
  • 포트폴리오
kth004 댓글 1 좋아요 0 조회수 104

상품 전체보기가 없습니다. 카테고리는 필수로 선택해야 합니다.

해결됨

제미니의 개발실무 - 커머스 백엔드 기본편

전체보기가 없는 상품들 목록이라면 카테고리 프로덕트로 설계하는 방향은 어떻게 생각하시는지요? 상품의 전체보기가 없습니다. A-Z까지 모든상품들은 카테고리로로 분류되어있고(=모든 상품들은 카테고리라는 꼬리표를 가집니다) 좌측 메뉴탭에서도 카테고리별로 구분이 되어있습니다. 해당 상품들을 모두 카테고리별로 선택의 상세보기에 해당상품들이 나열되도록 되어있습니다. 이러한 생각은 어떤지 한번 의견 듣고싶어요.

  • kotlin
  • spring-boot
  • 도메인
  • dbms/rdbms
  • backend
smaller 댓글 2 좋아요 1 조회수 110

2강 main.py 파일

미해결

graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)

from langchain_neo4j import Neo4jGraph from dotenv import load_dotenv import os #환경 변수 로드 load_dotenv() #neo4j 연결 설정 NEO4J_URI = os.getenv("NEO4J_URI") NEO4J_USERNAME = os.getenv("NEO4J_USERNAME") NEO4J_PASSWORD = os.getenv("NEO4J_PASSWORD") #그래프 객체 생성 graph = Neo4jGraph( url=NEO4J_URI, username=NEO4J_USERNAME, password=NEO4J_PASSWORD ) def main(): print("Hello from neo4j-graphrag!") if __name__ == "__main__": main()

  • dbms/rdbms
  • neo4j
  • llm
  • langchain
  • rag
  • 카카오공채-개발
Ohmmani Van Mehum 댓글 3 좋아요 0 조회수 129

MySQL 설치 질문 드립니다.

미해결

김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MySQL 설치 중인데, 스크린샷과 같이 중간에 4번째 항목 X표시 되면서 더 이상 설치가 안되네요.

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
Hailey 댓글 2 좋아요 0 조회수 247

h2데이터베이스 실행오류

미해결

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

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. h2.bat 을 실행하거나 cmd 들어가서 실행하면 실행까지는 되는데 콘솔이 안열립니다.

  • java
  • jpa
김영우 댓글 2 좋아요 0 조회수 138

강의자료가 다른거 같아요.

미해결

IT 필수 지식 - 데이터베이스(Database) 와 SQL

강의자료가 수업 내용과 다른거 같습니다.

  • sql
  • dbms/rdbms
정상기 댓글 2 좋아요 0 조회수 103

강의자료 확인 요청

미해결

IT 필수 지식 - 데이터베이스(Database) 와 SQL

안녕하세요, 좋은 강의 잘 듣고 있습니다. 다름이 아니라, 강의 자료가 본 강의와 무관한 것으로 올라가 있는 것 같습니다. 확인 한번 부탁드립니다!

  • sql
  • dbms/rdbms
담라 댓글 2 좋아요 0 조회수 98

@Transactional에 관해서 질문드립니다.

해결됨

제미니의 개발실무 - 커머스 백엔드 기본편

안녕하세요! 강의를 보던 중 ReviewService의 트랜잭션 처리에 대해 궁금한 점이 있어 질문드립니다. addReview 함수에서 리뷰를 저장하는 add()와 포인트를 적립하는 earn() 두개의 중요한 함수를 사용하고 있는데, 이는 각각 별도의 트랜잭션으로 처리되어 리뷰는 저장되고 포인트는 적립되지 않는 문제가 발생할 수 있을 것 같습니다. 현재 설계에서 addReview()에 @Transactional을 붙이지 않은 특별한 이유가 있으신지 궁금합니다. 혹은 만약 의도적으로 별도 트랜잭션으로 분리한 것이라면 그 이유가 궁금합니다. 항상 감사합니다.

  • kotlin
  • spring-boot
  • 도메인
  • dbms/rdbms
  • backend
우민수 댓글 3 좋아요 2 조회수 158

writeUTF 메서드로 생성된 파일 읽기

해결됨

모르면 야근하는 문자 인코딩 완전 정복

안녕하세요 강사님, 강의 잘 듣고있습니다 🙂 강의하신 내용중에 나온 Java의 modifiedUTF 메서드로 파일을 작성했을 경우, 만약 이 파일을 일반적인 utf-8 방식으로 읽으면, 길이 정보도 utf-8로 해석 되어 의도한 바와 다른 결과 값으로 읽히나요? 예를 들어 메모장 같은 것으로 열어 utf-8 로 인코딩을 바꿀 경우 원래 utf-8 에는 길이 정보가 없지만 writeUTF 로 작성한 파일에는 포함돼있으니 제대로 디코딩이 되지않을 것 같아서요.

  • java
  • mysql
  • utf-8
  • endian
  • us-ascii
  • 카카오공채-개발
5red 댓글 2 좋아요 0 조회수 84

'개념과 격벽' 을 실제 업무에 어떻게 사용하면 좋을까요?

해결됨

제미니의 개발실무 - 커머스 백엔드 기본편

안녕하세요, 제미니님. 유투브 및 인프런 강의 잘 시청하고 있습니다 :) 인프콘 2024에서 '지속 성장 가능한 설계를 만들어가는 방법' 이라는 주제로 발표해주신 내용이 무척 공감이 되었고, 제미니님 유투브를 찾아봤다가 강의까지 수강하게 되었습니다 이번 강의 내용은 아니지만 인프콘 영상에서 말씀해주신 개념인 '개념' 과 '격벽'을 구체적으로 실무에서 어떻게 사용하면 좋을지를 여쭤보고자 인프런 질문을 통해서 글을 올리게 되었습니다. 편의상 신규 프로젝트를 진행한다고 가정했을때, 요구사항을 분석하고 도메인을 구성하는 여러 '개념'들을 나열한다. 나열된 '개념'들의 급(1급, 2급, 3급 ..) 을 나눠보고 그룹화 하면서 '격벽'으로 분리한다. '격벽'으로 분리된 그룹이 어떤 개념을 통해서 연결될지 방화벽으로 동작할 개념을 생각해본다. 이는 개념간 무분별한 참조를 막기 위함이다. '개념'들과 '격벽'들을 기반으로 일단 코드로 구현부터 해본다. ('설계를 하지 말고 구현을 먼저' 하는 포인트는 이것) 구현하면서 또는 운영하면서 더 나누거나 신규로 추가할 개념이 있다면 반영한다. 결과적으로 설계를 하지 않고 구현을 먼저 하고, 구현 하는 과정이나 운영 하는 과정에서 최적화 시킨다. 이것이 곧 최적의 설계로 나아가는 방향이 된다. (질문) 제가 제미니님이 말씀하신 '개념'과 '격벽'을 잘 이해한 것이 맞을까요? 실무에서 위 흐름대로 적용하면 제미니님이 강조하신 내용에 기반한 작업이 될 수 있을까요? 실무에서 실제로 말씀해주신 내용을 적용해보고 싶은데 구체적으로 어떤식으로 적용하면 될 지 몰라서 제가 이해한 내용을 바탕으로 작성을 해보았습니다. 틀린 부분이 있다면 피드백을 부탁드리고 싶습니다 :) 긴 글 읽어주셔서 감사합니다~

  • kotlin
  • spring-boot
  • 도메인
  • dbms/rdbms
  • backend
jungkwon kim 댓글 2 좋아요 2 조회수 136

쿼리 질문있습니다!!

미해결

다양한 사례로 익히는 SQL 데이터 분석

select generate_series ( '2016-08-02' :: date , '2016-11-01' :: date , '1 day' :: interval ):: date as current_date ) 위의 쿼리로 series를 생성하신 이유가 select date_trunc ( 'day' , visit_stime ):: date as curr_date from ga_sess group by date_trunc ( 'day' , visit_stime ) ) 이 쿼리로 temp_00을 생성하면 11-01 일자의 dau를 구할수 없어서 인지 궁금합니다!

  • sql
  • postgresql
  • dbms/rdbms
  • 데이터-엔지니어링
  • data-analysis
하하하하히 댓글 2 좋아요 0 조회수 78

join 관련 질문 (inner join, left join)

미해결

데이터 분석 SQL Fundamentals

inner join과 left join에 대해서 이론적으로는 이해가 되는데 실제 테이블 관계 설정시 조인을 사용해야하는 상황에 대해서 아직 감이 잘 잡히지 않습니다. 강사님께서 조인을 선택해서 사용하실때 기준이 있을까요?? left join을 할시, 기준이 되는 테이블(부모 테이블) 붙이는 테이블(자식 테이블)로 이해를 했습니다. 부모테이블의 경우 집합레벨 1, 자식테이블 집합레벨 M으로 이해하는게 맞을까요??

  • sql
  • postgresql
  • dbms/rdbms
  • 데이터-엔지니어링
bbane7410 댓글 2 좋아요 1 조회수 120

방향성

해결됨

포트폴리오 어나더레벨 | 합격하는 이력서 작성법

아래 글에서 "3개월 동안 실력을 확실히 업그레이드하고 팀 프로젝트까지 완성해 부트캠프가 필요 없을 정도로 성장할 수 있다"는 조언을 보았습니다. 실제로 3개월이라는 기간 동안 어떤 방식으로 준비해야 그 수준까지 도달할 수 있을지 강사님의 의견을 듣고 싶습니다. 학습 방향, 프로젝트 수행 전략, 일정 관리 등의 측면에서 어떻게 접근하면 가장 효과적으로 성장할 수 있을지 구체적인 조언을 부탁드리고 싶습니다.

  • HTML/CSS
  • javascript
  • python
  • java
  • 포트폴리오
런런 댓글 1 좋아요 0 조회수 116

애플리케이션의 JPA 리턴과 도메인 모델

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요 토비님 강의 잘 수강하고 있습니다. 좋은 강의 감사드립니다. 저는 JPA엔티티를 도메인 모델로 사용하고 애플리케이션에서 이를 리턴하고 있습니다. 그런데 새로운 팀원 한명이 이렇게 이야기하더군요 이전에 마이바티스를 사용하다가 JPA가 나온거처럼 이를 대체하려면 코드변화가 필요할 것 입니다 사실 이것도 저는 맞는 말이라고 생각합니다. JPA 엔티티를 참조하는 모든 부분을 수정이 필요할 것 같습니다. 그럼에도 불구하고, 트레이드오프 관점에서 보면 현재 잘 사용하는 JPA엔티티를 그대로 사용하는게 더 효과적이라고 생각합니다. 여기서 궁금한게, 이렇게 새로운 데이터접근 기술이 나오게 되는 것까지 고려하는게 맞을까요? 어떠한 논리를 펼쳐서 JPA를 그대로 의존하는게 좋다고 이야기하는게 더 설득력이 있을까요?

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
ㅎㅇㅎㅇㅎㅇ 댓글 2 좋아요 0 조회수 164

2장. 작전2: 분산 서버 로그 처형 작전 Resource[]의 대체방안(읽어야할 내용이 매우 커지면?)

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

형님 안녕하십니까! 2장 작전2 내용 중에, collected_logs에 모아진 모든 로그파일 내용을 Resource[]에 담고, 이를 flatFileItemReader로 읽기를 위임하는 부분이 있습니다. 아래는 그 중 Resource[] 배열에 해당 로그 내용을 담는 부분입니다. private Resource[] getResources(String date) { try { //String userHome = System.getProperty("user.home"); String userHome = "C:/Users/gyrbs/OneDrive/Desktop"; String location = "file:" + userHome + "/collected_logs/" + date + "/*.log"; //경로 직접 주입이 아닌 Resolver를 통한 url구성은 백슬래쉬가 아닌 /로 해야 인식 PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); return resolver.getResources(location); } catch (IOException e) { throw new RuntimeException("Failed to resolve log files", e); } } 이에 대해서 gpt한테 몇가지를 물어보았는데, 먼저 배열에 읽어야할 내용을 담고 이를 filterReader로 읽는 과정이 Resource[] 배열에 읽어야할 모든 내용을 모두 저장하고, 이 저장한 내용을 reader가 받아서 청크지향처리라면 청크사이즈만큼 읽고 넘기고 아니면 지금과 같이 일괄적인 읽기를 진행하는 것으로 보였습니다. 그래서 만약에 읽어야할 내용이 매우 커지면 Resource[]라는 배열에 이 모든 내용을 넣기가 어려울 것이고, 강의에서 항상 강조해주시는 JVM무덤, 배치무덤이 되지않을까 하는 생각이 들었습니다. 그래서 이에 대한 방안을 gpt한테 한번 물어보았는데, public class StreamingMultiFileReader<T> extends AbstractItemStreamItemReader<T> { private Iterator<Path> fileIterator; private FlatFileItemReader<T> currentReader; private final Function<Path, FlatFileItemReader<T>> readerFactory; public StreamingMultiFileReader(Path dir, Function<Path, FlatFileItemReader<T>> readerFactory) throws IOException { this.fileIterator = Files.list(dir).iterator(); this.readerFactory = readerFactory; } @Override public T read() throws Exception { if (currentReader == null) { if (!fileIterator.hasNext()) { return null; // 모든 파일 처리 완료 } Path nextFile = fileIterator.next(); currentReader = readerFactory.apply(nextFile); currentReader.open(new ExecutionContext()); } T item = currentReader.read(); if (item == null) { // 파일 끝 currentReader.close(); currentReader = null; return read(); // 다음 파일로 넘어감 } return item; } } 이런 방법이 있다고 하는데(StreamingMultiFileReader로 deletegate 처리없이, 파일 하나하나씩 바로바로 처리해나가는 과정), 파일 하나하나씩 읽어들이면서 더이상의 파일이 없을때까지 순회하여 메모리부담은 없다고는 하였습니다. 혹시, 이 방법 말고도 청크지향처리를 이용해서 청크사이즈 만큼 파일, 혹은 파일 내부의 record를 읽고 넘기는, 그리고 이 과정을 모든 파일에 대해 순회하는 방식은 없을지 질문드려보고자 합니다! 실무에서 사용하는 방법이 궁금해서 질문드리게 되었습니다! 감사합니다.

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
Hyo Kyun Lee 댓글 3 좋아요 1 조회수 114

인기 태그

인프런 TOP Writers

주간 인기글