inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

feignClient의 consumes와 @RequestHeader는 같은 역할인가요?

미해결

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

카카오 토큰 발급 구현(2) 5:27 부분 feignClient의 PostMapping에 consumes = "application/json"이 있는데 이 부분이 외부 api 요청시 헤더 지정 역할인 것으로 알고 있습니다. 그런데 카카오에서는 x-form-urlencoded로 요청하라고 해서 @RequestHEader("Content-Type)을 따로 지정해주는 것으로 이해했느데요 consumes="x-form-urlencoded"로 하고 파라미터에서 contentType을 제거해도 되나요?

  • spring-boot
  • jpa
  • web-api
3ㅇ 댓글 1 좋아요 0 조회수 982

양뱡향 통신의 객체에서의 멤버 팀 변경 질문

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 이 그림에거 테이블이 아닌 객체만을 이용해서 MemberA의 팀을 TeamA에서 TeamB로 변경하려면 자바에서 Member.setTeam("TeamB") 하고 TeamA의 리스트에서 MemberA를 삭제하고 TeamB에서 List의 MemberA를 추가해주어야 하는게 맞죠??

  • java
  • jpa
박준형 댓글 1 좋아요 0 조회수 378

em.flush, em.clear() 강의 7분 35초

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 7분 30초에 강사님이 flush 하고 clear를 해줘야 한다고 했느데 안하고 하면 왜 for문의 print가 안되는 걸까요?? em.find(Member.class, member.getId())는 1차 캐시에서 얻어와서 값이 print되어야 하는거 아닌가요?

  • java
  • jpa
박준형 댓글 2 좋아요 0 조회수 400

instanceId

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

instanceId 설정할때 ${spring.application.instanc_id:${random.value}}로 들여쓰는 이유가 뭔가요? 그냥 ${random.value}로도 생성이 되는것은 확인을 했는데요.. 이유를 모르겠습니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
이무 댓글 1 좋아요 0 조회수 377

강사님 디버깅시 중단점 안 찍어도 자동으로 찍히는거 어떻게 하나요?

미해결

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

안녕하세요 Spring Cloud OpenFeign(2) 강의 4:59 지점 학습중에 강사님의 경우 breaking point를 설정하지 않았음에도 자동으로 오류 지점에서 프로그램이 중단되는 이유가 궁금합니다.

  • spring-boot
  • jpa
  • web-api
3ㅇ 댓글 1 좋아요 0 조회수 272

saveAndFlush

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] saveAndFlush가 실무에서 어느 상황에서 사용될 수 있는지 알 수 있을까요? isolation level이 기본적으로 일정 수준(read committed) 이상이라 동일 트랜잭션 내에서 flush가 필요한 상황이 있어야할 것 같은데 saveAndFlush가 필요한 시점이 생각이 들지 않네요. jpql 쓰는 경우에는 자동으로 flush를 날리고 있고 그 외 다른 기술을 같이 사용하는 경우에 필요한걸까요? 어디서 사용되는지 알고 싶습니다. 감사합니다.

  • java
  • jpa
jooohe 댓글 1 좋아요 0 조회수 308

TDD 질문입니다.!!

미해결

Practical Testing: 실용적인 테스트 가이드

우빈님 커뮤니티나 유튜브에서 잘보고 있습니다.ㅎㅎ TDD관련해서 질문이있는데, 프로덕션 코드 이전에 테스트 케이스를 먼저 작성할때 성공/실패 케이스에 대해서 미리 작성하고 "리팩토링"단계에서 앞서 작성한 케이스를 성공하도록 프로덕션 코드를 구현하는 순으로 하나요? 아니면, 성공 케이스만 작성하고 리팩토링 단계에서 프로덕션 코드를 구현하고, 이후 실패 케이스를 작성하고 프로덕션 코드를 수정하는 순으로 하나요?!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
양소은 댓글 2 좋아요 1 조회수 360

WebSecurityCustomizer 와 SecurityFilterChain 차이점에 대해 여쭙고싶어요

미해결

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

@Configuration @EnableWebSecurity(debug = true) // 운용환경에서는 꼭 꺼야한다. public class SecurityConfig { @Bean // Spring Security 무시시키기 public WebSecurityCustomizer webSecurityCustomizer() { return new WebSecurityCustomizer() { @Override public void customize(WebSecurity web) { // /error -> spring에서 기본제공하는 것 web.ignoring().requestMatchers("/favicon.ico", "/error") // .requestMatchers(new AntPathRequestMatcher("/h2-console/**")); // 멍청한 우리들을 위해 스프링이 제공해주신 위으 코드를 대신하는 메서드 .requestMatchers(toH2Console()); } }; } @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // and() 메서드가 deprecated되어 람다식으로 사용하라고 한다. return http.authorizeHttpRequests(authorizeHttpRequests -> { authorizeHttpRequests .requestMatchers("/auth/login").permitAll() .anyRequest().authenticated(); }).csrf(AbstractHttpConfigurer::disable).build(); } } 안녕하세요 호돌맨님 위의 WebSecurityCustomizer에서 하는 일을 밑의 SecurityFilterChain에서도 할 수 있을것 같은데요 둘을 어떻게 사용방법을 구분해야할지 여쭙고 싶어요 30년차사수(ChatGPT) 에 물어보니 차이점 : WebSecurityCustomizer 는 주로 보안 구성을 조정하고 보안 설정을 사용자 정의하는 데 사용됩니다. 이를 통해 더 세부적인 보안 요구 사항을 처리할 수 있습니다. SecurityFilterChain 은 주로 실제 보안 필터 체인을 구성하는 데 사용됩니다. 여러 보안 필터가 어떤 순서로 실행될지를 결정하며, 보안 관련한 요청 처리를 담당합니다. 둘 다 Spring Security의 핵심 요소이며 보안 구성과 필터 체인의 다른 측면을 다룹니다. 일반적으로 SecurityFilterChain 을 사용하여 필터 체인을 정의하고, 필요에 따라 WebSecurityCustomizer 를 사용하여 더 많은 세부 설정을 적용할 수 있습니다. 라는데.. 처음 Security를 접하다보니 감이 안잡히네용..

  • vue.js
  • aws
  • spring-boot
  • jpa
  • spring-security
falsystack 댓글 1 좋아요 0 조회수 3181

call the next value

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 30분 쯤 시퀀스로 pk를 만드는 방법에서 call next value로 pk를 디비에서 받아온다고 하셨는데 이는 select문이랑 다른건가요?? 디비에서 받아오려면 결국 selcet문 사용해야ㅕ하는 거 아닌가요?

  • java
  • jpa
박준형 댓글 1 좋아요 0 조회수 482

JPA의 엔티티와 값타입 구분.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. JPA를 수강하고 '도메인 주도 개발 시작하기'라는 책을 읽었는데요. 궁금한 점이 생겨 글을 남기게 되었습니다. JPA의 엔티티와 값 타입에 대해 읽게 되었는데요.애그리거트[루트 앤테티]를 뺀 나머지는 구성 요서는 대부분 밸류이다. 라고 하여 라이프 사이클이 다르면 루트 엔티티로 해야 되고, 같으면 @Embeddable 애너 테이션을 사용하여 값 타입으로 구현해야 된다고 보았습니다. 강의에서는 주소를 구현할 때 잠시 사용하였던 걸로 기억하는데, 어떤 게 맞는지 궁금하여 글을 남기게 되었습니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
콩코드여객기 댓글 1 좋아요 0 조회수 301

JPQL로 엔티티를 조회해오는 경우에는 준영속 상태인가요?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. EntityManager의 em.find() 메서드로 조회해온 엔티티는 영속 상태의 엔티티이고, 이것이 아닌 em.createQuery()로 조회해 오는 경우는 준영속 상태인가요? 보니까 JPQL로 조회해온 엔티티의 경우에는 더티 체킹이 일어나지 않는 것 같습니다. 혹시 제가 제대로 이해한 것이 맞을까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
전민 댓글 1 좋아요 0 조회수 414

강사님께서 사용하고 계신 개발 환경이 궁금합니다.

미해결

Practical Testing: 실용적인 테스트 가이드

IDE를 보니 유용한 플러그인들이 보이는 것 같아요. 궁금합니다...!

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
Louie(루이) 댓글 1 좋아요 0 조회수 797

쿼리쪽 색상 변경

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 선생님처럼 이렇게 색상하려면 어떻게 해야하나요? 폰트는 intellij darcula 사용중입니다 쿼리쪽 색상 따라하고 싶어요

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
민규 댓글 2 좋아요 0 조회수 1186

Slf4j 모듈 찾기 오류

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 내용] 여기에 질문 내용을 남겨주세요. 이번에 인텔리제이를 처음 사용합니다. 모듈안에서 찾을 수 없다고 해서 pom.xml에서 의존성을 선언하였습니다. 의존성을 선언해도 오류가 발생됩니다...(구글링을 통해 버전 확인을 해봤지만 찾지 못함) <질문 요약> 1) Slf4j 버전 확인하는 법 2) pom.xml 에서 dependcy가 밑줄 이유, 해결방법 3) 의존성 선언을 하였지만 선언 실패 감사합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
소진영 댓글 2 좋아요 0 조회수 916

섹션1 마지막 강의 TEST 가 안 돌아갑니다..!

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) MemberRepositorytest이고 application.yml 입니다. 아래와같이 오류가 계속 뜹니다.. 아무리 해도 해결이 안 됩니다 ㅜㅜㅜ 도와주실수있으신가요 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$1.execute( IdeaTestRunner.java:38 ) at com.intellij.rt.execution.junit.TestsRepeater.repeat( TestsRepeater.java:11 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs( IdeaTestRunner.java:35 ) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart( JUnitStarter.java:232 ) at com.intellij.rt.junit.JUnitStarter.main( JUnitStarter.java:55 ) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dbConnection' defined in jpabook.jpashop.dbConnection defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: interface org.apache.catalina.User at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean( AbstractAutowireCapableBeanFactory.java:1804 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:620 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:542 ) at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:335 ) at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:234 ) at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:333 ) at org.springframework.beans.factory.support .AbstractBeanFactory.getBean( AbstractBeanFactory.java:208 ) at org.springframework.beans.factory.support .DefaultListableBeanFactory.preInstantiateSingletons( DefaultListableBeanFactory.java:936 ) at org.springframework.context.support .AbstractApplicationContext.finishBeanFactoryInitialization( AbstractApplicationContext.java:921 ) at org.springframework.context.support .AbstractApplicationContext.refresh( AbstractApplicationContext.java:583 ) 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 ) ... 27 more Caused by: java.lang.IllegalArgumentException: Not a managed type: interface org.apache.catalina.User at org.hibernate.metamodel.internal.MetamodelImpl.managedType( MetamodelImpl.java:583 ) at org.hibernate.metamodel.internal.MetamodelImpl.managedType( MetamodelImpl.java:85 ) at org.springframework.data.jpa.repository.support .JpaMetamodelEntityInformation.<init>( JpaMetamodelEntityInformation.java:75 ) at org.springframework.data.jpa.repository.support .JpaEntityInformationSupport.getEntityInformation( JpaEntityInformationSupport.java:66 ) at org.springframework.data.jpa.repository.support .JpaRepositoryFactory.getEntityInformation( JpaRepositoryFactory.java:233 ) at org.springframework.data.jpa.repository.support .JpaRepositoryFactory.getTargetRepository( JpaRepositoryFactory.java:182 ) at org.springframework.data.jpa.repository.support .JpaRepositoryFactory.getTargetRepository( JpaRepositoryFactory.java:165 ) at org.springframework.data.jpa.repository.support .JpaRepositoryFactory.getTargetRepository( JpaRepositoryFactory.java:76 ) at org.springframework.data.repository.core.support .RepositoryFactorySupport.getRepository( RepositoryFactorySupport.java:325 ) at org.springframework.data.repository.core.support .RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5( RepositoryFactoryBeanSupport.java:323 ) at org.springframework.data .util.Lazy.getNullable( Lazy.java:231 ) at org.springframework.data .util.Lazy.get( Lazy.java:115 ) at org.springframework.data.repository.core.support .RepositoryFactoryBeanSupport.afterPropertiesSet( RepositoryFactoryBeanSupport.java:329 ) at org.springframework.data.jpa.repository.support .JpaRepositoryFactoryBean.afterPropertiesSet( JpaRepositoryFactoryBean.java:144 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.invokeInitMethods( AbstractAutowireCapableBeanFactory.java:1863 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean( AbstractAutowireCapableBeanFactory.java:1800 ) ... 42 more

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
hong19kings 댓글 3 좋아요 0 조회수 614

연관 관계 메서드에 관해 질문있습니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } 강사님은 양방향 연결을 해서 연관관계 매서드 작성하셨는데 단방향 연결해서 orderItem에만 @ManyToOne 한 경우에는 어떻게 하나요? 아니면 다대다라서 중간테이블쓴경우에는 무조건 양방향 설정을 해야하나요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
ㅇㅇㅇ 댓글 1 좋아요 0 조회수 346

OneToMany에서 @JoinColumn(nullable = false, updatable = false)에 대하여

미해결

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

안녕하세요 궁금한 것이 있습니다. JPA에서 @OneToMany를 통한 단방향 연관관계에서 문제로 지적되는 것이 Many쪽의 FK를 update. 하기 위한 추가적인 쿼리 문제인데요. (물론 이것만이 @OneToMany 단방향의 문제는 아닙니다만) 이 문제는 @JoinColumn(nullable = false, updatable = false)이라는 설정을 통해 해결할 수 있는 것으로 알고 있습니다. 이러면 One을 먼저 insert한 후, Many를 insert할 때 One의 PK를 바탕으로 추가적인 업데이트 쿼리 없이 바로 insert를 해주는걸로 알고 있습니다. 근데 "대체 JPA는 왜 이렇게 설계한걸까?" 라는 의문이 듭니다. 물론 앞서 말씀드린 방법은 FK가 not nullable이여야하고, FK가 변경되면 안된다는 제약 조건이 들어가야하기 때문에, 모든 상황에서 공통적으로 적용되는 방법은 아닙니다만, 차라리 이런 설정을 default로 하는게 이해하기 더 쉬운 방법아닌가? 라는 생각이 들어서요. FK가 nullable하고, 또 변경될 수 있는 상황은 상대적으로 적은데다가, insert한 컬럼에 FK를 추가해주기 위해 update 쿼리가 나가게 되는 로직은 성능적으로도(드라마틱하진 않지만) 좋지 않고, hibernate를 처음 사용하는 사람은 "대체 왜 이렇게 쿼리가 나가지?"라는 식으로 이해하기 어렵다고 판단이 들거든요. 사실 이게 프로그래밍 하는데 중요한 지식은 아니지만.. 그냥 순전히 호기심으로 궁금합니다.

  • java
  • jpa
ㅎㅅ 댓글 1 좋아요 0 조회수 1058

JpaRepository 구현 관련

해결됨

실전! 스프링 데이터 JPA

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. SimpleJpaRepository가 처음에 생성될 때 entitymanager를 의존성 주입을 받아서 초기화가 됩니다. 문제는 전에 강의에서 entitymanager는 트랜색션 하나당 하나를 생성해야 한다고 했던 것이 생각납니다. 문제는 이렇게 처음 초기화할 때 entitymanager를 주입받게되면 한 entitymanager를 스프링 프로그램이 끝날 때 까지 사용하게 되는데 문제가 없는건가요? https://jiwondev.tistory.com/225 이런식으로 트랜색션이 끝나고 연결이 끝나도 entitymanager를 유지하면 문제가 생기지 않을까 생각되어 질문드립니다.

  • java
  • spring
  • spring-boot
  • jpa
See Go 댓글 2 좋아요 0 조회수 357

hello jpa 애플리케이션 개발 오류

미해결

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

자바 17 사용하는데 아래와 같은 오류가 납니다.

  • java
  • jpa
gg 댓글 2 좋아요 0 조회수 316

인기 태그

인프런 TOP Writers

주간 인기글