묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트 2 강 질문있습니다.
1. 7분 1초 그림과 7분 9초 그림이랑 차이가 뭔가요? 혹시 7분 1초 그림에서 3번이 7분 9초 그림인건가요?2. 13분에 내부적으로 리프랙션을 하기때문에 동적으로 생성자를 생성해야 한다고 하셨는데요.리프랙션은 뭐고 동적은 무슨의미인가요? 움직임을 뜻하는건 아닌것 같아서요3. 23분에 1번에는 flush() 이렇게 되어있고 4번에는 flush 이렇게 되어있는데 혹시 flush 가 2번 실행되는건가요?첫째코드가 강의 Hello JPA - 애플리케이션 개발28분에 나온 코드이고 2번째코드가 영속성 컨텍스트 2 24분에서 나온코드입니다.List<Member> result=em.createQuery("select m from Member as m",Member.class).getResultList(); //Member 객체를 m으로 별칭하고 객체 m을 선택해라 for (Member member:result){// 각 Member 엔터티에 대해 반복합니다. System.out.println("member name = " + member.getName()); }Member member=em.find(Mmeber.class,150L);를 List<Member> member=em.find(Mmeber.class,150L); 이렇게 바꿔도 되나요? 4.영속성 컨텍스트 2 7분 그림에서요. 그림에서 flash는 3번과정인가요? 아니면 3번과정 직전인 동기화 상태인가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
V2에서 별도의 DTO를 사용하는 이유가 궁금합니다.
안녕하세요 강사님!Entity를 바로사용 하지 않는 이유는보안에 취약여러 곳에서 사용하기 때문에 entity가 바뀌면 곤란함이 두가지 때문이라고 이해했는데.V2의 경우에는 별도의 DTO를 구성해서 이를 해결한다고 말씀을 해주셨습니다. 하지만 사용 쓰임새가 다 다르면 별도의 DTO를 계속해서 고쳐줘야 하는건 V1과 마찬가지 아닌가요? 보안 문제만 해결할 수 있는 것처럼 보이는데 원리를 이해하지 못하겠습니다.
-
해결됨실전! Querydsl
querydsl Projection 성능 문제
안녕하세요 Querydsl Projection 을 활용해 DTO에 담는경우 성능 관련 질문이 있습니다. Querydsl에서 Projections.constructor를 활용해서 query를 작성하는경우 fetchJoin이 되지 않더라구요.일대 다 관계에서 fetchJoin을 하지 않게되면 n+1 이슈가 발생할거 같은데Projections을 활용하는 환경에서 성능개선은 어떻게 해야할까요?
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
로드 밸런싱 관련 질문
안녕하세요! 강사님 로드 밸런싱 & 서버 관련 질문드립니다.Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)현재 저는 섹션 2 API Gateway Service 까지 강의를 진행한 상태입니다. 현업에서는 해당 강의에서 나와있는 것처럼 어플리케이션 단에서의 로드 밸런싱 구현을 많이 하나요?아니라면 현업에서는 어떠한 방법으로 자주 사용하여 구현을 하나요? 어떤 상황에서 어플리케이션 단에서의 로드 밸런싱 구현을 하나요?트래픽 분산을 목적으로 로드 밸런싱을 사용하기 위해 여러 개의 어플리케이션 인스턴스들을 서버에 올린다고 하였을 때 현업에서는 어떻게 관리하나요? AWS EC2 기준으로 설명해주시면 좋을 것 같습니다! 읽어주셔서 감사합니다(__)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Hello JPA - 프로젝트 생성 강의 질문있습니다.
Hello JPA - 프로젝트 생성18분 3초에 mysql 사용시 2번째 네모박스 뿐만 아니라 첫번째 박스도 변경해야 하는거 아닌가요?2. Hello JPA - 애플리케이션 개발 3분 8초해당 강의 부분에서 EntityManagerFactory emf =Persistence.createEntityManagerFactory("hello"); 입력후 실행하면 커넥션이 떠야 한다고 했는데 저는 커넥션이 안뜨는데요.아래같이 뜹니다. 어떻게 해야 하나요? public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf =Persistence.createEntityManagerFactory("hello");//persistence.xml에서 유닛 네임을 넘겨주면 된다. // EntityManager entityManager=emf.createEntityManager(); // entityManager.close(); // emf.close(); } } 3. 6분에서 빨간색 네모박스는 왜 안지워요?8분22초에서 distance가 뭘 의미하는건가요?17분 3초에서 아래 문장이 엔티티 매니저가 찾는 것을 Member객체 형태로 findMember의 변수로 저장해라 라는 문구로 이해 해도 되나요? Member findMember=em.find(Member.class,1l);근데 Member.class 이건 왜나오는거에요? 29분에 쿼리문 설명할 때 엔티티를 표현한다거나 객체를 표현하는걸로 이해하시면 된다고 하셨는데요.https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=zzu0e&logNo=220689973139 근데 이 주소를 보면 두개 가 다른것 같은데 뭐가맞는건가요?31분에 와스가 내려갈때 emf를 닫아줘야 한다고 하셨는데 와스가 뭐에요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
docker network ip 대역 질문
docker network 지정 시 해당 network내에서 할당되는 ip 대역에 서비스 ip가 순차적으로 할당되는 것 같은데요, kafka같은 경우는 그 대역에서 직접 ip하나를 지정해서 사용하고 서비스에서도 그 kafka ip를 하드코딩으로 직접 지정해두는데, 환경에 따라 network ip 대역이 변경될 일은 없는건가요?docker container 네트워크 스펙인지 궁금합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
kafka docker 사용 질문
질문이 있습니다. Local에 kafka를 직접 설치한 경우 kafka connect를 위해 jdbc connector 경로 지정 등 작업이 필요했던 것 같은데 docker compose로 구동시킬 때는 이러한 작업에 대한 지정이 필요 없는건가요??
-
해결됨코드로 배우는 React with 스프링부트 API서버
강의 영상에 혹시 빠진게 있나요??
조금 전 있던 질문글 이랑 동일한 에러가 발생해서 코드 확인했더니 TodoController 클래스에서 put, delete를 구현하지 않았더라구요. 제가 뭔가 빼먹었나보다 하고 소스코드 찾아보니까 소스코드에는 있길래 소스코드 참고해서 해결했거든요. 그런데 그 다음에도 RootConfig 클래스를 만드는거나, CustomServletConfig 클래스에 addCorsMappings 메서드를 추가하는 과정을 소스코드 보면서 해결했었는데, 혹시 강의 영상에는 소스코드에 있는 내용 전부가 작성되는 과정이 나오는건 아닌걸까요? 제가 영상보다 코드치다 하면서 실수로 넘어간 부분이 있을수도 있는데, 강의 영상에는 빠져있고, 소스코드는 올라와 있는 부분들이 있는것 같아서요. 한번 확인 부탁드려도 될까요..? 제 착오였다면 죄송합니다 ㅠㅠ
-
해결됨실전! Querydsl
stringTemplate("...") 은 어떻게 찾으신건가요?
공식 문서 5.0.0 버전을 봐도 stringTemplate이나 function에 대한 소개가 없더라구요 이렇게 공식문서에서 찾을 수 없는 내용을 강사님께서는 어떻게 찾으시는지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
test중 NullPointerException에러발생
jpa와 db설정, 동작확인 강의를 듣고 클론코딩 중test중 NullPointerException에러발생mainjpabook.jpashop.Memberpackage jpabook.jpashop; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String username; }jpabook.jpashop.MemberRepositorypackage jpabook.jpashop; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import org.springframework.stereotype.Repository; @Repository public class MemberRepository { @PersistenceContext EntityManager em; public Long save(Member member) { em.persist(member); return member.getId(); } public Member find(Long id) { return em.find(Member.class, id); } } testjpabook.jpashop.MemberRepositoryTestpackage jpabook.jpashop; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.Rollback; import org.springframework.transaction.annotation.Transactional; import static org.assertj.core.api.Assertions.assertThat; public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() { Member member = new Member(); member.setUsername("memberA"); Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); assertThat(findMember.getId()).isEqualTo(member.getId()); assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } } application.ymlspring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true logging.level: org.hibernate.SQL: debug org.hibernate.type: trace build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4' } group = 'jpabook' 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-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }build, run 모두 intellj IDE로 하는중입니다.
-
미해결실전! Querydsl
BooleanBuilder 사용 방법에 대해서
private BooleanBuilder searchName(String name) { if (name == null || name.isBlank()) { return new BooleanBuilder(); } return new BooleanBuilder(QMember.member.username.eq(name)); } private BooleanBuilder searchAge(Integer age) { if (age == null) { return new BooleanBuilder(); } return new BooleanBuilder(QMember.member.age.eq(age)); } private BooleanBuilder allCond(String username, Integer age) { return searchName(username).or(searchAge(age)); } @DisplayName("BooleanBuilder 연속 사용") @Test void pr2(){ //given em.persist(new Member("둘리",15)); em.persist(new Member("또치",20)); em.flush(); em.clear(); QMember member = QMember.member; List<Member> findMember = queryFactory .select(member) .from(member) .where(searchName("name").and(searchAge(null)).and(searchAge(15))) .fetch(); System.out.println("findMember = " + findMember); }null 여부에 따라 Expression을 추가하거나 new BooleanBuilder를 반환하면and나 or일 경우 내부에서 합치거나 치환하는 방식을 통해 최종 BooleanBuilder를 사용할 수 잇더라구요public BooleanBuilder or(@Nullable Predicate right) { if (right != null) { if (predicate == null) { predicate = right; } else { predicate = ExpressionUtils.or(predicate, right); } } return this; }이렇게 사용하는 방법은 BooleanExpression을 사용하면 null 체크를 해야하는데따로 기존에 있는 메소드에서 null을 체크해야주기 때문에 좋을 거같은데단점은 매번 쿼리를 실행할 때마다 저 많은 조건문이 실행되니까 비효율적일까요 ?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
expected 옵션이 적용되지 않아 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. junit4 적용된걸 확인했는데도 test에서 적용이 안돼 질문드립니다 orderServiceTest 상품주문_재고수량초과 @TEST에서 expeced 오류로 뜹니다. @Test(expeced = NotEnoughStockException.class); public void 상품주문_재고수량초과() throws Exception{ //given Member member = createMember(); Item item = createBook("시골 JPA", 10000, 10); int orderCount =11; //when //Assertions.assertThatThrownBy(()->orderService.order(member.getId(), createBook().getId(). orderCount)) // .isInstanceOf(NotEnoughStockException.class); orderService.order(member.getId(), item.getId(), orderCount); //then fail("재고 수량 부족 예외가 발생해야한다"); build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' implementation("com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6") testImplementation 'junit:junit:4.13.1' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
DDL 생성기능
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 강의 16분 즈음부터 @Table(name = "MBR") 같은 것들은 런타임에 영향을 주지만 @Column(unique = true) 같은 제약조건들은 런타임에 영향을 주지 않는다는 말이 왜 그런 건지 이해가 잘 안 가는데 조금 더 설명해주실 수 있을까요?? 둘 다 데이터베이스에 어떤 쿼리를 날려야 하는데 하나는 런타임에 영향을 주고 하나는 그렇지 않다는 게 이해가 잘 가지 않습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
새로 만든 UserRepository 파일의 위치
UserJdbcRepository 는 repository 패키지 하위에 만들었었는데이 강의에서 새로 만든 UserRepository 는 왜 domain 패키지 하위에 만드는 이유가 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Spring 3.xx버전 querydsl gradle 설정 관련 질문
QueryDSL 소개 강의 영상에서 gradle 설정하는 부분을 3이상버전 관련해서 올려주신 자료를 보면서 따라했는데 build-clean을 하고 해봐도 tasks-others밑에 compileQuerydsl파일이 생성되 지않아서 comlile.java 를 눌렀더니 generated에 파일들은 잘 생성됐습니다. plugins { id 'java' id 'org.springframework.boot' version '3.1.5' id 'io.spring.dependency-management' version '1.1.3' } group = 'jpabook' 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-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-devtools' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' //Hibernate5JakartaModule 등록 (하이버네이트 모듈) implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5-jakarta' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //QueryDsl 관련 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } def querydslSrcDir = 'src/main/generated' clean { delete file(querydslSrcDir) } tasks.withType(JavaCompile) { options.generatedSourceOutputDirectory = file(querydslSrcDir) } 이렇게 작성했는데 혹시 틀린 부분이 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest가 실행이 안돼요. (spring boot가 졌다 바로 꺼짐)
1장 프로젝트 환경설정 부분 듣고 있습니다! test는 실행되는데 ,Test 실행 후 localhost에 접속해서 h2-console에 들어가야되는데, 바로 spring boot가 꺼져버려서 강의 진도를 못나가고 있어요 ㅠㅠ 강의pdf 꼼꼼히 읽어보고 yml, build.gradle도 고쳤는데 안됩니다. 뭐가 잘못된 걸까요? ㅠㅠ 아래는 log 끝 부분 입니당,, DB에 값이 들어갔다가 오류 메시지가 뜨네요insert into member (username,id) values (?,?) insert into member (username,id) values ('memberA',1); 2023-12-21T21:29:43.402+09:00 INFO 25432 --- [ Test worker] p6spy : #1703161783402 | took 1ms | commit | connection 4| url jdbc:h2:tcp://localhost/~/jpashop ; OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 2023-12-21T21:29:43.464+09:00 INFO 25432 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2023-12-21T21:29:43.469+09:00 INFO 25432 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2023-12-21T21:29:43.492+09:00 INFO 25432 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. 아래는 application.yml입니다spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop; username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true dialect: org.hibernate.dialect.H2Dialect logging.level: org.hibernate.SQL: debug # org.hibernate.orm.jdbc.bind: trace #스프링 부트 3.x, hibernate6 아래는 build.gradle 입니다 plugins { id 'java' id 'org.springframework.boot' version '3.1.6' id 'io.spring.dependency-management' version '1.1.4' } group = 'jpabook' version = '0.0.1-SNAPSHOT' 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-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation("org.junit.vintage:junit-vintage-engine"){ exclude group: "org.hamcrest", module: "hamcrest-core" } } tasks.named('test') { useJUnitPlatform() }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderList.html 타임리프 파싱 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 여러 질문 글을 남기다가 문제가 발생되는 것 같은 곳을 찾았습니다.드래그 표시한 th:each="status : ${T(jpabook.jpashop.domain.OrderStatus).values()}"이부분 입니다.해당 코드를 지우면 주문 내역이 나오지만,반면에 저 코드를 다시 넣으면 이러헥 에러가 발생합니다. 문제 되는 부분만 간추려 찍어보면,, org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "T(jpabook.jpashop.domain.OrderStatus).values()" (template: "order/orderList" - line 16, col 33) Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "T(jpabook.jpashop.domain.OrderStatus).values()" (template: "order/orderList" - line 16, col 33) Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1005E: Type cannot be found 'jpabook.jpashop.domain.OrderStatus' org.springframework.expression.spel.SpelEvaluationException: EL1005E: Type cannot be found 'jpabook.jpashop.domain.OrderStatus' 이런 식으로 나오긴 하는데.. 여기 이렇게 잘 있습니다.. th:each="status : ${T(jpabook.jpashop.domain.OrderStatus).values()}" ```이 코드 방법 없을까요??
-
미해결실전! 스프링 데이터 JPA
UsernameOnlyDto에서 오류가 납니다...
계속 생성자에 인자를 안줬다는 오류가 나는거 같은데 수업과 똑같이 코드를 작성했는데 어디가 문제인지 모르겠습니다java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@3e5e7f4c testClass = study.datajpa.repository.MemberRepositoryTest, locations = [], classes = [study.datajpa.DataJpaApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], 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@2805d709, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@194bcebf, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@53ce1329, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@51e69659, org.springframework.boot.test.context.SpringBootTestAnnotation@a1c5547c], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
-
미해결실전! Querydsl
paging2는 어떤식으로 수정해야되는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]paging2에서 Deprecated된 fetchResults를 통해 전체 값 리밋값 옵셋 값 결과 개수 값을 다 구하는데 이제는 어떤식으로 해야되나요? 그냥 getTotal의 경우 count 를 통해 얻어올 수 있는데 나머지 값들은 어떻게 처리해야되나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
jpql로 여러 값을 가져올때 영속성 컨테스트 값 저장 형태
예를들어 id값이 20~30인 member를 가져올때 영속성 컨테스트안의 1차캐시에는 값들이 어떻게 저장이 되나요? 일단 강의에서는 em.persist 와 em.find 인 경우 1차 캐시에 값을 저장한다고 해서 위와 같이 jpql을 사용했을때 일단 영속성 컨테스트에 값이 저장되는지 확인해보았습니다.영속성 컨테스트에 값이 저장되었다면 commit시 1.flush 발생2.스냅샷과 비교해서 변경감지. 3.변경이있었다면(setter) 쓰기 지연 SQL 저장소에 UPDATE쿼리 생성 및 저장4.쓰기 지연 SQL 저장소에 있는 모든 쿼리를 실행.5.커밋(실제DB반영)위 과정이 일어나서 NAME 값이 changeMember로 변경되어야하는데 확인해보니 실제로 값이 변경되는걸 확인할 수 있었습니다. update 쿼리도 2번일어나는데 그럼 위의 예시에서executeQuery로 jpql 실행 시1차 캐시에 값이 @id Entity20 member(20,memberA)30 member(30,memberB) 이렇게 저장되는 거 같은데 맞나요??(리스트로 가져오면 , 하나씩 풀어서 저장) 그리고 commit시 위에 제가 생각한 과정대로 이해한게 맞을까요?