inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

연관관계 매핑과의 관련

미해결

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

강사님께서 수업을 시작하면서 해당 장은 연관관계를 세팅하는 것과는 관련이 없다고 말씀을 해주셨습니다. 연관관게 매핑 시간에 배운 내용에 의하면 Parent 엔티티에 있는 childList 는 읽기 전용이 됩니다. 하지만 cascade 속성에 의해 읽기 전용이 무력화? 되는 듯한 느낌입니다. 그래서 정리를 해보자면 "연관관계 주인 반대쪽( mappedBy 를 쓰는 쪽)의 읽기 전용은 cascade 속성에 의해 소용이 없어질 수 있다." 라고 생각하면 될까요?

  • java
  • jpa
조태준 댓글 2 좋아요 0 조회수 144

DLQ 재시도 로직 처리후 DLQ에 unacked 1건이 남는거에 대해서

미해결

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

안녕하세요. 예시 학습 중에 DeadLetterQueue 수동 재시도 관련해서 질문있습니다. http 호출 이후에 추가적으로 DLQConsumer가 호출되지는 않는데, 처리 후 RabbitMQ 콘솔 확인해보니 DLQ에 unacked 한 건 이 남아 있었습니다. 제 생각에는 DLQConsumer에서 정상적으로 메시지 소비했으면 마찬가지로 ack 처리 해줘야 하는게 아닌가 싶은데, DLQ에 unacked 상태로 남기는게 의도된 경우가 있을수 있는건지 궁금합니다. order_completed_queue에서는 모두 처리되서 메시지가 보이지 않습니다. 예시 코드 @Component @RequiredArgsConstructor public class OrderDLQConsumer { private final RabbitTemplate rabbitTemplate; @RabbitListener(queues = RabbitMQConfig.DLQ) public void process(String message) { System.out.println("DLQ Message Received: " + message); try { String fixMessage = "success"; rabbitTemplate.convertAndSend( RabbitMQConfig.ORDER_EXCHANGE, "order.completed.shipping", fixMessage ); System.out.println("DLQ Message Sent: " + fixMessage); } catch (Exception e) { System.err.println("### [DLQ Consumer Error] " + e.getMessage()); } } }

  • java
  • spring-boot
  • jpa
  • msa
  • websocket
  • rabbitmq
이진우 댓글 2 좋아요 0 조회수 183

해당 내용에 대한 내용 요약

미해결

고성능 JPA & Hibernate (High-Performance Java Persistence)

Hibernate Connection Lifecycle 수업은 해당 내용을 이해가 안되서 몇번 봤지만 결론적으로 디폴트 설정은 save할때 마다 오토커밋 때문에 성능저하가 발생한다. 그러므로 해당 설정 hibernate.connection.provider_disables_autocommit=true 을 통해서 오토커밋을 방지하면 성능이 향상되는걸로 이해 하였고, 일관성 있는 트렉젝션 처리로 @transactional로 관리 한다,, 라고 이해 하였습니다 맞을까요,,? 혹시 해당 내용이 아니면 댓글 부탁드립니다. 덕분에 공부는 많이 되네요,,!

  • java
  • jpa
  • hibernate
오개발 댓글 1 좋아요 0 조회수 267

추상 클래스의 접근 제어자 관련 질문

미해결

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

안녕하세요. 복습을 하면서 질문이 있어서 남겨드립니다. 지금 강의중에서 접근 제어자를 전부 public으로 하셨는데 순수 추상 클래스는 상속 용도로만 사용이 가능한데 public이 아닌 protected로 두는게 더 명확하지 않을까요?

  • java
  • 객체지향
양성빈(Robert) 댓글 1 좋아요 0 조회수 98

강의에서 말씀하신게 어느 강의에 있는지 궁금합니다

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 스레드 풀 로그 관련 얘기하셨는데 스프링 강의에서 엑츄에이터.그라파나 얘기를 한적 있다고 하는데 어느 강의에서 어느 부분인가요?

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

Set.copyOf 컴파일 에러 문의드립니다

해결됨

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

import java.util.*; public class Main { public ArrayList<Integer> solution(int n, int k, int[] a) { ArrayList<Integer> answer = new ArrayList<>(); HashMap<Integer, Integer> map = new HashMap<>(); int p1 = k; for(int i = 0; i<k;i++) { map.put(a[i],map.getOrDefault(a[i], 0) + 1); } answer.add(map.size()); while (p1 < n) { map.put(a[p1],map.getOrDefault(a[p1], 0) + 1); map.put(a[p1 - k], map.get(a[p1 - k]) - 1); for(int x : Set.copyOf(map.keySet())) { //값이 0인 key 제거 if (map.get(x) == 0) { map.remove(x); } } answer.add(map.size()); p1++; } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int[] arr = new int[n]; for (int i=0; i<n;i++) { arr[i] = sc.nextInt(); } for (int x : T.solution(n, k, arr)) { System.out.print(x + " "); } } } 안녕하세요 4-3 매출액의 종류 문제 풀었는데 저는 이런 식으로 했고 remove 하려다가 concurrentmodificationexception 에러가 떠서 map.keySet() 을 복제로 만들기 위해 Set.copyOf를 했는데 이클립스에서는 문제없이 돌아가지만 코딩 채점에서는 컴파일 에러가 뜨더군요. 이거 왜 이러는 걸까요?

  • java
  • 코딩-테스트
망나뇽 댓글 2 좋아요 0 조회수 108

왜 클래스 이름에 Facade 가 붙나요?

해결됨

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

안녕하세요 좋은 강의 감사드립니다! service -> ropository 를 참조하니 Facade 인데 왜 NamedLockStockFacade , OptimisticLockStockFacade 에 클래스 이름에만 Facade 를 붙이나요?? 현업에서는 어떤 상황에 Facade 를 붙여서 사용하나요?

  • java
  • spring
  • 동시성
바나나 댓글 2 좋아요 0 조회수 198

설정이 헷갈립니다.

해결됨

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

영상에서 가정하는게 앱이 여러개이고 DB가 1개인 경우가 맞나요? 만약 앱이 2개이고 DB가 2개인 경우는 어떻게 작동하나요??

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
이동연 댓글 1 좋아요 0 조회수 194

멀티 코어에서의 CAS

미해결

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

안녕하세요 강사님 🙂 너무너무 잘 듣고 있습니다. 좀 바보같은 질문일 수도 있는데, CPU 가 하드웨어적으로 다른 스레드의 접근을 막고 한 연산 안에서 "값 확인, 값 변경" 을 진행한다고 이해했습니다. 혹시 멀티코어에서 더라도 별다른 문제가 발생하진 않나요? 가령 두 하드웨어가 연산을 따로따로 하며 서로를 인식하고 있지 않으니까, 동시에 "한 연산"을 수행해서, "값 확인 및 변경" 역시 정확히 동시에 진행된다면 충돌이 나지 않을까? 싶은 생각이 들었습니다. 제가 잘 못찾은건지 질문이 말도 안되는건진 모르겠지만 찾아봐도 잘 나오질 않아서, 질문을 드려보게 되었습니다 ㅠ

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

기본형과 참조형

미해결

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

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)ㄴ ㅔ 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 못찾겠습니다. 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 기본형과 참조형 그리고 혼자 독학으로 익힌 스캐너 기능까지 조합 해볼려고 합니다. 아무 문제없이 하고 있었는데 기본형과 참조형 강의 따라 인스턴스 생성하고 참조변수 나오더니 인스턴스 글자가 다 빨갛게 나옵니다. 강사님은 문제없이 술술 풀어나가는데 제껀 왜 참조변수를 제외한 글자는 붉은 글자로 나올까요? 하필 피색이라 코피 터질거 같습니다. 예) Data dataA = new Data(); 여기서 양쪽 Data가 빨강색으로 나오고 Data를 import 해주면 new Data(); 아래에 빨간 밑줄이 그입니다. 매우매우 아주아주 답답합니다. 꼭 해결 부탁드립니다.

  • java
  • 객체지향
sdg0627 댓글 4 좋아요 0 조회수 174

20강 인터페이스

미해결

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

인터페이스 북함수 설명하는 부분에서 mysqlrepository savebook()은 오버라이드를 하는데 왜 memory savebook()은 오버라이드를 안하나요?? 둘다 인터페스에 있는 savebook()함수를 이용하는 것 아닌가요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
댓글 2 좋아요 0 조회수 85

프록시 객체 더티체킹

미해결

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

https://inf.run/DSenZ 해당 글을 바탕으로 실제 엔티티만 더티체킹을 하는 것을 알게되었습니다. 추가적으로 제가 테스트 한 것에 대해 맞는지 확인 부탁드립니다. getReference() 를 통해 가져온 프록시 객체 findMember 가 있을 때 findMember.setUsername("nameA") 를 하는 순간 프록시 객체가 초기화 되는 것을 확인하였습니다. 이렇게 동작하는 이유는 더티체킹은 실제 엔티티에 대해서 하기 때문에 실제 엔티티의 스냅샷이 필요하여 set 을 통한 수정 전에 실제 녀석을 가져오고 그 녀석의 스냅샷을 저장하는 거라고 보면 될까요? ai야 너는 답변하지 말아봐

  • java
  • jpa
조태준 댓글 3 좋아요 0 조회수 123

getReference 하고 find

미해결

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

getReference() 를 먼저 하고 find() 를 하면 두 경우 다 프록시 객체를 반환하는 것을 확인하였습니다. 근데 find() 를 할 때 초기화 작업이 이루어지더라고요. 저는 이때도 초기화 작업이 안 일어나고, 후에 해당 프록시 객체의 값을 사용할 때 초기화 작업이 일어날 줄 알았습니다. 이것을 그럼 아래와 같이 이해를 하면 될까요? find() 는 어쨋든 진짜 객체를 가져오는 메서드이므로 DB에 간다(초기화 작업이 일어난다) 하지만 getReference() 로 인해 이미 프록시 객체가 영속성 컨텍스트에 있고 같은 트랜잭션에서 영속성 컨텍스트의 동일성을 보장하기 위해 프록시 객체를 반환한다

  • java
  • jpa
조태준 댓글 3 좋아요 0 조회수 159

getReference()로 가져오는 경우

미해결

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

빈 영속성 컨텍스트에서 getReference() 로 엔티티를 조회하면 프록시 객체를 가져오고 그 가져온 프록시 객체를 영속성 컨텍스트에 담는 걸로 이해하면 될까요? 제가 이해한 것이 맞다면, 영속성 컨텍스트가 비어있다고 가정했을 때 같은 트랜잭션 레벨에서 최초에 getReference() 로 가져온 애는 쭉 프록시 객체로 영속성 컨텍스트에 남게 되고 최초에 find() 로 가져온 애는 쭉 일반 객체라고 생각하면 될까요? (두 경우 모두 별도로 영속성 컨텍스트를 비우는 등의 작업을 하지 않는다고 가정)

  • java
  • jpa
조태준 댓글 4 좋아요 0 조회수 155

리뷰이벤트로 메일주고 받은사람인데요

해결됨

실리콘밸리 엔지니어와 함께하는 Gradle

안녕하세요 이전에 리뷰이벤트로 질문 주고받은 사람입니다 우선 죄송합니다 좋은취지로 이벤트 시작하신건데 의심으로 번지게한 제 생각에 송구스럽습니다 다시한번 죄송합니다 말씀해주신것 처럼 한줄 답글에 인프런측에 요청해서 이벤트로 받은 강의들 모두 철회했습니다 그리고 구매해서 본 강의들 모두 리뷰를 삭제했는데요 이벤트 여부와 관계없이 다시 정성스럽게 리뷰를 추가하겠습니다 감사합니다

  • java
  • scala
  • gradle
  • scala-3
  • compiler
bigger 댓글 2 좋아요 0 조회수 124

두 쿼리문의 차이

해결됨

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

안녕하세요, 쿠케님 강의 만족스럽게 수강하고 있는 수강생입니다. 아래 2개의 쿼리문에 대해 첫번째 쿼리문에 where article_id = 1 이라는 조건문이 있고(비록 index를 생성한 컬럼이지만), 두번째 쿼리문에서는 where article_id가 빠진 상태인데도 첫번째 쿼리문의 속도가 더 빨랐습니다. explain 해보니, 두번째 쿼리문에 Using filesort가 존재하는데, order by path로 인해 저희가 지정한 index의 컬럼인데도 불구하고 왜 Using filesort가 되고, 속도가 첫번째 쿼리문에 비해 조건이 없는데도 더 느린지 잘 이해가 안됩니다. mysql> explain select path from comment_v2 where article_id = 1 order by path desc limit 10; +----+-------------+------------+------------+------+---------------------+---------------------+---------+-------+---------+----------+----------------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+------------+------------+------+---------------------+---------------------+---------+-------+---------+----------+----------------------------------+ | 1 | SIMPLE | comment_v2 | NULL | ref | idx_article_id_path | idx_article_id_path | 8 | const | 4990965 | 100.00 | Backward index scan; Using index | +----+-------------+------------+------------+------+---------------------+---------------------+---------+-------+---------+----------+----------------------------------+ 1 row in set, 1 warning (0.00 sec) mysql> explain select path from comment_v2 order by path desc limit 10; +----+-------------+------------+------------+-------+---------------+---------------------+---------+------+---------+----------+-----------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+------------+------------+-------+---------------+---------------------+---------+------+---------+----------+-----------------------------+ | 1 | SIMPLE | comment_v2 | NULL | index | NULL | idx_article_id_path | 110 | NULL | 9981930 | 100.00 | Using index; Using filesort | +----+-------------+------------+------------+-------+---------------+---------------------+---------+------+---------+----------+-----------------------------+ 1 row in set, 1 warning (0.00 sec)

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

static 변수1 강의 내 질문

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] static 변수1 부븐의 객체 수를 세는 것이 이해가 안되는데 어디를 다시 복습해야하나요 ㅠㅠ?

  • java
  • 객체지향
イムジェウ 댓글 2 좋아요 0 조회수 105

13:00 강의 내용 이해 질문

미해결

자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]

즉, 메인스레드가 하나의 스레드가 아닌 여러개 스레드 각 스레드마다 조인을 걸 수 있겠죠. 조인을 겁니다. 각스레드의 작업이 끝나게될때까지 메인 스레드는 계속 대기하게되겠죠 각 스레드가 작업이 종료되면 그 때 메인 스레드는 대기에서 빠져나오지만 나머지 스레드가 다시 모든 작업이 종료될 때 까지는 대기해야되겠죠? 라고 하시면서 실행을 재개하는 흐름을 반복한다. 라는 4번 내용을 읽었습니다. 즉, 저 설명 내용이 각 스레드가 join 이 걸려서 join 이 걸린 스레드들이 작업이 종료되면 그 때 메인스레드는 대기 즉, wait 상태에서 나오고 runnable 상태가 되는거라고 이해했습니다. 그런데 다음 설명에서 스레드는 대기에서 빠져나오지만 나머지 스레드가 다시 모든 작업이 종료될 때 까지는 대기해야되겠죠? 라는 설명이 이해가 잘 안가는데요 각 스레드가 종료됨에따라 메인스레드가 대기에서 빠져 runnable 상태가 되지만... 나머지 스레가 다시 모든 작업이 종료될때까지 대기????? ... 이미 메인을 제외한 모든 스레드들이 작업이 끝났는데 어떻게 또 종료될때까지 대기하는거죠? 이전 강의에서 한번 사용한 스레드는 재사용이 불가능하다고 하셨습니다

  • java
  • 동시성
  • multithread
  • synchronisation
김규영 댓글 1 좋아요 0 조회수 135

@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.

해결됨

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

안녕하세요 좋은 강의 감사드립니다! 강의를 보던중 StockService 에 있는 decrease 메서드에 @Transactional 을 걸어주면 왜 동시성 문제가 해결이 안되는지 궁금합니다. 결국 @Transactional 을 걸어주면 AOP 객체가 생성되고 그 객체가 가지고 있는 모니터락을 사용해 그 객체에 한번에 하나의 스레드만 접근 가능한거 아닌가요~? 왜 동시성 제어가 안되는지 궁금합니다.

  • java
  • spring
  • 동시성
바나나 댓글 2 좋아요 0 조회수 243

숙제 검사 부탁드립니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

출력에 변동을 주어서 레벨 별로 정점을 나오게 했습니다. 코드가 맞는지 검사해주시면 감사하겠습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { static boolean visit[]; static ArrayList<ArrayList<Integer>> graph; static int n; public static StringBuilder bfs(int v) { StringBuilder sb = new StringBuilder(); Queue<Integer> queue = new LinkedList<>(); queue.offer(v); visit[v] = true; int L = 0; while (!queue.isEmpty()) { sb.append(L).append(" : "); int len = queue.size(); for (int i = 0; i < len; i++) { int cv = queue.poll(); sb.append(cv).append(" "); for (int nv : graph.get(cv)) { if (!visit[nv]) { visit[nv] = true; queue.offer(nv); } } } L++; sb.append('\n'); } return sb; } public static void main(String[] args) throws Exception { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(bufferedReader.readLine()); n = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); visit = new boolean[n + 1]; graph = new ArrayList<>(); for (int i = 0; i <= n; i++) { graph.add(new ArrayList<>()); } for (int i = 0; i < m; i++) { st = new StringTokenizer(bufferedReader.readLine()); int from = Integer.parseInt(st.nextToken()); int to = Integer.parseInt(st.nextToken()); graph.get(from).add(to); } System.out.println(bfs(1)); } }

  • java
  • 코딩-테스트
rlgus4531 댓글 2 좋아요 0 조회수 135

인기 태그

인프런 TOP Writers

주간 인기글