묻고 답해요
138만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
EntityManager 관련 오류
em에 빨간줄이 들어와 클릭해보니 주입이 안된다고하는데 무엇이 문제일까요?Could not autowire. No beans of 'EntityManager' type found.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
JpaRepository 여러 entity에서 사용 시
JpaRepository 여러 entity에서 사용 시에 각각 마다 레포 생성해야 되나여?아래와 같은 경우요public interface BoardFileRepository extends JpaRepository<BoardFile,Long> {}public interface BoardRepository extends JpaRepository<Board,Long>, BoardRepositoryCustom { @QueryHints({ @QueryHint(name = org.hibernate.annotations.QueryHints.COMMENT, value = "BoardRepository.findByName") }) Board findByName(String name);}
-
해결됨실전! Querydsl
update쿼리로 인한 영속성컨텍스트 불일치
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수정, 삭제 벌크 연산의 6:20 부분에서 update쿼리로 인한 영속성컨텍스트 문제를 설명해주셨는데요.전 강의에서 em.flush()실행되는 조건들을 설명해주실 때, 직접 호출 시트랜잭션 커밋 시 JPQL쿼리 실행 시 em.flush()가 실행된다고 설명해주신 것으로 기억하고 있습니다.querydsl도 결국 JPQL기반으로 작동된다고 알고 있는데, querydsl을 통한 select쿼리 실행을 하면 자동으로 em.flush()가 실행되지 않고, 직접 해주어야 하는 메커니즘이 궁금합니다!
-
미해결실전! Querydsl
@QueryProjection 관련 오류
강의 대로 Dto 생성자에 @QueryProjection 어노테이션 적용 후 컴파일하여 QMemberDto 클래스 생성 확인이 됐는데 , 테스트 시 위의 그림과 같이 빨간색처리 되며 없다고 뜬다. 무엇이 문제일까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@Embedded 유무 차이
Address에 @Embedded 붙히든 안붙히든 h2에 테이블에는 차이가 전혀 없는데 어떻게 이해해야 할까요? 쓰고 안쓰고의 차이가 뭘까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Assertions.assertThat()이 안됩니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의와 똑같이 작성했습니다.assertThat이 안되고 junit assert 임포트도 안먹히는 거 같은데 어떻게 해결하나요?그래들리는 이렇습니다.plugins { id 'java' id 'war' id 'org.springframework.boot' version '2.7.13-SNAPSHOT' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } } 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-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'junit:junit:4.13.2' testImplementation 'org.assertj:assertj-core' } tasks.named('test') { useJUnitPlatform() } 버전이 높아서 그런거면 버전을 낮게 설정해야하나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
블로그 기술
김영한 님의 강좌를 쭉 따라 공부중인데 뭔가 강의 소스를 블로그에 정리해도 될지 몰라서 노션에만 정리해놨는데요,..! 이직 준비하면서 꾸준함을 나타내고 싶어서 블로그에 차근차근 올려보려는데 어느정도 까지 올려도 되는지 궁금합니다
-
해결됨실전! Querydsl
계층구조로 join이 일어나는 경우에 대한 질문입니다..
@Table(name = "a") @Entity @Getter public class AEntity { @Id @Column(name = "a_id") private Long aId; @OneToMany(mappedBy = "aEntity") List<BEntity> bList; public void initializeClist() { bList.stream().map(BEntity::getCList).forEach(Hibernate::initialize); } }@Table(name = "b") @Entity @Getter public class BEntity { @Id @Column(name = "b_id") private Long bId; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "a_id") private AEntity aEntity; @OneToMany(mappedBy = "bEntity") List<CEntity> cList; }@Table(name = "c") @Entity @Getter public class CEntity { @Id @Column(name = "c_id") private Long cId; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "b_id") private BEntity bEntity; }안녕하세요. 수업을 아직 수강중인 학생입니다.위와같이 A -> B -> C 아래로 OneToMany 관계로 LeftJoin을 해야한다고 하면어떤식으로 코드를 짜야하는 걸까요?displayRwdbJpaQueryFactory .selectFrom(QAEntity.aEntity) .leftJoin(QAEntity.aEntity.bList, QBEntity.bEntity) .fetchJoin().fetch();.fetchJoin을 써봤는데.. 한번은 되는데 두번은 안되더라구요..bList.stream().map(BEntity::getCList).forEach(Hibernate::initialize);@BatchSize 주고 위처럼 initialize 해봤는데..테이블 계층구조가 여기서 끝나는게 아니라서.. 이런식으로 처리 되기에는 조금 무리가 있을것 같습니다.장고끝에 조언을 구합니다.. 도와주세요.. ㅠㅠ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
404 오류 질문입니다.
안녕하세요 5강의 GET 부분 진행하는데 404 오류가 계속 떠서 문의드립니다. 서버도 정상적으로 실행되고 타 프로젝트에서는 정상적으로 localhost:8080이 동작하는데 이 프로젝트만 계속 404 오류가 발생하네요..Java 11 사용중이고 Gradle Reload 해봐도 해결이 안돼 질문글 남깁니다..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
영속성 컨텍스트 저장(persist())과 커밋의 관계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요!에서 커밋되지 않기 때문에 INSERT문 안나가는건 이해 되는데요. persist()에 의해 영속성 컨텍스트에는 저장이 되어서 SELECT문도 안나가고 그냥 영속성 컨텍스트에서 가져와야 하는거 아닌가 라는 의문이 생겨서요.커밋 직전에 플러시 되면서 디비로 쿼리 나가는 건 알고 있었는데, 혹시 영속성 컨텍스트에 저장되는 것도 커밋이 되어야 일어나는 일인가요??어느 부분을 잘못 생각하고 있는건지 모르겠어요. 답변 부탁드려요!!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
자막 관련 기능
안녕하세요 혹시 자막 관련 기능은 지원하지 않는지, 궁금합니다.청력이 좋지가 않아서 듣고는 있는데 약간 애로사항이 생기네요.
-
미해결실전! Querydsl
QueryDsl 의 Qclass 에 대해
Q클래스와 같이 엔티티가 하나씩 더 생기는 데 왜일까요? 괜찮은건가요?? 예 : Hello QHello 이렇게 사진 처럼 생기네요 .
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
다음 강의 또 언제 나오나요
ㅠㅠ 6월 5일인데 언제나오나요
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
설정 파일 관리 방법 질문(spring X)
기존 프로젝트(spring X)에 jpa를 적용하는 중인데, persistence.xml 파일로 설정 후Persistence.createEntityManagerFactory("test");호출 시 아래의 예외가 발생하는 이슈가 있습니다.java.lang.NoSuchMethodError: org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar([Lorg/apache/xerces/xni/parser/XMLInputSource;)Vxml 파싱 중 프로젝트에서 사용중인 xerces...jar 파일과 jdk의 rt.jar가 충돌되어 메서드를 찾지 못하는 현상으로 파악중입니다. (일반적인 jpa 예제에서는 rt.jar를 참조해야하지만, 해당 코드에서는 xerces...jar를 참조함)해당 라이브러리를 걷어내기엔 기존 코드의 dependency가 염려되어 다른 파일(yml/properties)로 설정을 관리할 수는 없을까 싶은데, 검색 결과는 대부분 spring jpa 관련 내용이었습니다.jpa 설정 시 xml 파일이 아닌, yml 또는 properties 파일로 관리하는 방법이 있는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티 매니저 프록시 역할
안녕하세요! 질문 좀 드리려고 합니다엔티티 매니저 프록시는 프록시를 싱글톤으로 주입해서 동시성 문제를 해결하고 실제 엔티티 매니저 인스턴스를 ThreadLocal로 관리하는 역할 정도로 생각해도 괜찮을까요?추가적으로 실제 엔티티 매니저는 @Transactional을 사용하면 JpaTransactionManager에서 생성이 되는데 @Transactional을 사용하지 않으면 처음 엔티티 매니저를 사용할 때 생성이 되나요?
-
미해결실전! Querydsl
내가 쓴 SpringBoot 2.7 에서의 queryDsl 설정 방법.
다른 블로그 참고하여 강의에 맞게 설정을 조금 수정하였습니다.새롭게 강의 듣는 분들의 시간을 아낄 수 있을까 싶어 공유드립니다.장점QEntity 생성 경로가 강의와 같습니다.src/main 하위가 아닌 generated 하위에만 QEntity 가 생성 되어 git ignore설정을 따로 해주지 않아도 됩니다.저도 이 강의의 이 회차를 듣고 알아본 것이기 때문에 QEntity 가 잘 생성되어 Run이 잘되는 것만 확인했지 다른 것까지 모두 테스트 해보진 못했습니다. compileQueryDsl 동작 없이 Application Run 하시면 되겠습니다.아래 설정의 잘못된점이 있다면 댓글 달아주시면 모두에게 도움이 될 것 같습니다.내 블로그 : https://elastinn.tistory.com/11블로그 광고해도 되나 모르겠습니다.감사합니다.plugins { id 'java' id 'org.springframework.boot' version '2.7.12' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' // queryDSL 설정 implementation "com.querydsl:querydsl-jpa" implementation "com.querydsl:querydsl-core" implementation "com.querydsl:querydsl-collections" annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" // querydsl JPAAnnotationProcessor 사용 지정 annotationProcessor "jakarta.annotation:jakarta.annotation-api" // java.lang.NoClassDefFoundError (javax.annotation.Generated) 대응 코드 annotationProcessor "jakarta.persistence:jakarta.persistence-api" // java.lang.NoClassDefFoundError (javax.annotation.Entity) 대응 코드 runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } //querydsl 추가 시작 def querydslDir = "$buildDir/generated/querydsl" // java source set 에 querydsl QClass 위치 추가 sourceSets { main.java.srcDirs += [ querydslDir ] } // gradle clean 시에 QClass 디렉토리 삭제 clean { delete file(querydslDir) } //querydsl 추가 끝
-
미해결실전! Querydsl
양방향 연관관계 편의메서드 작성시
QueryDSL 강의 예제 모델에서 , @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; public Member(String username, int age, Team team) { this.username = username; this.age = age; if (team != null) { changeTeam(team); } public void changeTeam(Team team) { this.team = team; team.getMembers().add(this); 이 부분에서 public void changeTeam(Team team) { this.team.getMembers().remove(this); this.team = team; team.getMembers().add(this);아래와 같이 해당 팀의 멤버 삭제도 해줘야 하는것 아닌가요? public void changeTeam(Team team){ if(this.team != null) { // this.team이 null이 아니면 이 member객체는 team이 있음을 의미 this.team.getMembers().remove(this); // 해당 팀의 멤버에서 삭제 } this.team = team; team.getMembers().add(this); }
-
해결됨실전! 스프링 데이터 JPA
DDD 적용시 JPA 설계에 대해 궁금한 사항
안녕하십니까 강사님. 좋은 강의 정말 감사합니다.이번에 강사님께 강의를 듣고 현업에 적용하는 도중 궁금한 사항이 있어 문의하게 되었습니다.저희는 현재 DDD 를 적용하려고 합니다. DDD 에서는 애그리거트끼리의 관계를 맵핑하는 것을 지양하는 것으로 알고 있습니다. 따라서 저희는 ERD 기준으로 도메인을 설계해보니 실제 나온 도메인을 보면 테이블이 전부 도메인 클래스가 되었고 서로간의 관계를 코딩으로 맺는 부분 (@ManyToOne 등)이 존재 하지 않습니다.현업에서도 ERD 를 기준으로 도메인 클래스를 나누면 테이블 당 하나의 애그리거트가 나오는 것이 보편적인 사항일까요?DDD 로 개발하다보면 도메인 클래스에 관계를 맺는 부분이 없는게 보편적일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 클래스 개발2 h2 db 업데이트 오류 및 intellij 자동 종료
엔티티 클래스 개발2 강의 8분까지의 내용을 따라하는 중인데cmd로 db실행해도 db과 최신화 되어있지 않습니다.그리고 intellij에서 메인 클래스 실행하면 강의와 다르게 자동 종료됩니다.해결 방법 문의 드립니다. https://drive.google.com/drive/folders/1UcqCYHfwffTcVLU7QlbHylGEY2djBH9f?usp=sharing
-
미해결실전! Querydsl
QueryDsl 2.x 설정시 에러 발생합니다.
1차 시도로 강의자료를 보고 그대로 따라한 후 우측 Gradle Tasks/orther/compileQueryDsl 누르니plugins { id 'java' id 'org.springframework.boot' version '2.7.12' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' //querydsl 추가 implementation 'com.querydsl:querydsl-jpa' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } //querydsl 추가 시작 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl } //querydsl 추가 끝 아래와 같은 에러가 발생했습니다.Unable to load class 'com.mysema.codegen.model.Type'.This is an unexpected error. Please file a bug containing the idea.log file. 그래서 커뮤니티에 올라온 질문에 대한 답을 보고 따라해봤습니다. plugins { id 'java' id 'org.springframework.boot' version '2.7.12' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } //Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거 clean { delete file('src/main/generated') }노란박스 안에 compileQueryDsl 버튼이 생기지 않습니다. 어떻게 해결해야될까요???