섹션 6 -2강
미해결
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
xml관련 설정 강의자료로 남겨주신다고 했는데 어디서 찾을 수 있나요?
- java
- spring
- spring-boot
- jpa
- 리팩터링
- ddd
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
xml관련 설정 강의자료로 남겨주신다고 했는데 어디서 찾을 수 있나요?
해결됨
김영한의 실전 자바 - 중급 2편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Stack의 메서드인 pop()과 Queue의 메서드인 poll()의 차이를 보니 stack이 비어있을 때 pop을 실행하면 NoSuchElementException 예외가 터지고, queue가 비어있을 때 poll을 실행하면 null이 반환되는데, 왜 이렇게 차이를 두고 설계를 한건지 궁금합니다.
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] build.gradle 이렇게 하면 되는건가요? 옆에 주석을 써봤는데 제가 이해한게 맞나요? plugins { id 'java' id 'org.springframework.boot' version '3.5.4' id 'io.spring.dependency-management' version '1.1.7' } group = 'hello' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' // 추가 여기부터 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.1' // SQL 쿼리를 로그로 찍어주는 라이브러리. 개발할 때 DB에서 어떤 쿼리가 실제로 나가는지 확인하기 위함. runtimeOnly 'com.h2database:h2' // H2 DB (인메모리 DB) 사용. 개발이나 테스트용으로 DB 서버 없이 DB를 돌릴 때 편리. // lombok 관련 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' // querydsl 추가 implementation 'com.querydsl:querydsl-jpa:9.8:jakarta' // QueryDSL JPA 핵심 라이브러리 annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" // 엔티티로부터 Q클래스 자동 생성 annotationProcessor "jakarta.annotation:jakarta.annotation-api" // 컴파일 시 필요한 annotationProcessor "jakarta.persistence:jakarta.persistence-api" // Jakarta EE API // 여기까지 // test lombok testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } // 중괄호 추가 testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } // 추가 clean { delete file('src/main/generated') }
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요. 강의 14분쯤에 말씀해 주신 dirty cheking에 대해서 질문드립니다. order.cancel(); 호출하면, Order의 status 변경되고, 이는 dirty cheking으로 인해 Order에 대해서 update 쿼리가 발생하고, orderitem.cancel()호출하면, Item의 stockQuantity가 변경되고, 이는 dirty checking으로 인해 Item에 대해서 update쿼리가 발생한다. 기본편 및 강의 내용에 대해서 생각해보다가 이렇게 생각했는데 이렇게 이해하는게 맞을까요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
25년도 기출해설은 언제볼수 있을까요??
미해결
김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 선생님 강의를 듣다가 똑같이 서버 실행 후 클라이언트 실행한 뒤에 클라이언트 강제 종료시 "Exception in thread "Thread-0" java.lang.RuntimeException: java.io .EOFException" EOFExcetion 오류가 아닌 "Exception in thread "Thread-0" java.lang.RuntimeException: java.net .SocketException: Connection reset" 이 뜨는데 왜 다르게 뜨는지 궁금해서 여쭤봅니다..! 코드는 강사님 코드와 동일합니다.
해결됨
Spring WebFlux + LLM 실전 구현
안녕하세요 일단 제가 생각은 컨트롤러에서 Mono 나 Flux 를 반환하고 webflux 가 이를 구독할 때 실행된다. 인데 어쨌든 구독하는 동작도 이벤트 루프 스레드가 하는 거라고 생각합니다. 그렇다면 구독에서부터 Mono 또는 Flux 실행까지 같은 이벤트 루프 스레드가 이어서 동작하는 건가요? 만약 제가 생각하는 게 맞다면 컨트롤러에서 수행하는 것과 구독후 수행하는 것의 순서만 다를 뿐 성능 차이를 모르겠는데 제가 어떤 부분을 잘못생각하고있는 걸까요? 개념이 잡히지 않아 질문이 좀 이상한 거 같아 죄송합니다.
해결됨
자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
안녕하세요. 플랫폼 타입 설명 중에서 라이브러리를 가져다 쓴 지점을 래핑해서 단일 지점으로 만듦으로써 이슈를 쉽게 대응한다는 게 어떤 말씀이신지 잘 이해나 상황이 그려지지 않아서.. 이게 어떤건지 예시를 통해 알려주실 수 있는지 궁금해서 질문을 남깁니다. '래핑해서 단일 지점으로 만든다'라는 개념과, 이렇게 만들면 이슈를 어떻게 왜 쉽게 대응할 수 있다는건지 이런 부분을 잘 모르겠습니다 ㅠㅠ
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 현재 강의 8분쯤, 회원가입 테스트 할때 "이미 존재하는 회원입니다"를 방지 하기 위해 delete from member; 이후에 정상 작동 되어야 하는데, 오류가 나는 상황입니다. 회원가입 테스트 함수 내에, join 함수 실행 후에, findOne(saveId) 에서 빈값으로 확인됩니다. saveId 의 경우엔 테스트 할때마다 시퀀스가 올라서 11, 12, ... 가 확인됩니다. select * from member; 시에 빈값이고, join(member)가 정상으로 됬기 떄문에 saveId값이 오르고 있는것 같은데, findOne에서 빈값이라고 하니 get()할 값이 없어서 오류가 나는것 같은데, 진도를 나가기 위해 어떻게 수정해야 할까요 ? join이 정상실행 됬다는 확인은 해당 소스 위 아래 sout "1" "2" 를 각각 붙였더니 정상 실행 되었고, findOne 위에 sout("3")까지 출력 됬지만, findOne 아래 sout("4")은 출력되지 않고 오류가 떴습니다. 그리고 오류를 찾아가기 위해, 확인하고 싶은 현 시점에 소스 상황입니다. MemberServcie 클래스에서 @Service 와 빈 주입을 위한 @Autowired 는 주석처리가 되어 있는데 맞을까요 ? 12분 짜리 강의를 위해 3시간째 ㅠㅠ 버벅이고 있습니다. 도와주세요 ㅠㅠ 혹시 제 질문이 부족했다면, 제가 답을 얻기위해 추가 질문이라도 부탁드립니다 ㅠㅠ
미해결
김영한의 실전 자바 - 중급 2편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 1. 특정 index의 노드 조회하기에서 index의 값을 0이나 1로 설정하고 실행시키면 0으로 설정시: index0Node = [A->B->C] 1으로 설정시: index1Node = [B->C] 이런식으로 출력이 되는데 저희가 의도한 출력은 특정 index의 값이므로 index가 0이면 [A], index가 1이면 [B] 와 같이 출력이 되어야 맞는게 아닌가해서 질문드립니다! 메서드를 구현할 때 영한님께서는 Node x = node; 이런식으로 변수에 받아서 구현을 하시는데 제 생각에는 x라는 변수가 굳이 필요 없을 것 같아 아래 코드와 같이 작성해보았는데 잘 작동하였습니다. 변수 x에 담아서 메서드를 처리하는 의도가 따로 있는건지 궁금합니다! 감사합니다 private static Node getNode(Node node, int index) { for (int i = 0; i < index; i++) { node = node.next; } return node; }
해결됨
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 2-7강 여기까지 이해하신 내용은 무엇인가요? git Action CI/CD 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? git push 후 workflow에서 Gradle 빌드 실패 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? git push 후 workflow에서 Gradle 빌드 실패 현재 작성하신 코드를 공유해주세요 빌드를 진행할 때 먼저 3개의 테스트에서 실패합니다. SimpleEventListenerTest > 현재 코드 구조에서 @TransactionalEventListener는 작동하지 않는다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 SimpleEventListenerTest > @TransactionalEventListener는 활성 트랜잭션이 필요하다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 SimpleEventListenerTest > @EventListener는 트랜잭션이 없어도 정상 동작한다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 이후, Redis에 Reconnecting 하려고 시도하지만 Connection이 Refused되면서 빌드에 실패합니다. 2025-08-21T08:34:32.560Z INFO 2235 --- [xecutorLoop-1-2] i.l.core.protocol.ConnectionWatchdog : Reconnecting, last destination was localhost/127.0.0.1:32770 2025-08-21T08:34:32.570Z WARN 2235 --- [ioEventLoop-8-2] i.l.core.protocol.ConnectionWatchdog : Cannot reconnect to [localhost/<unresolved>:32770]: Connection closed prematurely io.lettuce.core.RedisConnectionException: Connection closed prematurely at io.lettuce.core.protocol.RedisHandshakeHandler.channelInactive(RedisHandshakeHandler.java:91) ~[lettuce-core-6.2.6.RELEASE.jar:6.2.6.RELEASE] // 생략 로컬 환경과 AWS EC2 환경에서 동일하게 발생합니다. 해결 방법 gradle build를 5번 정도 시도했는데, 5번 중 4번은 SimpleEventListenerTest 에서 테스트가 실패하고, 1번은 다른 Test에서 실패하였습니다. 그래서, SimpleEventListenerTest 에 대해 개별 테스트를 진행해보니 통과하였습니다. 전체 테스트 진행에서는 JDBC Connection 관련 오류가 발생했고, 개별 테스트 진행에서는 문제가 발생하지 않는다는 점에서 커넥션 풀 설정 문제 를 의심하였습니다. spring: datasource: url: jdbc:mysql://${RDS_ENDPOINT:localhost}:3306/portfolio?useSSL=false&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&useSSL=false&rewriteBatchedStatements=true username: portfolio_user password: ${RDS_PASSWORD:portfolio1234} driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 32 @TestConfiguration public class TestDatabaseConfig { @Container private static final MySQLContainer<?> mysqlContainer; application.yml 의 최대 풀 사이즈는 32로 설정되어 있고, mySQL 컨테이너는 전역으로 설정되어 있으므로 병렬 처리 과정에서 커넥션 풀이 부족할 수 있겠다는 판단하에, maximum-pool-size 를 100으로 늘려보았습니다. package ding.co.backendportfolio.config; import jakarta.annotation.PreDestroy; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.testcontainers.containers.MySQLContainer; import org.testcontainers.junit.jupiter.Container; @TestConfiguration public class TestDatabaseConfig { @Container private static final MySQLContainer<?> mysqlContainer; static { mysqlContainer = new MySQLContainer<>("mysql:8.0.33") .withDatabaseName("testdb") .withUsername("test") .withPassword("test"); mysqlContainer.start(); // A) 기본 설정 + rewriteBatchedStatements 옵션 String originalJdbcUrl = mysqlContainer.getJdbcUrl() + "?rewriteBatchedStatements=true"; // TODO: BulkInsert 모니터링 - 아래 주석을 해제해야함 // originalJdbcUrl = originalJdbcUrl + "&profileSQL=true&logger=Slf4JLogger&maxQuerySizeToLog=2147483647"; System.setProperty("spring.datasource.url", originalJdbcUrl); System.setProperty("spring.datasource.username", mysqlContainer.getUsername()); System.setProperty("spring.datasource.password", mysqlContainer.getPassword()); // 커넥션 풀 늘리기 System.setProperty("spring.datasource.hikari.maximum-pool-size", "100"); System.setProperty("spring.datasource.hikari.minimum-idle", "10"); } @Bean public MySQLContainer<?> mySQLContainer() { return mysqlContainer; } @PreDestroy public void stop() { if (mysqlContainer != null && mysqlContainer.isRunning()) { mysqlContainer.stop(); } } } 이후 테스트를 진행해보니, 기존에 작성해두신 커넥션 풀 테스트인 EventJoinWithExternalConnectionPoolTest 를 제외하고 테스트에 통과하였습니다. 따라서, EventJoinWithExternalConnectionPoolTest 이 테스트에만 작은 커넥션 풀을 적용하도록 하였습니다. @Slf4j @IntegrationTest // 커넥션 설정 @TestPropertySource(properties = { "spring.datasource.hikari.maximum-pool-size=32", "spring.datasource.hikari.minimum-idle=5" }) class EventJoinWithExternalConnectionPoolTest { 문제가 발생한 원인은, Gradle 병렬 테스트 진행 시 커넥션 풀이 부족하여 커넥션이 이뤄지지 않았던 것 같습니다. 사실 최대 커넥션 풀을 100개로 늘리는 건 임시방편인 것 같고, 테스트별로 독립적인 컨테이너 환경을 만들어주는게 좋을 것 같다고 생각합니다. P.S.) GPT, 클로드코드, Cursor, ... 다 문제 원인을 파악하지 못하더라고요 ㅎㅎ
미해결
재고시스템으로 알아보는 동시성이슈 해결방법
안녕하세요! 강의를 복습하던 중 의문이 생겼습니다. JPA에서 @Version을 사용하면 자동으로 낙관적락이 적용되는 걸로 알고 있는데 @Lock(OPTIMISTIC)이 필요한 이유가 궁금했습니다. 그래서 알아보니 @Version의 경우는 엔티티에 수정/삭제가 될 경우에만 version을 체크하기 때문에 읽기만 존재할 때도 다른 곳에서 변경이 됐는지 감지하기 위해서는 @Lock(OPTIMISTIC)을 사용하라고 하던데 이게 맞을가요? 혹시 맞다면 @Lock(OPTIMISTIC)을 사용해서 OptimisticLockException이 발생하는 예시코드 부탁드립니다. 아래와 같이 테스트코드를 작성해봤는데 테스트가 성공하지 않아서요 @Test void optimistic_lock_on_read_conflict() throws Exception { ExecutorService executor = Executors.newFixedThreadPool(2); Callable<Void> task1 = () -> { service.readWithOptimisticLock(productId); return null; }; Callable<Void> task2 = () -> { service.updatePrice(productId, 4000); return null; }; Future<Void> f1 = executor.submit(task1); Future<Void> f2 = executor.submit(task2); f2.get(); assertThatThrownBy(f1::get) // 읽기만 했던 쪽도 커밋 시점에서 충돌 감지 .hasCauseInstanceOf(OptimisticLockingFailureException.class); executor.shutdown(); } //service.readWithOptimisticLock(productId); @Transactional(readOnly = true) public void readWithOptimisticLock(Long id) { productRepository.findByIdWithOptimisticLock(id); try { Thread.sleep(2000); } catch (InterruptedException e) { throw new RuntimeException(e); } productRepository.flush(); } //service.updatePrice(productId, 4000); @Transactional public void updatePrice(Long id, int newPrice) { Product product = productRepository.findById(id).orElseThrow(); product.setPrice(newPrice); productRepository.flush(); // flush 시점에 @Version 체크됨 }
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
링크 위 링크 속 질문에서 영한쌤이 아래와 같은 답변을 해줬습니다 "서버가 한대만 있고, 자바(JVM)로 웹 애플리케이션을 단 하나만 구동하는 상황이면 자바 만으로 동시성 제어를 할 수 있습니다." MVC 1편 강의에서 배운 내용으로는 클라이언트 요청이 들어오면 was 내에 미리 만들어진 쓰레드들이 각 요청을 받고 서블릿 코드를 실행한다고 이해하고 있습니다 그렇다면 서버가 한 대여도 쓰레드는 이미 여러개가 만들어져 있으므로 동시에 여러 요청 처리가 가능하기에 자바만으로 동시성 제어가 안 되는거 아닌가요? 잘못 이해한 부분이 있다면 지적부탁드립니다
미해결
김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
메서드 시그니쳐는 메서드 이름과 매개변수의 타입(순서 갯수 포함)이 들어가지만 반환타입은 포함되지 않는다고 알고 있습니다. 교재에 2. 람다 부분 p.8에서는 메서드 시그니처 + 반환타입으로 하던가 어떤 주석이 있는게 혼동을 피할수 있지 않을까 합니다. (문맥상 무슨의미인지 알겠으나 처음 배우시는 분들은 헷갈리실 수 있어서 좀 더 명확하게 하는게 낫지 않을까 합니다.) 오피셜 다큐먼트를 찾아보았습니다. https://docs.oracle.com/javase/specs/jls/se21/html/jls-8.html#jls-8.4.2 감사합니다.
해결됨
기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
21분 경에 Old Generation을 설명하시면서 Full GC를 언급하셨는데, 해당 시점에는 Major GC가 발생해서 개체를 회수하게 되고 Major GC로 부터 살아남은 개체가 Metaspace 영역으로 옮겨지는 것 아닌가요?? 물론 Full GC를 통해서도 Old Generation의 개체가 회수되기는 하겠지만 해당 부분 설명에선 Major GC로 언급하는 것이 그림과 일치하지 않나해서 질문드립니다
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
섹션2 10,11,12강의 수업자료는 따로 없나요?
미해결
[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
socket.on('kicked', (data) => { console.log('강퇴 이벤트 수신'); alert(data.message); window.location.href = data.redirectUrl; }); socket.on('kickUser', (userId) => { console.log('강퇴 요청 받음:', userId); const targetSocket = chat.sockets.get(userId); if (targetSocket) { console.log('강퇴 대상 소켓 찾음'); targetSocket.emit('kicked', { message: '강퇴되었습니다.', redirectUrl: '/' }); setTimeout(() => { // 강퇴된 소켓 연결 해제 targetSocket.disconnect(true); console.log(`사용자 ${userId} 강퇴 완료`); }, 100); } else { console.log(`사용자 ${userId} 소켓을 찾을 수 없음`); } }); socket.on('kicked',가 작동을안하네요 서버쪽에서는 targetSocket.disconnect(true)정상작동합니다.
해결됨
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 섹션5의 프린터 예제 코드에서 교재에서는 main메서드에 throw InterruptedException을 지정했는데, 영상에서는 따로 지정을 하지 않아서요. 혹시 교재 코드에는 예외 던지는 코드가 들어간 이유 가 있을까요?
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. H2 설치 및 삭제 여러차례 반복 및 구글링과 인프런에 등록된 F&Q 내용대로 해봐도 H2가 실행되지 않습니다. 저거 두 개 다 실행해도 작동이 안 됩니다.
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요. Order와 OrderItem엔티티에 있는 CASCADE에 대해 기본편을 복습해도 헷갈린 부분이 있어서 질문드립니다. em.persist(order)를 하면 CascadeType.ALL때문에 Delivery랑 OrderItem도 insert가 되는거 같은데, @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "order_id") private Order order; OrderItem에 있는 이 부분에 CASCADE를 적어준게 아니라 @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); 왜 Order에 있는 여기에다가 CASCADE를 적어준것일까요? 어디에다 두어도 상관없을거 같은데, 특별한 규칙이 있는것인지 질문드립니다.