묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@ManyToOne 에서 join fetch해준 쿼리가 있으면 Batch SIze 영향 안 받나요?
ToOne관계만 우선 모두 페치 조인으로 최적화,컬렉션 관계는 배치사이즈로 최적화 하는 부분입니다.@ManyToOne 에서컬렉션이 아닌 부분들은join fetch해서 필요한 파트 땡겨온다고 배웠습니다.그런 후 ,한편컬렉션인 부분은 default batch size로 전체필드에적용해서인쿼리로 가져온다고 들었습니다.예를들어 Order 클래스에 컬렉션List<OrderItem> orderItems이 있으면 Orderitems 의 프라이머리 키 만큼인쿼리를 날리는 쿼리 ,그리고OrderItems안에 들어있는 Item의 프라이머리 키 만큼인쿼리를 날리는 쿼리 ============================강의에서 날린 쿼리 기록을 보면selectorder0_.order_id as order_id1_6_0_,member1_.member_id as member_i1_4_1_,delivery2_.delivery_id as delivery1_2_2_,order0_.delivery_id as delivery4_6_0_,order0_.member_id as member_i5_6_0_,order0_.order_date as order_da2_6_0_,order0_.status as status3_6_0_,member1_.city as city2_4_1_,member1_.street as street3_4_1_,member1_.zipcode as zipcode4_4_1_,member1_.name as name5_4_1_,delivery2_.city as city2_2_2_,delivery2_.street as street3_2_2_,delivery2_.zipcode as zipcode4_2_2_,delivery2_.status as status5_2_2_fromorders order0_inner joinmember member1_on order0_.member_id=member1_.member_idinner joindelivery delivery2_on order0_.delivery_id=delivery2_.delivery_id limit ?2023-01-30 17:24:30.973 DEBUG 11572 --- [nio-8080-exec-5] org.hibernate.SQL :selectorderitems0_.order_id as order_id5_5_1_,orderitems0_.order_item_id as order_it1_5_1_,orderitems0_.order_item_id as order_it1_5_0_,orderitems0_.count as count2_5_0_,orderitems0_.item_id as item_id4_5_0_,orderitems0_.order_id as order_id5_5_0_,orderitems0_.order_price as order_pr3_5_0_fromorder_item orderitems0_whereorderitems0_.order_id in (?, ?)2023-01-30 17:24:30.980 DEBUG 11572 --- [nio-8080-exec-5] org.hibernate.SQL :selectitem0_.item_id as item_id2_3_0_,item0_.name as name3_3_0_,item0_.price as price4_3_0_,item0_.stock_quantity as stock_qu5_3_0_,item0_.artist as artist6_3_0_,item0_.etc as etc7_3_0_,item0_.author as author8_3_0_,item0_.isbn as isbn9_3_0_,item0_.actor as actor10_3_0_,item0_.director as directo11_3_0_,item0_.dtype as dtype1_3_0_fromitem item0_whereitem0_.item_id in (?, ?, ?, ?)========================총 3개입니다.컬렉션이 아닌 부분들에도 Batch Size 영향이 미쳤을텐데..컬렉션이 아닌 부분들에 배치사이즈 영향이 안미친 이유가 join fetch로 이미 영속성에 존재해서 그런건가요?Member, Delivery도Batch Size 영향을 받았으니여기도 인쿼리 날려줘야 되지 않나 생각이 들었어요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원가입( ) 테스트케이스 질문입니다
강의 보면서 똑같이 작성하는 중에 회원가입( ) 케이스에서 java.lang.IllegalStateException: Failed to load ApplicationContext 에러가 발생했습니다.제가 진행하는 환경이 Junit5이라서 이것저것 찾아본 결과 @RunWith(SpringRunner.class)을 이미 스프링부트에서 지원하고있다고 하여 지우고 public도 지워봤지만 적절한 해결방법이 아닌것같아 코드 원복하고 질문 드립니다. 어떤부분을 수정해야할까요..? 에러구문입니다java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:98) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:124) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:248) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [jpabook.jpashop.JpashopApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'memberRepository' for bean class [jpabook.jpashop.repository.MemberRepository] conflicts with existing, non-compatible bean definition of same name and class [jpabook.jpashop.domain.MemberRepository] at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331) at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:136) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:141) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:90) ... 25 moreCaused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'memberRepository' for bean class [jpabook.jpashop.repository.MemberRepository] conflicts with existing, non-compatible bean definition of same name and class [jpabook.jpashop.domain.MemberRepository] at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:349) at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:287) at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128) at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295) at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:249) at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:206) at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:174) ... 37 more H2콘솔도 위의 경로에 따라 동작중이고 application.yml파일 화면도 첨부합니다. 각종 시도를 하였지만 테스트에러를 해결할 수 없어서 코드는 일단 강의내용과 동일하게 작성해 두었습니다. Junit5에서는 위의 문제를 어떻게 해결해야 하나요??
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
library-app-complete 코드 실행방법
library-app-complete 파일을 실행해보고 싶은데요 LibraryAppApplication.kt 에 intelliJ IDEA 로 들어가면 원래 초록색 세모버튼 재생하는게 잇어야되잖아요 ? 그게 없는데 어떻게 하면 실행해볼 수 있을까요..?
-
미해결실전! Querydsl
QueryDsl만 이용 VS QueryDsl 과 JPA 기본 제공 api를 혼용
다이나믹한 쿼리가 필요한 부분에서만 QueryDSL를 이용하고, 그 외에는 JPA에서 제공되는 기본 api(save 등)를 이용하고 있습니다.그러다 아래와 같은 고민이 생겼습니다...Q. 향후 어떻게 변할지 모를 "확장성"과 "일관성"을 위해, 처음부터 모든 쿼리를 QueryDsl을 이용하는게 좋을까요...?그게 아니라면, 지금 처럼 JPA에서 제공되는 기본 api와 혼용하며 이용하다가 필요할 때마다, QueryDSL을 이용하여 다이나믹 쿼리를 생성하는게 맞을까요...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
java file outside of source root 오류 때문에 main 클래스 실행이 안 됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.위와 같이 모두 세팅을 진행했는데, Java file outside of source root라는 문구가 뜨면서 main 클래스를 실행할 수 없는 상황입니다.어떻게 해결해야 할까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
-arlth 가 뭔가요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용] h2 db 설치 연결 확인 후,home 에 test.mv.db 파일을 확인해야 된다면서llll -arlth 이렇게 들어가시는데 이게 뭔가요?여기서 막혀서 답답하네요.맥 써본 적도 없고 실무도 윈도우로 하는데 어지럽네요.ll 이 dir 이라는건 아는데 -arlth 는 처음 봐요.home이 어딜 말하는건지 모르겠어요.
-
미해결스프링 시큐리티 OAuth2
선행학습 질문
안녕하세요 강의 듣기 초반인데 상세한 설명이 너무 좋은것 같습니다~! 나중엔 다 수강을 할 예정이지만 OAuth2를 먼저 사용하게 될 예정이라 1편 실전프로젝트 전 단계인 스피링시큐리티 기본API 및 Filter 이해 , 주요 아키텍처 이해 정도만 선행으로 듣고 OAuth2를 들어도 될까요? 아님 실전프로젝트도 다 듣고 OAuth2를 듣는게 좋을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
감사합니다!!!
시간 가는 줄 모르게 마지막 수업까지 마쳤습니다. 열띤 강의로 수고 많으셨습니다. 감사합니다!!!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. 지연로딩 시, DB에서 직접 조회가 아닌 캐시 내에서 효율적으로 데이터를 조회하기 위해 프록시 객체가 필요하다고 이해했는데 맞을까요?2. JPA에서 == 비교는 항상 참이여야 한다고 하셨는데 같은 객체에서 가져온 동일한 데이터임을 확인하기 위해서 그런건가요?3. 즉시로딩에서는 프록시 객체를 사용하지 않고 DB에 직접 접근해서 join을 하는 것인가요?4. getSingleResult()에서 에러가 발생해서 까다롭다면 getResultList() 를 사용하면 되지 않나요? getSingleResult() 를 사용해야 하는 이유가 따로 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
스프링3.0에서 querydsl 설정시 나는 빌드 에러 문의드려요!
implementation "com.querydsl:querydsl-jpa:5.0.0" implementation "com.querydsl:querydsl-apt:5.0.0"//querydsl 추가 //def querydslDir = 'src/main/generated' def querydslDir = "$buildDir/generated/querydsl" querydsl { library = "com.querydsl:querydsl-apt" jpa = true querydslSourcesDir = querydslDir } sourceSets { main { java { srcDirs = ['src/main/java', querydslDir] } } } compileQuerydsl{ options.annotationProcessorPath = configurations.querydsl } configurations { querydsl.extendsFrom compileClasspath } 스프링 3.0.2에서 위와 같이 설정후 빌드하였고 아래와 같은 에러가 발생하였습니다.Build file '/Users/erp/build.gradle' line: 53 (line 53은 def querydslDir = "$buildDir/generated/querydsl" 바로 아래 라인 입니다.)A problem occurred evaluating root project 'erp'.> Could not find method querydsl() for arguments [build_5ohy7uzmfkm7dcwikqo1apfbo$_run_closure5@4ab35249] on root project 'erp' of type org.gradle.api.Project. 이 문제가 계속해서 해결되지 않아... 도움요청 드립니다 ㅠㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
실행할 때마다 테이블 drop, create 가 됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]소스 실행할 때마다 테이블이 drop 되었다가 create가 되어서 member 테이블에 있던 데이터가 전부 사라져서 update가 안되는것 같은데.. 이거 어떻게 하면 될까요...?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
현업에서 데이터베이스 스키마 자동 생성 기능을 운영 장비에서 사용하지 않는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]데이터베이스 스키마 자동 생성 부분 강의 관련해서 궁금한 점이 생겨 질문 드립니다.강의에서 생성된 DDL은 개발 장비에서만 사용해야 하며, 운영 장비에서는 사용하면 안 된다. 라고 말씀해주셨습니다. 그리고, 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬 은 후 사용 이라고 강의 자료에 나와 있는데요.그렇다면, 실제 현업에서는 운영 서버에 새로운 테이블을 create 하거나, 기존 테이블을 update(칼럼 추가 혹은 변경 등...) 하는 경우에 어떻게 하는지 궁금합니다. 강의 내용 + 서칭에 따르면, 로컬에서 DB 스키마 자동 생성 -> 검증 및 정제 -> 최종 스키마를 DB 툴을 이용해서 추출 -> 최종 스키마인 "create table ~~"을 테스트 DB에 적용(이 때, JPA 를 통해서가 아닌, 스키마 자체를 적용해야 함) -> QA 진행 , 검증 및 정제 -> 최종 스키마를 DB 툴을 이용해서 추출 -> 최종 스키마인 "create table ~~"을 테스트 DB에 적용(이 때, JPA 를 통해서가 아닌, 스키마 자체를 적용해야 함)을 운영 장비에 적용 하는 방식으로 진행하는 걸까요? (물론, 여건에 따라, 테스트 서버도 JPA DB 스키마 자동 생성 기능으로 처리할 수도 있을 듯 합니다.)create 뿐만 아니라, update 또한 운영서버에 적용하면 안되며, update 또한 테스트서버에 적용하는 것은 지양한다고 하셨습니다. 운영 서버의 소스코드가 (JPA DB 자동 스키마 생성기능을 통해) 테스트 서버, 운영 서버의 DB create, update 권한을 가진다는 것 자체에 대해 우려하시는 건가요? 아니면, DB 관련하여 컨트롤하는 기능 중, JPA 에서 설정하지 못하는 것이 있어서 그런건가요? 말씀해주신 결과적인 사건들을 통해 위험하다 는 것은 알겠는데, 그 구체적인 이유를 설명하라고 한다면, 아직 정확하게 말 할 수 없을 듯 하여, 질문 남깁니다.긴 글 읽어주셔서 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 cmd창에서 gradlew build 오류
안녕하세요 현재 윈도우 쓰고있는 학생입니다. 빌드하고 실행하기 단계에서 cmd창을 열어서 gradlew.bat과 강의상에 나와있는 clean build 을 입력해도 사진첨부해드린거와 같이 계속 오류가 나는데 무엇이 문제일까요 ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberServiceIntegrationTest 오류 질문드립니다.
antlr.NoViableAltException: unexpected token:generatedAlias0org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: generatedAlias0 near line 1, column 8 [select generatedAlias0 from...] 이 부분에서 계속 에러가 뜨는데 이유를 모르겠어서 질문드려요!참고로 이와 비슷한 문의 글도 인프런과 stackoverflow에서 봤지만, 마땅한 오타가 없어서 여기에 글 올립니다! // MemberServiceIntegrationTest import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Commit; import org.springframework.transaction.annotation.Transactional; import with.younghan.kim.domain.Member; import with.younghan.kim.repository.MemberRepository; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; @SpringBootTest @Transactional class MemberServiceIntegrationTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test void 회원가입() { //given Member member = new Member(); member.setName("spring100"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //when memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } } // MemberService import org.springframework.transaction.annotation.Transactional; import with.younghan.kim.domain.Member; import with.younghan.kim.repository.MemberRepository; import java.util.List; import java.util.Optional; @Transactional public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } /** * 회원 가입 */ public Long join(Member member) { validateDuplicateMember(member); //중복 회원 검증 memberRepository.save(member); return member.getId(); } private void validateDuplicateMember(Member member) { memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); } /** * 전체 회원 조회 */ public List<Member> findMembers() { return memberRepository.findAll(); } public Optional<Member> findOne(Long memberId) { return memberRepository.findById(memberId); } } // JpaMemberRepository import with.younghan.kim.domain.Member; import javax.persistence.EntityManager; import java.util.List; import java.util.Optional; public class JpaMemberRepository implements MemberRepository { private final EntityManager em; public JpaMemberRepository(EntityManager em) { this.em = em; } @Override public Member save(Member member) { em.persist(member); return member; } @Override public Optional<Member> findById(Long id) { Member member = em.find(Member.class, id); return Optional.ofNullable(member); } @Override public Optional<Member> findByName(String name) { List<Member> result = em.createQuery("select m from Member m where m.name = :name", Member.class) .setParameter("name", name) .getResultList(); return result.stream().findAny(); } @Override public List<Member> findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); } } // Member import javax.persistence.*; @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
로그인 및 권한관리 관련한 부분을 다루신 강의가 있나요??
기능들 구현하는 부분을 따라해보면서 공부하고 있는 시작 단계입니다. 로그인과 권한관리를 다루고 구현하는 기능들의 중요성과 필요성을 느꼈는데 해당 강의에서는 위의 기능은 배제한다고 하셔서 해당부분에 대해 강사님께서 다루신 관련 강의가 있나요??
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
기본생성자 질문드리겠습니다.
BlackBox(){}BlackBox(String modelName, String resolution, int price, String color){}위와같이 매개변수가 없는 기본생성자매개변수가 있는 생성자가 있는 경우에 해당 클래스를 참조하는 객체를 생성하는 경우BlackBox b2 = new BlackBox("하양이", "UHD", 300000, "화이트");이와같이 매개변수가 있는 생성자를 참조하는 객체를 만든다면 메소드가 오버로딩이 되어 기본생성자를 호출하지 않는건가요? 매개변수가 있는 생성자와 없는 기본생성자 둘다 없는 경우에는 에러가 나지 않는데. 매개변수가 있는 생성자만 생성을 한뒤해당 메소드를 참조하는 객체를 생성하는 경우 BlackBox b2 = new BlackBox("하양이", "UHD", 300000, "화이트");와같이 형식을 맞춰 해당 객체를 생성하는 오류가 나는 이유를 알고싶습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew 이후 실행안됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.인텔리제이 와 Git Bash 연동을 하고 Alt + F12 눌러서 터미널 실행했습니다../gradlew build 와 cd build/libs 까지 성공했는데java -jar hello-spring-0.0.1-SNAPSHOT.jar 는 엔터를 눌러도 아무일도 일어나지 않네요파일의 권한이 rw 밖에 없어서 그런거 같아서 chmod 777 hello-spring-0.0.1=SNAPSHOT.jar로 실행 권한을 부여하려고 했는데도 실행 권한이 바뀌지가 않네요....어떻게 해야 해당 자바 파일 실행할 수 있을까요
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
질문 드리겠습니다.
강의를 듣는 중 갑자기 의문이 들어서 질문드립니다.main메소드는 해당 클래스파일을 실행하는경우 가장 먼저 실행되는 메소드로 알고있습니다.근데 blackBox.java의 경우에는 main메소드를 생성하지 않고 개별의 메소드만 생성하여 다른 파일에서 객체를 생성하여 해당 메소드를 호출하여 사용하고있습니다.그렇다면 main메소드가 없다면 해당 클래스는 자체적으로 자신의 메소드를 수행시킬 수 없는것일까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
통합테스트에서 H2 Member테이블에 정보추가 X
통합테스트 진행하고있는데회원가입이 오류없이 잘 작동합니다.하지만 MEMBER테이블에 가보면 아무런 정보가 추가되지 않았습니다.어디에 문제가 있는걸까요? 다시 실행해보니 중복회원이라고 뜨긴합니다ㅠ그래도 테이블에는 내용이 없습니다
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO 기본값 설정법
안녕하세요. 강의를 듣던 중 @RequestParam 의 defaultValue 값 설정 관련해서 궁금증이 생겨 질문남깁니다.강의에서는 offset, limit 값을 @RequestParam을 사용해 defaultValue 값을 설정할 수 있었는데, 만약 @ModelAttribute나 @RequestBody로 객체를 통해 값을 받는 상황에서는 어떻게 객체 내부 필드들에 defaultValue를 설정할 수 있을까요??