inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

이럴 때는 엔티티 관계 설정을 1:1로 해야하는지 1:n 으로 해야하는지 궁금합니다.

미해결

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

[질문 내용] https://www.inflearn.com/questions/958528 이전 질문에 이어서 질문 드립니다. 이전 내용을 간단히 요약하면 보안매체 엔티티와 보안매체가 갖는 토큰을 엔티티로 표현할 때, 보안매체 한 개에 유효한 토큰은 하나만 가질 수 있으므로 1:1 관계로 해야할지, 아니면 사용자에 연결된(만료된 토큰과 현재 유효한 토큰) 모든 토큰을 가지고 온 후, 그 이후에 유효한 토큰을 소스상에서 필터해서 얻어내는 식으로 하여 1:n으로 해야할지 여쭈어보았는데요. 답변으로 1:n으로 관계를 짓고, 유효한 토큰을 필터하는 식으로 하길 권해주셨습니다. 이게 '보안매체에 유효한 토큰은 오직 한개' 라는 개념적인 관점에서는 1:1이지만, JPA에서의 엔티티 클래스로 표현해보자면 하나의 고객KEY를 외래키로 하는 토큰은 여러개가 있을 수 있으니 1(단일객체)가 아닌 N(리스트)로 표현하고, 비즈니스 로직상에서 유효한 하나를 뽑아서 현재 활성화된 토큰을 얻어낸다고 보면 되는걸까요? 매번 쿼리를 통해 필요로하는 객체로 뽑아내다가, 이를 엔티티 클래스, 관계로 소스를 짜려니 어색하네요. 항상 감사합니다. 답변주시면 감사드리겠습니다!! ㅠㅠ

  • java
  • jpa
인생은회전목마 댓글 2 좋아요 0 조회수 378

Stubbing을 주로 외부 api를 호출할 때 사용하나요?

미해결

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

안녕하세요~ 'Mockito로 Stubbing하기' 강의를 듣고 궁금한 내용이 있습니다. 메일을 전송하는 부분을 stubbing하셨는데요. 보통 어떤 경우에 실무에서 stubbing하여 테스트를 작성하나요? 감이 잘 안잡히네요.. 제가 이해한건 아래처럼 이해했습니다. sendMail 메서드에 대한 테스트는 '메일만 전송'하는 테스트를 작성한다. sendOrderStatisticsMail 테스트를 작성하는 도중 sendMail 부분은 이미 '1번'에서 따로 테스트 케이스를 작성했으므로 넘어가도 무방하다. 따라서 여기는 stubbing하여 간단하게 넘어간다. 즉, 이번 예시에서는 메일이지만 확장하여 생각해본다면 외부 api를 호출하는 경우에는 stubbing을 진행한다.

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
LetsGoHigh 댓글 2 좋아요 0 조회수 866

PostConstructor 관련해서 질문있습니다!

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요 항상 강의 잘 보고 있습니다. 영한님께서 알려주신 내용으로 공부와 토이프로젝트를 병행해나가다 이해가 가질 않는 부분이 있어서 질문드립니다. 상황 A클래스에 @PostConstructor 어노테이션을 붙여 객체 a를 미리 저장해 DB에 저장을 하고 B클래스에도 @PostConstructor를 붙여 객체 b를 저장하려 하였습니다. (A클래스와 B클래스의 연관관계는 일대다입니다.) a객체에 b객체를 리스트 형태로 저장할 수 있게끔 빈 리스트를 만들어 저장하는 것까지 A클래스에서 확인을 하였고 B클래스에서 b객체를 만들고 아까 저장한 a객체를 DB에서 가져오는것까지 확인하였습니다. 이후 a객체와 b객체의 연관관계를 연관관계 편의 메서드로 만들어주려하였으나 a객체에서 b객체들을 담을수 있게끔 만들어둔 리스트 형식의 필드가 lazyinitializationexception 예외를 발생시키며 더미데이터 생성에 실패하였습니다. 시도해 본 것들 @OneToMany의 기본 로딩 전략이 지연로딩이기에 생긴 문제인가 싶어 em.flush, @GraphEntity, hibernate.initialize까지 해보았으나 똑같이 lazyinitializationexception를 발생시키며 더미데이터 생성에 실패하였습니다. (혹시나 해서 즉시로딩으로 변경하니 더미데이터 생성은 문제없이 잘 되었습니다.) 궁금한 점 혹시 어떤 이유로 다음과 같은 현상이 발생했는지 알 수 있을까요?

  • java
  • spring
  • spring-boot
  • jpa
이상민 댓글 2 좋아요 0 조회수 650

Count 쿼리 발생에 대해 궁금합니다.

미해결

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

안녕하세요 호돌맨님 ! 질문이 있습니다 !! Pageable 을 사용해서 페이징 구현 시 Full Scan 을 하기 위해 Count 쿼리가 발생하는걸 확인했는데, Pageable 에서는 페이징 처리를 위해 총 데이터의 개수를 파악해야 하기 때문이니까 Count 쿼리가 필요한거고 Querydsl 은 직접 limit 값, offset 값을 지정하기 때문에 Full Scan 할 필요가 없으니 Count 쿼리가 필요없는게 맞을까요 ?

  • vue.js
  • aws
  • spring-boot
  • jpa
  • spring-security
전병준 댓글 2 좋아요 0 조회수 579

long 반환타입

미해결

실전! 스프링 데이터 JPA

MemberJpaRepository의 count 함수에서 Long이 아닌 long 으로 반환타입을 작성 하는 이유가 뭔가요? Long으로 해도 상관 없는걸까요?

  • java
  • spring
  • spring-boot
  • jpa
.. 댓글 1 좋아요 0 조회수 423

jpa_pdf 객체 조회 부분에서..

해결됨

스프링 DB 2편 - 데이터 접근 활용 기술

memberId를 파라미터로 받고 해당하는 단일 Member 객체를 반환하는 find 메소드와 연관지었을 때 JOIN 뒤에 있어야 할 WHERE M.MEMBER_ID = ? 와 같은 where 절이 없는데.. 생략된 것인가요?

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
헛핫훗 댓글 1 좋아요 0 조회수 421

서버 실행

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

이리저리 해봐도 에러는 없는거 같은데 서버 실행이 안되네요... 어떻게 해결할수 있을까요??

  • java
  • spring
  • aws
  • spring-boot
  • jpa
pilotkdw999 댓글 1 좋아요 1 조회수 418

@BatchSize와 SQL Parsing

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요. 강의 잘 듣고 있습니다. BatchSize라는 기능을 배워서 상당히 놀라웠는데요. 해당 기능을 사용해 실행되는 쿼리를 보니 IN (?, ?)와 같이 바인딩 변수를 이용하는 것으로 보이는데 만약 말씀하신것처럼 BatchSize를 1000개로 잡았다 할 떄 최악의 경우 IN절 내부의 ? 바인딩 변수가 계속 변하게 된다면 (1개 ~ 1000개 ) 소프트 파싱의 이점을 살리지 못하는 경우가 발생할 수도 있나요 ?? 항상 좋은 강의 만들어주셔서 감사합니다

  • java
  • spring
  • spring-boot
  • jpa
AudioTrack 댓글 1 좋아요 0 조회수 622

컨트롤러에서 @Valid로 필드를 검증을 한 이후 질문

미해결

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

안녕하세요~ 좋은 강의 잘 듣고 있습니다. 질문이 하나 있는데요. 컨트롤러에서 @Valid로 필드를 검증이 되지 않으면 공통 예외처리에 걸려서 응답처리가 되고, 정상적으로 필드가 검증이 됐다면 서비스단에 로직을 처리할텐데요~ 서비스단에서는 다시 필드를 검증할 필요가 없을까요? 컨트롤러, 서비스를 나눠서 테스트를 작성하다보니 서비스 단에서도 검증을 해야하나 궁금합니다. 실무에서는 어떻게 보통 어떻게 진행되나요?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
LetsGoHigh 댓글 2 좋아요 0 조회수 675

GetMapping에서 Required request body is missing 에러

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하세요 UI와 GetMapping API 테스트를 하는데 로컬에서 테스트 할 때는 잘 되는데 API 테스트를 하면 아래와 같이 Required request body 에러가 뜹니다. Client에서 보낸 JSON데이터를 로컬에서 테스트 하면 잘 되는데 GetMapping 만 쓰는 API에서는 @RequestBody 가 안되는걸까요..? (비슷한 내용의 코드인데 GetMapping, PUTMapping, POSTMapping이 있는 API에서는 또 잘되고 있어서 이런의문점이 듭니다.) 아래 코드와 에러 내용 드립니다. . 코드 (Parameter 명과 Class명 수정했습니다.) @Slf4j @RestController @RequestMapping(value = "/", method = RequestMethod. GET ) public class SchoolController { @Autowired ClassService cs; @GetMapping("/School") public List<Event> School( @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestBody Class class ) throws Exception { List<Class> ClassList = new ArrayList<Class>(); ClassListt = cs.selectClassBySearchCriteria(class.getId(), class.getName(), class.getCreateTime(), class.getUpdateTime()); } . 에러내용 Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.util.List<mes.sdc.mads.vo.Event> mes.sdc.mads.controller.DetectionController.anomalyEvent(mes.sdc.mads.vo.Event,org.springframework.ui.Model) throws java.lang.Exception]

  • java
  • spring
  • spring-boot
  • jpa
tjam1723 댓글 1 좋아요 0 조회수 8918

주문 Cancel 기능 질문드립니다.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 주문 취소하는 로직을 Post 말고 Put으로 하려고 하는데 Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported] 이런 오류가 뜹니다. 제가 한건 controller에서 @postMapping -> @PutMapping cacel 함수에서 form.setAttribute("method", "put") 으로 변경 이렇게 두개로 바꿧는데 post에서는 잘 동작하는 로직이 put에서는 잘 동작하지 않아 이부분 질문드립니다!!

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
Charlie Park 댓글 1 좋아요 0 조회수 613

test 소스에서 @Autowired EntityManager em; 시 오류가 납니다 ㅠㅠ

미해결

실전! Querydsl

java 소스에서는 EntityManager em 사용시 오류가 안나는데, test소스에서 EntityManager em @Autowired 시 빨간줄로 오류가 생깁니다 ㅠㅠ.. build.gradel, tsetd의 application.yml 같이 올립니다 무슨이유 인지 모르겠습니다 ㅜㅜ.. buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '2.7.1' id 'io.spring.dependency-management' version '1.1.0' //querydsl 추가 //id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'saft' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' // NotEmpty compileOnly 'org.projectlombok:lombok' //runtimeOnly 'com.h2database:h2:1.4.199' implementation 'com.h2database:h2' //querydsl 추가 //implementation "com.querydsl:querydsl-jpa:${queryDslVersion}" //annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}" implementation 'com.querydsl:querydsl-jpa:5.0.0' // implementation 'com.querydsl:querydsl-apt:5.0.0' // 추가 ↓ annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" //파라미터 확인 라이브러리 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8' // MapStruct implementation 'org.mapstruct:mapstruct:1.4.2.Final' annotationProcessor "org.mapstruct:mapstruct-processor:1.4.2.Final" annotationProcessor( 'org.projectlombok:lombok', 'org.projectlombok:lombok-mapstruct-binding:0.1.0' ) //test추가 annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } test { useJUnitPlatform() } /* //querydsl 추가 시작 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } compileQuerydsl{ options.annotationProcessorPath = configurations.querydsl } configurations { compileOnly { extendsFrom annotationProcessor } querydsl.extendsFrom compileClasspath } //querydsl 추가 끝 */ def generatedDir = "src/main/generated" clean { delete file(generatedDir) } spring: profiles: active: test datasource: url: jdbc:h2:tcp://localhost/~/saft username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true use_sql_comments: true logging.level: org.hibernate.SQL: debug # org.hibernate.type: trace

  • java
  • jpa
박태규 댓글 2 좋아요 0 조회수 523

/order에서 submit시 /orders 페이지에서 Whitelabel page 에러가 발생합니다

해결됨

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

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 구글 드라이브 주소 : https://drive.google.com/file/d/11uKs63KBKfCIPAPzVZNzSKVzehlHZ_nO/view?usp=drive_link 강의 내용을 따라하던 중 /order 페이지를 통해 상품 주문 후 submit 버튼을 누를 시 이동하는 /orders 페이지에서 사진과 같은 Whitelabel page가 발생합니다. 에러 메세지 전문은 다음과 같습니다 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sun Jul 30 16:11:18 KST 2023 There was an unexpected error (type=Internal Server Error, status=500). An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse( AbstractMarkupTemplateParser.java:241 ) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone( AbstractMarkupTemplateParser.java:100 ) at org.thymeleaf.engine.TemplateManager.parseAndProcess( TemplateManager.java:666 ) at org.thymeleaf.TemplateEngine.process( TemplateEngine.java:1098 ) at org.thymeleaf.TemplateEngine.process( TemplateEngine.java:1072 ) at org.thymeleaf.spring5.view.ThymeleafView.renderFragment( ThymeleafView.java:366 ) at org.thymeleaf.spring5.view.ThymeleafView.render( ThymeleafView.java:190 ) at org.springframework.web.servlet.DispatcherServlet.render( DispatcherServlet.java:1406 ) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult( DispatcherServlet.java:1150 ) at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1089 ) at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:965 ) at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1006 ) at org.springframework.web.servlet.FrameworkServlet.doGet( FrameworkServlet.java:898 ) at javax.servlet.http.HttpServlet.service( HttpServlet.java:529 ) at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:883 ) at javax.servlet.http.HttpServlet.service( HttpServlet.java:623 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:209 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:153 ) at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:51 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:178 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:153 ) at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:178 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:153 ) at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:178 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:153 ) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:178 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:153 ) at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:167 ) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:90 ) at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:481 ) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:130 ) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:93 ) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:74 ) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:343 ) at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:390 ) at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:926 ) at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1791 ) at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) at java.base/java.lang.Thread.run( Thread.java:834 ) Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.orderDate" (template: "order/ 에러 메세지를 살펴보니 html의 item.orderDate 이 부분이 문제인 것 같아서 연관된 부분을 전부 살펴봤는데도 어디서 에러가 발생하는지 찾지 못했습니다..혹시 원인을 알 수 있을까요ㅠㅠㅠ

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
김스껄 댓글 1 좋아요 1 조회수 888

Entity & 기본생성자와의 관계

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] Memeber Entity에 기본생성자가 없으면 실행 후 회원 목록 조회를 하려고 하면 에러가 발생하더라구요!! 혹시 기본생성자가 하는 Entity에 필수적으로 있어야 하는 이유가 궁금합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
Charlie Park 댓글 1 좋아요 0 조회수 607

@JoinTable 기본키, 복합키

해결됨

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

안녕하세요 @JoinTable 사용 중 궁금증이 생겨서 질문 남깁니다. 연습중에 course와 category를 다대다로 연결하기 위해 @JoinTable을 사용했습니다. 추가적인 필드가 필요없다 생각해서 우선 다대다 관계를 풀어주는 엔티티를 만들지 않고 @JoinTable을 사용했습니다. 여기서 질문 입니다. 검색을 해본 결과 @JoinTable은 들어온 fk를 복합키로 사용한다고 보았습니다. 그렇다면 제 생각에는 예를들면 @JoinTable인 course_category에 (course_id = 1 , category_id = 1)인 데이터가 존재하면 (course_id = 1 , category_id = 1)라는 데이터가 중복될 수 없다고 생각했습니다. 하지만 중복된 데이터가 저장되는 것이 가능했습니다. 이 이유가 왜인지 궁금합니다!! @ManyToMany @JoinTable(name = "COURSE_CATEGORY", joinColumns = @JoinColumn(name = "course_id"), inverseJoinColumns = @JoinColumn(name = "category_id")) private List<Category> categoryList = new ArrayList<>();  @Id 필드를 사용하기 위해 category_course 엔티티를 따로 만드는 방법으로 수정 중에 있는데 위의 질문 내용을 짚고 넘어가고 싶어서 질문 남깁니다!

  • java
  • jpa
te___ho 댓글 1 좋아요 0 조회수 598

@Deprecated

해결됨

실전! Querydsl

안녕하세요 queryDsl의 기본 문법에 대해서 듣고 있는데요. 현재 기준, fetchResults(), fetchCount() 가 deprecated 되었네요.(자바11, springboot 2.7 버전에 맞는 queryDsl) 강의 끝부분에서 말씀하신, 복잡한 페이징 & 쿼리 부분에서는 coun와 select 쿼리가 다르니까 따로 작성해서 해야된다는 말씀 것과 연관되어서 그런 것 맞을까요? 그러면 @Deprecated 된 현재는 fetchResults(), fetchCount() 는 사용을 지양하고 별개의 쿼리로 각각의 값들을 얻어 조합해서 response 해주는 것이 맞죠?

  • java
  • jpa
highjune 댓글 1 좋아요 3 조회수 1584

생성자

해결됨

실전! Querydsl

안녕하세요 jpa 인강 다 듣고 querydsl 강의 듣고 있습니다. 다름이 아니라 기본생성자의 접근제한자를 PROTECTED 로 제한한 이유가 있을까요? 기본생성자 자체가 필요한 이유는 프록시 객체 생성시 필요하다고 알고 있는데요, 굳이 PROTECTED 로 설정한 이유를 알고 싶습니다. 감사합니다.

  • java
  • jpa
highjune 댓글 1 좋아요 0 조회수 415

인기 태그

인프런 TOP Writers

주간 인기글