묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입과 상속의 차이?
값 타입과 이전에 강의를 들었던 상속과 굉장히 유사하다는 느낌이 드는데, 어떤 경우에 쓰는 것이 적절한지 조금 더 설명해주실 수 있나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
merge() 관련 질문
안녕하세요.영한님 책으로 복습 중에 궁금한 점이 생겼습니다. 117p 에서 merge() 의 동작 과정을 설명하는 내용 중에 아래의 내용이 있습니다.2. 파라미터로 넘어온 준영속 엔티티의 식별자 값으로 1차 캐시에서 엔티티를 조회한다.여기서 "준영속 엔티티면 1차 캐시에 당연히 없을텐데 왜 1차 캐시를 조회하지?" 라는 의문이 생겼습니다.질문1) 어떠한 경우 때문에 1차 캐시를 조회하는 것인가요? 추가로, 119p 에 아래의 내용이 있습니다.병합은 준영속, 비영속을 신경 쓰지 않는다. ~ 따라서 병합은 save or update 기능을 수행한다.질문2) save 기능을 하는 경우에 merge() 내부적으로 persist() 로직이 포함되어 있나요?
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
[인증된 사용자 정보 클래스 정의]학습 예제와 강의 내용이 다른 이유가 있나요?
강의 예제로 다운받은 버전은 SocialLoginWeb1703 인데요. 강의는 1303이네요. 스프링시큐리티 구현코드에 있어서도 차이가 나는데, 이유가 있는건가요?
-
미해결실전! Querydsl
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
Expressions.stringTemplate() 로 사용자 정의 복호화 함수로 필드를 복호화 후 containIgnorecase로 검색을 하고싶은데 서로 타입 에러로 되지않는데 혹시 이걸 해결을 할 수 있는 방법이 없을까요? where 절에Expressions.stringTemplate("함수명{0})", 엔티티.필드명).contailIgnoreCase(searchText);이런 형태로 검색을 하고싶었는데 아무리 검색을 해봐도 찾을 수가 없어 질문을 남겨봅니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
45강 빌드 오류입니다.
안녕하세요?강사님 덕분에 열공하고 있습니다.2가지 문의드립니다.1) 프론트엔드의 리액트 소스 부탁드립니다. ==> cyj10241@gmail.com2) 45강 빌드를 하려는데 오류가 납니다. 저는 java를 17를 인스톨했습니다.[ec2-user@ip-172-31-43-148 Spring_Web]$ java -versionopenjdk version "17.0.15" 2025-04-15 LTSOpenJDK Runtime Environment Corretto-17.0.15.6.1 (build 17.0.15+6-LTS)OpenJDK 64-Bit Server VM Corretto-17.0.15.6.1 (build 17.0.15+6-LTS, mixed mode, sharing)[ec2-user@ip-172-31-43-148 Spring_Web]$ chmod +x ./gradlew[ec2-user@ip-172-31-43-148 Spring_Web]$ ./gradlew build -x testFAILURE: Build failed with an exception.* What went wrong:Could not determine the dependencies of task ':bootJar'.> Could not resolve all dependencies for configuration ':runtimeClasspath'. > Failed to calculate the value of task ':compileJava' property 'javaCompiler'. > Cannot find a Java installation on your machine (Linux 6.1.134-152.225.amzn2023.x86_64 amd64) matching: {languageVersion=17, vendor=any vendor, implementation=vendor-specific, nativeImageCapable=false}. Toolchain download repositories have not been configured.* Try:> Learn more about toolchain auto-detection and auto-provisioning at https://docs.gradle.org/8.14/userguide/toolchains.html#sec:auto_detection.> Learn more about toolchain repositories at https://docs.gradle.org/8.14/userguide/toolchains.html#sub:download_repositories.> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.위와 같은 오류가 나는데 해결 방법을 알고 싶습니다.감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
active profiles는 인텔리제이 커뮤니티 버전에 없네요
무료버전은 해당 기능설정을 지원하지 않네요.뭐지? 했던분들 참고하시면 좋겠네요
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
update 쿼리 발생
안녕하세요. JpaMain.java 코드에서 em.persist 순서에 따라 UPDATE 문이 발생하는데요.em.persist(parent); em.persist(child1); em.persist(child2);이렇게 적었을 땐 강사님과 똑같은 코드로 update 문이 발생하지 않고, 아래와 같이 작성했을 때 update 쿼리가 마지막에 한번 더 나갑니다.em.persist(child1); em.persist(child2); em.persist(parent); 이유가 무엇인지 궁금합니다. 편의 메서드에서 child을 더티 체크하기 때문에 update 쿼리가 나간 것 같은데, 왜 순서를 바꿨을 땐 update 쿼리가 발생하지 않는지 잘 모르겠습니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
공통 속성을 여러 개 사용하고 싶을 때 사용방법?
데이터베이스 정규화 등으로 그럴 일은 거의 없겠지만, 만약 @MappedSuperclass 어노테이션을 사용하는 여러 클래스가 있을 때 여러 개를 적용하고 싶다면 어떻게 사용하면 될까요? 자바는 단일 상속만 지원해서 궁금해지네요.1번 질문과 비슷한 질문일 수 있는데 상속 관계 매핑과 공통 속성(@MappedSuperclass)을 같이 사용하고 싶을 때도 어떤 식으로 해야하는지 궁금합니다.
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
socialLoginSpa1703 스프링 실행 오류납니다.
socialLoginSpa1703 소스코드를 다운받고인텔리제이로 프로젝트를 열었습니다.jdbc 설정대로 mysql을 생성하였고 bootRun으로 실행시키면 프로젝트는 실행됩니다.강의와같이 localhost:8080 이 접속이 안되고localhost에 대한 액세스가 거부됨이 페이지를 볼 수 있는 권한이 없습니다.HTTP ERROR 403가 뜹니다. 확인 부탁드려요2025-06-07T13:23:42.478+09:00 INFO 46412 --- [ restartedMain] c.e.demo.SocialLoginSpa1703Application : Starting SocialLoginSpa1703Application using Java 17.0.15 with PID 46412 (C:\Users\HP\Desktop\�Ǽ�ȣ\Project\SocialLoginSpa1703\build\classes\java\main started by HP in C:\Users\HP\Desktop\�Ǽ�ȣ\Project\SocialLoginSpa1703)2025-06-07T13:23:42.483+09:00 INFO 46412 --- [ restartedMain] c.e.demo.SocialLoginSpa1703Application : No active profile set, falling back to 1 default profile: "default"2025-06-07T13:23:42.566+09:00 INFO 46412 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable2025-06-07T13:23:42.566+09:00 INFO 46412 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'2025-06-07T13:23:44.141+09:00 INFO 46412 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.2025-06-07T13:23:44.275+09:00 INFO 46412 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 119 ms. Found 2 JPA repository interfaces.2025-06-07T13:23:45.451+09:00 INFO 46412 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)2025-06-07T13:23:45.477+09:00 INFO 46412 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]2025-06-07T13:23:45.478+09:00 INFO 46412 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.39]2025-06-07T13:23:45.585+09:00 INFO 46412 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2025-06-07T13:23:45.587+09:00 INFO 46412 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3018 ms2025-06-07T13:23:45.876+09:00 INFO 46412 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2025-06-07T13:23:46.037+09:00 INFO 46412 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.3.Final2025-06-07T13:23:46.427+09:00 INFO 46412 --- [ restartedMain] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled2025-06-07T13:23:47.214+09:00 INFO 46412 --- [ restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer2025-06-07T13:23:47.301+09:00 INFO 46412 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2025-06-07T13:23:47.595+09:00 INFO 46412 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@3419a5dd2025-06-07T13:23:47.600+09:00 INFO 46412 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2025-06-07T13:23:49.656+09:00 INFO 46412 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)2025-06-07T13:23:49.824+09:00 INFO 46412 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2025-06-07T13:23:50.469+09:00 INFO 46412 --- [ restartedMain] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used.2025-06-07T13:23:51.243+09:00 WARN 46412 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2025-06-07T13:23:52.357+09:00 INFO 46412 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 357292025-06-07T13:23:52.418+09:00 INFO 46412 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'2025-06-07T13:23:52.428+09:00 INFO 46412 --- [ restartedMain] c.e.demo.SocialLoginSpa1703Application : Started SocialLoginSpa1703Application in 10.793 seconds (process running for 11.915)2025-06-07T13:24:32.032+09:00 INFO 46412 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'2025-06-07T13:24:32.032+09:00 INFO 46412 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2025-06-07T13:24:32.035+09:00 INFO 46412 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms2025-06-07T13:24:32.090+09:00 INFO 46412 --- [nio-8080-exec-2] c.e.d.security.JwtAuthenticationFilter : doFilterInternal
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 오랜만에 예전에 메모했던 내용 복습 중인데"같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환한다. 이건 스레드 로컬 때문"이렇게 제가 메모해 두긴 했는데 내부 트랜잭션에서 REQUIRES_NEW를 사용하더라도 마찬가지인가요? 아니면 이땐 위 내용에 대해 예외인 케이스가 되나요?왠지 간단한 내용 같긴 한데 제가 스프링 고급 편 강의를 아직 안 들어서 잘못 이해해 버릴지도 몰라서 질문드립니다
-
미해결스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
dto 타입
dto 타입 날짜에서 엔티티랑 똑같이 LocalDateTime 으로 맞추지 않고 String 으로 다르게 쓰는 이유가있나요 ?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
깃헙 collaboator 초대 관련
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.안녕하세요 호돌맨님.덕분에 강의 잘 듣고있습니다.깃헙 collaboator로 초대받을 수 있을까요?깃헙 아이디는 dudfo6425@gmail.com 입니다!감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OrderItems hibernate.default_batch_fetch_size 관련한 질문입니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Order<-> Member는 N:1Order<-> Delivery 는 1:1 관계이며, proxy 객체로 들고오는 것이 목적이 아니기 때문에 fetch join 을 이용하여 바로 데이터를 DB에서 들고 온 거고OrderItems 는 조회문에서 뺀 다음 Order <-> OrderItmes 1:N Lazy 를 이용하여 proxy 상태로 들고 온 상태에서.get() 과 같은 함수를 이용해서 그때 데이터를 채워놓은거라고 이해하면 될까요?OrderItems에 데이터가 DB데이터가 채워질 때 N+1 과 같은 문제가 발생하지 않은 건 hibernate.default_batch_fetch_size 또는 @BatchSize 이용하기에 그런 거구요.그럼 만약에 Order 주문 조회 후 Controller 에서 해당 OrderItems 의 Class 를 확인하면 proxy로 나오게 되고, order.getOrderItems() 와 같이 호출을 하게 되면 OrderItems는 proxy 객체가 아닌 실제 DB조회데이터가 나오게 되는 걸까요??
-
미해결실전! Querydsl
답변부탁드리겠습니다.
(OrderSpecifier)관련 내용 어디있을가요 섹션7에서 스프링 데이터 JPA는 자신의 정렬(Sort)을 Querydsl의 정렬(OrderSpecifier)로 편리하게 변경하는 기능을 제공한 다. 이 부분은 뒤에 스프링 데이터 JPA가 제공하는 Querydsl 기능에서 살펴보겠다. 37. 스프링 데이터 페이징 활용3 - 컨트롤러 개발-> 여기 챕터에서 뒤에 강의에서 설명하겠다하셨는데 어디 강의일까요.. 섹션8에 OrderSpecifier관련 내용은 없는거같은데요,,?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
최신 webflux 라이브러리에서 yml 작성법
server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigateway-service cloud: gateway: server: webflux: routes: - id: first-service uri: http://localhost:8081/ predicates: - Path=/first-service/** filters: - AddRequestHeader=first-request, first-request-header2 - AddResponseHeader=first-response, first-response-header2 - id: second-service uri: http://localhost:8082/ predicates: - Path=/second-service/** filters: - AddRequestHeader=second-request, second-request-header2 - AddResponseHeader=second-response, second-response-header2위처럼 weflux:라고 yml에서 작성해주셔야 잘 동작합니다.
-
미해결실전! Querydsl
(OrderSpecifier)관련 내용 어디있을가요
스프링 데이터 JPA는 자신의 정렬(Sort)을 Querydsl의 정렬(OrderSpecifier)로 편리하게 변경하는 기능을 제공한 다. 이 부분은 뒤에 스프링 데이터 JPA가 제공하는 Querydsl 기능에서 살펴보겠다. 37. 스프링 데이터 페이징 활용3 - 컨트롤러 개발-> 여기 챕터에서 뒤에 강의에서 설명하겠다하셨는데 어디 강의일까요..답변부탁드릴게요 섹션8에 OrderSpecifier관련 내용은 없는거같은데요,,?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
질문입니다.
안녕하세요, 강의 잘 수강하고 있습니다다만 강의랑 자료랑 달라서 물어보고 싶어서 글을 남깁니다. 1.ch3 압축파일에 강의와는 다르게 압축파일에는 search 클래스가 없습니다. ch4 알집파일 todo.d.ts파일에 아래와 같이 writer를 추가하는 게 맞는 건지 궁금합니다.interface TodoModify { tno: number, title: string, writer: string dueDate: string | null, complete: boolean }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.find 1차 캐시 SELECT 2번 발생
[SELECT 2번 발생]강의에 설명된 내용과 달리 저는 em.find(Member.class, 100L); 두 번 호출하였을 때 SELECT 문이 두 번 발생하였습니다.혹시 설정 차이로 다른 결과가 나온 것일까요? 추가로 지금 확인해보니 tx.commit 이후에도 데이터베이스에 저장도 되지 않고, insert 쿼리가 나가지 않네요.. 어떤 문제에서 잘못된 것일까요?전체 코드 보내드립니다.package hellojpa; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; import java.util.List; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); /** * 영속성 컨텍스트1 - 1차 캐시 */ try { // // 비영속 Member member = new Member(); member.setId(100L); member.setName("HelloJPA"); System.out.println("=== BEFORE ==="); em.persist(member); // 영속 System.out.println("=== AFTER ==="); Member member1 = em.find(Member.class, 100L); Member member2 = em.find(Member.class, 100L); System.out.println("result = " + (member1 == member2)); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); emf.close(); } } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티 직접 사용 - 외래키값 지연로딩
엔티티 직접 사용 - 외래키값에서 아래 JPQL은 지연로딩설정 해놨지만where 에서 team에 대한 조건값이 있으니 즉시로딩 된걸로 이해하면 될까요?!select m from Member m where m.team = :team
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
3장 Querydsl 검색처리 수업따라하다가 에러가 나요..
TodoServiceImpl.java 작성중에 중간에 소스가 갑자기 바뀌었는데요.그리고 아래와 같이 작성하셔서 따라 작성하였는데요.PageResponseDTO<TodoDto> responseDTO = PageResponseDTO.<TodoDto>withAll() .dtoList(dtoList) .pageRequestDTO(pageRequestDTO) .totalCount(result.getTotalElements()) .build();뭘 놓친건지... 위와 같이 에러 나서 진행이 안돼요. 카페 들어가서 해당 강의 소스도 찾아봤는데수업하신 내용이랑 조금 다르게 되어있긴 하지만 사용법에는 큰 차이는 없어 보이거든요 ㅠlombok도 많이 안써봐서... 잘 모르겠어요..