묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080/hello-stiatic.html 에 관한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.강사님이 알려주신 html 코딩 내용인 hello-static.html과 localhost:8080/hello-static.html에서 페이지 소스 보기로 본 코드 내용이 다른데, 이유가 무엇일까요?그리고 html 코드의 body 부분이 영어일 때는 괜찮은데, 한글 입력시 페이지에서 한글이 깨져서 출력됩니다.1.<hello-staitc.html><!DOCTYPE HTML><><head><title>static content</title><meta http-equiv="Content-Type" content="text/html; charest=UTF-8" /></head><body>정적 컨텐츠 입니다.</body></html> <loacalhost:8080/hello-static.html><!DOCTYPE HTML><html><head> <title>Hello</title> <meta http-equiv="Content-Type" content="text/html; charest=UTF-8" /></head></html>Hello<a href="/hello">hello</a></body></html><script>(function() { var ws = new WebSocket('ws://' + window.location.host + '/jb-server-page?reloadMode=RELOAD_ON_SAVE&'+ 'referrer=' + encodeURIComponent(window.location.pathname)); ws.onmessage = function (msg) { if (msg.data === 'reload') { window.location.reload(); } if (msg.data.startsWith('update-css ')) { var messageId = msg.data.substring(11); var links = document.getElementsByTagName('link'); for (var i = 0; i < links.length; i++) { var link = links[i]; if (link.rel !== 'stylesheet') continue; var clonedLink = link.cloneNode(true); var newHref = link.href.replace(/(&|\?)jbUpdateLinksId=\d+/, "$1jbUpdateLinksId=" + messageId); if (newHref !== link.href) { clonedLink.href = newHref; } else { var indexOfQuest = newHref.indexOf('?'); if (indexOfQuest >= 0) { // to support ?foo#hash clonedLink.href = newHref.substring(0, indexOfQuest + 1) + 'jbUpdateLinksId=' + messageId + '&' + newHref.substring(indexOfQuest + 1); } else { clonedLink.href += '?' + 'jbUpdateLinksId=' + messageId; } } link.replaceWith(clonedLink); } } };})();</script> 출력 내용원하는 출력 값 : 정적 컨텐츠 입니다.실제 출력 값 : <> �뺤쟻 而⑦뀗痢� �낅땲��.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 CRUD 구현 오류 질문입니다.
안녕하세요 강의 잘 듣고 있습니다. 게시글 CRUD 부분에서 오류가 발생하는데yml 설정은 강의랑 똑같이 해줬습니다.서버 실행시키면java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:116) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:290) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:123) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]이런 오류가 발생하고 테스트 실행시키면Invalid status line: "ÿ900" at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.createResourceAccessException(DefaultRestClient.java:575) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:498) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.retrieve(DefaultRestClient.java:460) at kuke.board.article.api.ArticleApiTest.create(ArticleApiTest.java:24) at kuke.board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:14) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.net.ProtocolException: Invalid status line: "ÿ900" at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:962) at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:133) at org.springframework.http.client.JdkClientHttpRequest.executeInternal(JdkClientHttpRequest.java:102)이런 오류가 발생합니다.구글링 해보고 권한 설정이랑 인코딩 설정도 다 했는데 도저히 안돼서 질문 남깁니다.. 추가)server: port: 9000 spring: application: name: kuke-board-article-service datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/article username: root password: root jpa: database-platform: org.hibernate.dialect.MySQLDialect open-in-view: false show-sql: true hibernate: ddl-auto: noneyml 설정입니다. 추가)artile의 build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.mysql:mysql-connector-j' implementation project(':common:snowflake') }이 부분은 강의 코드 보면서 그대로 쳤어서 runtimeOnly 'com.mysql:mysql-connector-j'는 원래 있었습니다. 스프링 버전 관련plugins { id 'java' id 'org.springframework.boot' version '3.3.2' id 'io.spring.dependency-management' version '1.1.6' } group = 'kuke' version = '1' allprojects { java { sourceCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_21 } apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } }강의에 나온 버전 그대로 맞췄습니다. DB관련아이디 root에 비밀번호 root로 하면 접속 잘 되고 DB랑 테이블도 article로 통일했습니다. MySQLDialect -> MySQL8Dialect로 변경해도 안되는데 이유를 모르겠네요!... 추가)이렇게 나오는데 USER는 본명이라 가렸습니다!.. 추가)테스트 실행시키면 발생하는 오류입니다.. package kuke.board.article.api; import kuke.board.article.service.response.ArticleResponse; import lombok.AllArgsConstructor; import lombok.Getter; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestClient; public class ArticleApiTest { RestClient restClient = RestClient.create("http://localhost:9000"); @Test void createTest() { ArticleResponse response = create(new ArticleCreateRequest( "hi", "my content", 1L, 1L )); System.out.println("response = " + response); } ArticleResponse create(ArticleCreateRequest request) { return restClient.post() .uri("/v1/articles") .body(request) .retrieve() .body(ArticleResponse.class); } @Getter @AllArgsConstructor static class ArticleCreateRequest { private String title; private String content; private Long writerId; private Long boardId; } @Getter @AllArgsConstructor static class ArticleUpdateRequest { private String title; private String content; } }코드는 강의랑 똑같은데 왜그럴까요..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
updateItem 변경감지 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Book에는 저 세 가지 필드 말고도 다른 필드도 존재하는데현재 merge가 아니라 변경 감지로 값을 수정하는 것이기 때문에@Transactional public void updateItem(Long itemId, String name, int price, int stockQuantity) { Item findItem = itemRepository.findOne(itemId); findItem.setPrice(price); findItem.setName(name); findItem.setStockQuantity(stockQuantity); }다음과 같은 형태로 사용해도 다른 필드는 null 값으로 바뀌지 않는 거 맞을까요?
-
미해결견고한 결제 시스템 구축
가상의 Checkout 기능 구현 중 질문
가상의 Checkout 기능 구현 문의 질문드립니다. (13:40~)R2DBC 를 사용해본 적이 없어서실습환경 제약으로 강의 흐름따라 코드만 보다가 궁금한게 있는데요. 1) save 인터페이스가 JDBC 처럼 반환값 Intger(or Long 등 Number) 가 기본일까요? 2) func save 반환값으로 Mono<Void> 반환하는데, JPA Repository 인터페이스의 save 처럼 save 된 객체( JPA의 Entity 에 해당 )에 대해 updated 값이 반영되게 되나요? 강의에선 따로 domain 과 DB dto(or entity) 구분을 안해서가령, updated_at 이나 created_at 컬럼 값을 갖는 경우, DB default timestamp 로 부여될 건데, call by value 로 DB 로 전달된 객체의 필드 값이 자동 갱신처리되기 때문에Mono<Void> 반환이 CRUD 의 일반적인 패턴인건지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
javx 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. import관련해서 문제가 생겼습니다.. jakarta는 아예 안됩니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
[사이드 프로젝트] 하이버네이트 No session 에러 질문 드립니다.(lazyinitializationexception)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]현재 회원 엔티티 시점 Member(회원) 1 : N Pet(반려견) 일대다 관계인 상태입니다.-Member(회원) 엔티티 -Pet(반려견) 엔티티 연관관계 설정해 둔 모습입니다. -이게 문제가 되고 있는 서비스 로직입니다. MemberRepository에서 회원의 role(역할)을 찾은 후,role(역할)이 CUSTOMER(고객)인 경우 해당 회원의 정보와 갖고 있는 List<>형태의 pet을 한 번에 갖고 와서 DTO로 변환 해서 반환하려고 합니다. 실제로 어떻게 리포지토리에서 조회하고 있는지 보여드리겠습니다. -role(역할)이 CUSTOMER(고객)인 경우 findByCustomerId()로 위와 같이 회원과 pet을 한 번에 조회하고 있습니다. (실제 쿼리문이 나가는 것을 봤을 때도 fetch join 쿼리로 나가서 pet이 프록시가 아닌 실 객체 데이터로 조회되는 것을 확인했고, 디버깅도 해봤는데 pet 컬렉션에 데이터가 있는 것도 확인했습니다.)다음으로 member 엔티티를 DTO로 어떻게 반환하는 지 보여드리겠습니다. -Pet(반려견)을 PetResponse라는 DTO로 다시 바꿔서 반환 시켜주려고 하고 있는 상황이고 -이게 PetResponse 입니다. 여기까지가 현재 저의 문제가 되고 있는 코드와 동작 방식입니다.현재 뜨고 있는 오류는 lazyinitializationexception 에러가 발생하고 있습니다. 알아보니 트랜잭션 주기 안에서 컬렉션을 조회하는 것이 아니라, 하이버네이트 세션이 끝난 후 영속성 컨텍스트가 사라진 상태에서 엔티티가 갖고 있는 컬렉션(pets)을 조회하게 돼서, 트랜잭션 내에 존재한 영속성 컨텍스트 내의 pets를 조회하는 것이 아닌 새로운 영속성 컨텍스트에서 조회를 하게 돼버려서 실 객체 데이터가 조회되는 것이 아닌 프록시 객체가 조회가 되고 있다는 내용으로 이해했습니다. 그래서 제가 여태 해본 방법으로는,서비스 레벨의 findById(long id) 메서드에서 member 정보만 따로 조회하고 pet만을 따로 각각 조회한 후 dto로 반환 해보기 (예: memberRepository.findByid()로 회원만 조회, petRepository.findbyCustomerId()로 pet만 따로 조회 후, new MemberResponse.GetCustomer()로 반환 -> 안됨.(X) 현재 메서드 레벨 위에 작성되어 있는 트랜잭션 어노테이션이 readOnly = true로 읽기 전용이면 pets를 초기화 할 수도 없을 수 있다길래 readOnly = true 옵션도 빼 보기 -> 안됨.(X)yml 설정 파일에 spring: jpa: open-in-view: true 옵션 설정 해보기 -> 안됨.(X)Member(회원) 엔티티에 읽기 전용으로 있는 List<> pets를 지연 로딩이 아닌 즉시로딩으로 바꾸기. -> 이 경우에만 됨.(O)Hibernate.initialize(member.getPets()); 을 사용해서 컬렉션 강제 초기화 하기 -> 안됨.(X) 현재 이렇게 까지 시도해 봤고 pets를 즉시 로딩으로 바꾸는 경우 말고는 아예 되지 않는 상황입니다. 보통 저와 같은 경우 간단하게 해결되는 문제던데 스택오버플로우와 구글의 힘을 빌려 검색해서 시도해 본 결과 해결되지 않았습니다.. 제가 어떤 실수를 하고 있는지, 뭐가 문제인지 봐주시면 감사하겠습니다.!!추가 설명이 필요하거나 깃허브 주소라도 필요하면 댓글로 남기겠습니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
article_id에 대해서
comment기능에서 comment테이블에 article_id을 shard key로 사용한다고 하셨는데 comment기능은 article기능에 뎃글을 다는 기능으로 article테이블에 article_id와 연관관계를 맺는 컬럼이 아닌건가요? 만약맞다면 article테이블에 article_id를 comment테이블에 article_id에 저장되게끔 해야 할 듯 한거 같은데 1고정값으로 넣는게 이해가 안되서 질문드렸습니다.
-
미해결개발자에게 필요한 로그 관리
Elasticsearch, logstash 세팅 시 오류 사항 공유
맥북 M1 시리즈 사용하고 있는데, 강의에서의 docker 이미지 다운로드 및 컨테이너 실행 시 문제가 발생하고 있습니다(이미지 다운로드는 문제없으나, 컨테이너 실행시 문제 발생). 플랫폼 관련 옵션이 추가적으로 필요합니다.--platform linux/amd64 강의 자료보면 각각 Elasticsearch, Logstash 따로 작성되어 있는데 yml 하나로 제공되어도 좋을 것으로 보입니다.version: "3.8" services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.10.0 container_name: elasticsearch platform: linux/amd64 ports: - "9200:9200" environment: - discovery.type=single-node - xpack.security.enabled=false - xpack.security.http.ssl.enabled=false networks: - elastic-network logstash: image: docker.elastic.co/logstash/logstash:8.10.0 container_name: logstash platform: linux/amd64 ports: - "5044:5044" - "9600:9600" volumes: - ../logstash.conf:/usr/share/logstash/pipeline/logstash.conf # logstash.conf 경로 수정 필요 networks: - elastic-network networks: elastic-network: driver: bridge
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요!! 질문있습니다!!
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Comment 엔티티 생성시 연관관계를 Long articleId로 해줌으로써 Article 엔티티와 연관관계를 맺어준것일까요?Article과 Comment는 1:N 관계로 보이는데, comment 테이블 설계 당시 Article에 대한 외래키 관리를 comment 테이블에서 안해준 이유도 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글목록 최적화 전략설계 질문
조회용 게시글 목록 캐시가 미리 있는 상태에서 게시글이 수정이 된다면 게시글 조회 서비스에서 구독을 통해서 캐시 수정이 이뤄져야 하는걸까요?강의에서는 작성/삭제 두가지만 말해주시는거 같아서 수정인경우도 알고싶습니다~
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Snowflake 강의 질문입니다.
1. intelliJ java file outside of source root 에러가 뜹니다Snowflake 강의를 듣다가 질문이 생겨서 질문올립니다.강의자료에 있는 Snowflake 자료를 복사 붙여넣기 하다가 intelliJ java file outside of source root 에러가 뜹니다. 아래와 같이 시도를 해보았습니다.https://stackoverflow.com/questions/63521181/java-file-outside-of-source-root-intellij 이싸이트에 나와있는IntelliJ의 오른쪽 도구 모음에서 "gradle"을 클릭한 다음 새로 고침 버튼을 클릭합니다.File > Project Structure > Modules > Sources그리고 Java 파일 디렉토리를 소스로 표시를 변경하라고 나옴. 이 방법 시도 하지만common->src로 변경했더니 IntelliJ IDEA에서 동일한 resources 디렉터리가 두 개의 모듈에서 중복으로 설정되어 있을 때 발생하는 문제가 생겨 적용 불가능현재 프로젝트 close하고 다시 open함.java버전과 스프링부트 버전 확인 build.gradle에서 버전 확인위와 같이 해결방법을 모색해봤는데 해결방법을 모르겠습니다. 프로젝트 파일 첨부합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
무한 스크롤 질문있습니다
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.갑자기 페이징 쿼리 설명하다가 다음 강의에서 무한 스크롤에 대한 설명을 하시는데요. 1.이는 분산환경에서의 페이징 쿼리시의 단점을 보완하기 위한 방법으로 무한 스크롤을 설명하시는건가요??2.아니면 단순 무한 스크롤의 장점에 대해서 설명하시는건가요??3.아니면 분산 환경에서의 페이징 쿼리의 단점으로 인해 분산 환경에서는 무한 스크롤 방식을 선호한다는 것일까요??저는 SpringDataJPA를 사용하여 페이징과 Slice를 구현해본적이 있는데 해당 기능이라던가 QueryDSL과 같은 기능을 사용하지 않고 네이티브 쿼리를 사용하는 이유는 무엇일까요??
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 CRUD API 설계 강의에 대해 질문있습니다.
강의 1분 47초에서 샤드를 bored id는상관 없이 articleid로 짝수면 오른쪽, 홀수면 왼쪽으로 나뉘어진건가요? 샤딩 id가 articleid와 bored id 인건가요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
24:49초 Explain 쿼리 문에서 질문드립니다
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.저는 왜 Using where과 Using Index 두개가 같이 나올까요?오로지 Using Index만 나와야 커버링 인덱스를 이용해서 데이터를 성공적으로 조회했다 라고 이해했는데 Using where와 같이 나온거 보면 뭔가 MySQL 내부에서 커버링 인덱스만으로 데이터를 조회하지 못했으니 뭔가를 더 실행한 것일까요??# 5만 페이지 스킵 쿼리explain select * from ( select article_id from article where board_id = 1 ORDER BY article_id DESC limit 30 offset 1499970 ) t left join article on t.article_id = article.article_id;해당 쿼리에서는 Using where; Using index 이렇게 나옵니다.explain select * from article where board_id = 1 order by article_id desc limit 30 offset 90;해당 쿼리에서는 Usind index condition이 나옵니다저는 MySQL 쿼리문을 터미널에서 실행한게 아닌 DataGrip으로 실행 했는데 여기서 차이가 있는 걸까요??
-
미해결스프링 부트 - 핵심 원리와 활용
프로젝트 설정시 제공파일에 대한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]프로젝트 설정에서server-start 폴더를 server 로바꿔서 시작할려고하는데 시작하기 앞서 얘기하신것처럼 스프링부트 프로젝트가 아니라 순수 자바 파일과 서브렛? 으로 이루줘졌다고 설명해주셨는데 이건 공부를위해 제공되어서 그냥 받아서 시작했는데 그럼 만약 내가 순수하게 만들고싶다하면 제공해주신 server-start를 어디서 어떻게 만들수있을까요? 또는 강의자료의 폴더들같은 형식들도요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
java -jar오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]cmd에서 빌드를 하려고 합니다.gradlew 이랑 gradlew build모두 다 어찌저찌 해 냈는데java -jar에서 자꾸 오류가 나네요.여기저기 알아보고 수정해 봤는데 경로를 찾을 수 없어서 생긴 오류라고 하더라고요프로젝트 폴더는 이렇게 있고gradle.build폴더는 이렇게 있습니다.main파일도 이렇게 있습니다. 아무리 찾아봐도 안보이는데 어디서 잘못된 건지 알 수 있을까요?버젼은 17로 다 맞추어 놓았습니다(환경 변수까지)
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
컬럼명
db에서의 컬럼명을 warehousingDate로 정의하고 자바에서 warehousingDate로 필드를 선언하여 테스트했을 때 매핑되지 않아 테스트에 실패합니다.db는 스네이크 케이스를 사용해서 jpa가 warehousingDate를 warehousing_date로 매핑시키려고 해서 그런 것 같은데 @Column(name = "warehousingDate")로 해도 안 되고 db의 컬럼명을 warehousing_date로 수정해야 정상 작동하는데 db에서 warehousingDate를 그대로 사용하고 정상적으로 매핑이 되게 하려면 어떻게 해야 하나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
page값에 대해서
count 값을 구하는 로직을 보면 값이 커지면 커질수록 쿼리 속도가 현저히 저하되는 상황을 볼 수 있는데요. 이럴경우 어떠한 방식으로 대처하면될까요? 예를들어 500,000을 page값으로 설정하면 2~3초정도 걸리게 됩니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Kafka Source Connect 사용
강사님 너무 좋은 강의 감사드립니다. JDBC Source Connector 예시를 잘 보았습니다. 해당 소스 커넥터의 경우 DB를 주기적으로 폴링해서 변경사항을 감지해서 DB 부담이 큰 것으로 알고 있는데요. (CDC source connector에 비해)혹시 해당 방식의 커넥터는 현업에서도 메이저하게 사용하는 방식인지 아니면 단순 예시인지 궁금합니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
사용자 동선에 대한 트랜잭션 문의
보통 사용자의 행동패턴은 쿠폰 발급 후 [쿠폰이 발급되었습니다]라는 메세지 이후 쿠폰을 바로 사용합니다. 현재 플로우는 pub/sub을 통한 비동기이므로 사용자의 한 트랜잭션으로 처리 되지 않을 것 같은데 위와 같은 요구사항을 구현하기 위해 어떤 방법이 있을까요?