묻고 답해요
121만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
controller의 dto를 repository에서 사용할 수 없는 이유
보통 흐름이 controller -> service -> repository 로 흐르기 때문에 service에서 repository를 의존하는 것은 상관이 없지만 반대로 repository에서 service를 의존하는 것은 문제가 됩니다.(예를들면 service단의 dto를 참조한다던지 등)이렇게 순환 관계가 생길때의 문제가 무엇일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
계속 스프링부트 실행에 오류가 납니다
알려주신대로 설정하였고 , 초기 설정을 하였는데 저런 오류가 계속 납니다 자바 sdk는 java17로 설정해두었습니다 오류는 A problem occurred configuring root project 'jpashop'.> Could not resolve all files for configuration ':classpath'.> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.6.Required by:project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.1.6> No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.6 was found. The consumer was configured to find a library for use during runtime, compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.5' but:- Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.1.6 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component for use during compile-time, compatible with Java 17 and the consumer needed a component for use during runtime, compatible with Java 11- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.1.6 declares a component for use during runtime, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 11)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '8.5')- Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.1.6 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component for use during compile-time, compatible with Java 17 and the consumer needed a component for use during runtime, compatible with Java 11- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '8.5') 입니다
-
미해결실전! Querydsl
@Transactional과 @PostConstruct를 나눈 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@PostConstruct나 @Transactional이나 둘 다 프록시인데,프록시는 보통 외부에서 호출을 하면 가로채서 먼저 프록시 메소드를 실행하고 넘겨주는데, 저거는 둘 다 프록시라 뭐를 해야할 지 몰라서? 프록시 메소드는 하나만 실행되서? 같이 쓰지 않는건가요?
-
미해결실전! Querydsl
allEq() 만들기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]allEq를 만들기 위해서, private BooleanExpression allEq(MemberSearchCondition condition){ return usernameEq(condition.getUsername()) .and(teamNameEq(condition.getTeamName())) .and(ageGoe(condition.getAgeGoe())) .and(ageLoe(condition.getAgeLoe())); }이런 식의 코드를 만들기 위해서는 null 대신 빈 표현식을 반환해야 하는데, new BooleanExpression()은 안되는 모양이예요.그래서 찾아봤더니,null 대신 Expressions.TRUE를 중립조건으로 반환하게 하는거예요.근데 이러면 나가는 쿼리가, /* select member1.id, member1.username, member1.age, team.id, team.name from Member member1 left join member1.team as team where true and team.name = ?1 and true and true */ select m1_0.member_id, m1_0.username, m1_0.age, m1_0.team_id, t1_0.name from member m1_0 left join team t1_0 on t1_0.team_id=m1_0.team_id where true and t1_0.name=? and true and true이렇게 true로 섞여서 나가지만, 저런 것들은 DB내에서 최적화 해줘서 문제가 없다고 해요. 근데 아무래도 익숙하지 않은 상황에서는 다른 분이 보았을 때 저게 뭐지? 왜 저 쿼리가 나가지? 라는 생각을 할 것 같아요.그런데, 저 and true를 보고 아, 동적 쿼리를 사용했나? 라고 생각할 수 있는 사람끼리 본다면 굉장히 괜찮은 방법 같아요. 근데 여튼간에 보여지는 것 자체에는 의미없는 쿼리가 나가는 거라서, 유지보수 면에서 좀 그럴 것 같다는 생각이 들어서요.실무에서는 어떤가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
jpa와 db 동작확인 테스트 중인데 오류가납니다.
package jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional public void testMember() throws Exception{ //given Member member = new Member(); member.setUsername("memberA"); //when Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); //then Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } }위에는 제가 작성한 코드고 아래가 오류 내용입니다.어떻게 해결해야할까요? java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@7971c2a9 testClass = jpabook.jpashop.MemberRepositoryTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@50eac852, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6a192cfe, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@1dde4cb2, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@42e99e4a, org.springframework.boot.test.context.SpringBootTestAnnotation@5c96f405], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:143) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:127) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:241) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) 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:247) 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:191) 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 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect')
-
미해결Practical Testing: 실용적인 테스트 가이드
@JoinColumn 생략?
안녕하세요, 연관관계를 매핑할 때 @ManyToOne 쪽에 @JoinColumn을 항상 써왔는데 생략을 해도 문제가 없는것 같더라구요?그렇다면 @JoinColumn는 굳이 안써도 되는걸까요?? 마찬가지로 실무에서도 생략하나요?? 감사합니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpa 프로그래밍 -기본편 섹션4_실전 예제1 강의 질문
jpa 프로그래밍 기본편 강의 질문으로 localdatetime이 빨간줄이 계속 나는데 문제가 뭘까요?파일 공유 하겠습니다.https://drive.google.com/drive/folders/1RGt1WO-WGyNj029uUambw0K1efMINqwl?usp=sharing
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
PersistantBag으로 감싸는 이유가 이게 맞을까요?
일대다 관계에서 List<Member> members= new ArrayList<>();getMembers라고 조회하면 프록시 객체가 아니라 PersistantBag으로 감싸고 안에 회원 한명을 조회하던 여러명을 조회던 그때 참조하는 Member를 전부 가져오고 거기서 꺼내서 주는거같아요. 이렇게 하는 이유는 연관관계 주인이 대상테이블에 있기 때문이라고 이해를 했습니다. 주테이블에 연관관계 주인으로 설정한다고 해도 데이터베이스 테이블 구조는 다 쪽에 외래키 칼럼이 있기 때문에일 쪽에서는 자신을 참조하는 테이블 레코드를 알수 없기때문에 (조회를 하건,수정을하건,삭제를 해야 그때 조회하는걸로 알고 있습니다.)지연 로딩이 불가능하고 즉시로딩이 되는거같은데 이렇게 이해하는게 맞을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
갑자기 어노테이션 모두 안먹힘
안녕하세요. 4강 종료 후 도서관 책 등록 강의를 듣기 위해서 인텔리제이 실행을 시켰는데,모든 어노테이션들이 다 빨간줄로 되면서 사용할 수 없다는 식으로 나옵니다.build.gradle 들어가서 새로고침도 해보고, web부분 주석 후 새로고침도 해봤는데 빨간줄은 계속 나와있습니다.갑자기 왜 이러는 건지, 해결방법 알려주실 수 있으실까요?ㅠㅠ
-
미해결Practical Testing: 실용적인 테스트 가이드
REST Docs 관련 질문
안녕하세요. 강의를 들으면 실습하던중 강의와 다른 내용이 있어서 질문 드립니다. Spring REST Docs를 만들어내는 과정에서 gradle의 build나 asciidoctor 태스크를 실행했는데, build 폴더에 변환된 index.html이 생성이 되지 않습니다. 강의에서 사용하는 환경과 다른점은 스프링부트 3이상 버전을 사용한다는 점밖에 없고, 운영체제, 나머지 build.gradle이나 테스트 코드는 모두 동일한데, 변환된 html이 생성되지 않는 이유가 있을까요?+ 추가로 build 시에 생성되는 bootJar 파일을 압축을 해제해서 보았더니 내부의 BOOT-INF/classes/static 에도 index.html 파일이 들어가있지 않았습니다.
-
해결됨실전! Querydsl
이제는 DB의 function을 등록하지 않아도 쓸 수 있지 않나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]하이버네이트 6 오면서 바뀌었다고 기억하고 있었는데..
-
미해결실전! Querydsl
searchSimple 에 관한 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Override public Page<MemberTeamDto> searchPageSimple(MemberSearchCondition condition, Pageable pageable) { List<MemberTeamDto> content = queryFactory .select(new QMemberTeamDto( member.id, member.username, member.age, team.id, team.name )) .from(member) .leftJoin(member.team, team) // where 방식이 더 좋은 이유는 무엇일까? 재사용성이 좋아진다. 이게 가장 큰 객체지향의 특징인데 이걸 이용할 수 있음! .where(usernameEq(condition.getUsername()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe())) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); int totalSize = content.size(); log.info("total size = " + totalSize); return new PageImpl<>(content, pageable, totalSize); }serachSimple을 아래와 같이 작성하였습니다.fetchResults가 deprecated 되어서 이렇게 작성하였는데postman에서 실행결과 total 페이지가 들어간 수로만 나옵니다.이유를 알 수 있을까요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
[SpringBoot 3.2.0]SequenceGenerator 에러 발생
현재 Spring Boot 3.2.0에서 h2 database 2.1.214를 사용하더라도 문제가 발생합니다.SequenceGenerator를 allocationSize 1보다 큰 값으로 설정할 경우 에러가 발생합니다.package hellojpa; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @NoArgsConstructor @Entity @SequenceGenerator( name = "MEMBER_SEQ_GENERATOR", sequenceName = "MEMBER_SEQ", initialValue = 1, allocationSize = 50 ) public class Member { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MEMBER_SEQ_GENERATOR") private Long id; @Column(name = "name", nullable = false) private String username; }현재 h2 버전을 2.2.222로 변경한 결과 정상적으로 동작합니다.다들 참고 부탁드립니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
섹션 1 Service Discovery Eureka Service Discovery 빌드 시 오류납니다.
IntelliJ Community 2021.2.3 버전으로 진행하고 있습니다.컴파일 오류는 나지는 않지만 빌드 시 오류가 납니다. 어떤 부분이 잘못 되었는지 모르겠습니다. 어떻게 해야 될까요? application.xmlserver: port: 8761 spring: application: name: discoveryservice eureka: client: register-with-eureka: false fetch-registry: false pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>discoveryservice</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>discoveryservice</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> <spring-cloud.version>2022.0.4</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <image> <builder>paketobuildpacks/builder-jammy-base:latest</builder> </image> </configuration> </plugin> </plugins> </build> </project> DiscoveryserviceApplication.javapackage com.example.discoveryservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer @SpringBootApplication public class DiscoveryserviceApplication { public static void main(String[] args) { SpringApplication.run(DiscoveryserviceApplication.class, args); } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Distinct 와 Set 사용에 대해서 질문이 있습니다.
일대다 관계에서 컬렉션을 조회하면 조회 결과 테이블을 엔티티에 매핑하다보니 JPA는 그대로 중복된 객체를 반환한다고 이해를 했습니다. 그런데 중복을 제거하기 위해서 Distinct 연산자를 붙이면 쿼리에도 Distinct가 들어가면서 SQL이 실행이 되는데요 영속성 컨택스트에서 같은 식별자를 가진 엔티티는 동일성을 보장하니까 불필요한 SQL이 포함된 Distinct보다HashSet<>으로 중복을 제거하는 방법은 별로일까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
JPA 순환참조 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. EventGroupInformation.java@NotFound(action = NotFoundAction.IGNORE)@JsonBackReference@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)@JoinColumn(name="CATEGORY_ID", insertable = false, updatable = false)private CategoryInformation categoryInformation;@BatchSize(size = 1000)@JsonManagedReference@OneToMany(mappedBy = "eventGroupInformation", cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)@Where(clause = "DBSTS = 'O' AND FEED_DISPLAY_YN = 'Y' AND START_DATE <= SYSDATE AND END_DATE >= SYSDATE ")@Column(insertable = false, updatable = false)private List<EventInformation> eventInformations; CategoryInformation.java@BatchSize(size = 1000)@JsonManagedReference@OneToMany(mappedBy = "categoryInformation", fetch = FetchType.LAZY)@Where(clause = "DBSTS = 'O' AND START_DATE <= SYSDATE AND END_DATE >= SYSDATE ")@Column(insertable = false, updatable = false)//@Access(value = AccessType.PROPERTY)public List<EventGroupInformation> eventGroupInformations; 여러개의 oneToMany가 걸려 있는 entitiy들을 강의 V5예제를 참고하여 개선중에 있습니다.CategoryInformation(Order)ㄴ EventGroupInformation(OrderItem)ㄴ EventInformation(Item)이런 식에 구조인데요, 각각 oneToMany 입니다. EventGroupInformation과 EventInformation을 fetchJoin을 통해 쿼리를@Query(value = "SELECT distinct eg FROM EventGroupInformation eg " +"LEFT JOIN FETCH eg.eventInformations e " +"WHERE eg.dbsts = :dbsts " +"AND eg.categoryId IN :categoryIds" ) 호출하면 해당 fetchjoin 쿼리 하나만 나갈꺼라고 생각을했는데,갑자기 상위 entity인 CategoryInformation 테이블에 category_id(PK)로 category_id 개수만큼의N+1 이슈가 발생 하였습니다. JsonBackReference, JsonManagedReference 해당 옵션을 주면 역참조가 안되어야 하는게 맞지 않나요?? 추가로 ManyToOne 쪽에 @JsonIgnore 도 추가 해보았으나 마찬가지입니다 ㅠ제가 놓치고 있는게 있을까요? 김영한 선생님 강의 에서는OrderItem-Item 관계에서 IN쿼리를 호출했을때 IN절에 포함되는 orderId기준의 상위 엔티티인 Order 테이블에 역으로 쿼리가 나가는건 못봤는데 말이죠..(물론, 양방향 관계를 끊고 단방향 설정시 N+1 쿼리는 나가지 않습니다.)
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
@Getter 애노테이션 역할
@Getter @RequiredArgsConstructor public class ErrorResponse { private final String code; private final String message; } 여기서 @Getter 애노테이션을 쓰는 이유가 무엇일까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
스프링 시큐리티 최신버전 코드 있을까요?
제일 최근에 질문한 글 참고해도 적용이 안되네요...혹시 현재 버전에서 적용 가능한 코드가 있을까요?아니면 참고할 수 있는 자료라도 있을까요? https://start.spring.io/ 에서 gradle로 생성해서 사용중입니다. 스프링 3.2버전 사용하고있어요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@Column 관련 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.실전 예제에서 추가된 카테고리랑 딜리버리에 @Column이 추가되지 않은 이유는 DB Table까지는 사용하지 않을 거여서라고 생각하면 될까요?Order나 Member에는 @Column이 있는데 다른 곳은 또 @Column이 없고.. 어디서 어떻게 써야할지 확신이 안갑니다 ㅜ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest 실행문제
소스파일https://drive.google.com/file/d/1Laef4VrgEfQ0--86aUf1ENR9yi4LSwXF/view?usp=sharing강사님이 하신대로 따라하는 중인데 처음 MemberRepositoryTest를 실행할 경우 테스트가 통과됩니다. 이후 @Rollback(false)를 추가해서 실행할 때부터 에러가 납니다. h2 DB를 삭제하고 처음부터 다시 해봐도 똑같이 처음 한번은 통과하고 그 다음부터 에러가 납니다. 아래는 로그 전문입니다. https://drive.google.com/file/d/1sLImPcsiNvBY04ZOmBWe6fVansFaWWPi/view?usp=sharing