[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 강의에서는 warn이 뜨고 name이 없다라는 콘솔문구가 뜨는데 저는 창을 들어가보면 에러는 똑같이 나는데 warn이 안뜨네여..
안녕하세요 영한님, 정말 좋은강의 잘 듣고있습니다. Merge관련해서 질문이 하나있는데요..! 아래 두 method 모두 시작할때 persistence context가 비어있고 찾는 entity가 db에 있다고 가정할때 비슷한 (혹은 같은) flow로 진행될까요? 여기서 method parameter, Entity e,는 업데이트될 (id가 set되어있고 field가 업데이트 되어있는)객체입니다. @Transactional public void updateEntity(Entity e){ Entity foundEntity = em.find(Entity.class, e.getid()); foundEntity.setFieldOne("New Data"); } @Transactional public void updateEntity(Entity e){ em.merge(e); } Merge를 꼭 써야하는건 아니지만, 그냥 동작 메커니즘이 궁금해서 질문드립니다. Merge를 쓰는게 Update전에 항상 Select query로 db에서 객체를 조회하기때문에 쓰기를 지양하라고 하시는건가요, 아니면 merge를 쓸때 또 다른 downside가 있나요?
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
docker-compose up을 사용하면 initdb: error: directory "/var/lib/postgresql/data" exists but is not empty initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data". 라는 오류가 자꾸 발생합니다. 삭제하고 다시 해도 해결이 안되서 질문남깁니다. 어떻게 해결해야하나요.
섹션 4. 회원 도메인 개발-회원서비스 개발에 대해 질문있습니다. 테스트 junit으로 테스트 실행시 아래와 같은 에러가 나옵니다. Execution failed for task ':test'. > No tests found for given includes: [jpabook.jpashop.Service.MemberServiceTest](filter.includeTestsMatching) package jpabook.jpashop.Service; import static org.junit.Assert.*; import jpabook.jpashop.domains.Member; import jpabook.jpashop.repository.MemberRepository; 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; //메모리db로 test import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.assertEquals; @RunWith(SpringRunner.class) @SpringBootTest @Transactional class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exception { //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); //then assertEquals(member, memberRepository.findOne(savedId)); } // @Test // public void 중복회원예외() throws Exception { // //given // // //when // // //then // // } } 에러 사항을 찾아보니 디렉토리 위치가 다를 경우에 에러가 날 수 있다고 하여 디렉토리 위치를 비교해봐도 같습니다. junit테스트도 동일합니다. 어느 부분이 틀린지 알 수 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Item 클래스에 getId()도 있는데 BeanPropertySqlParameterSouce(item)을 사용하면 id값도 만들어지나요??
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] 스프링 cascade 활용도 측면에서 궁금한 것이 있습니다. 영한님 - 인프런 (inflearn.com) 이 질문을 남겼었던 수강생입니다! 잠깐 상황을 요약하면 Program 과 Review 그리고 User 가 다대 1 1대 다 로 묶여 있는 상황입니다. program 에서 program.addReview 메서드를 활용하기 위해 cascade type 을 적용하였었습니다. 하지만 영한 님은 이부분의 코드는 별로 좋은 코드가 아니다! cascade 옵션 질문 - 인프런 (inflearn.com) 를 참고해서 보아라. 라고 하셨습니다. 위 질문의 요약은 강의에서 Order 는 OrderItem 을 개인 소유 하나, Order 와 Delivery 는 Delivery 가 여러 곳에서 참조할 수 있으므로 개인 소유 하지 않는다. 라고 읽었습니다. 참조 하는 것과 Cascade Type .all 이 무슨 관계가 있는지 모르겠습니다. 6줄요약하면: Delivery 와 Review 는 여러 곳에서 참조할 수 있으므로 CascadeType all 을 붙이지 말라고 하신 것 같은데 여러 곳에서 참조가능성이 있으면 CascadeType all 을 왜 붙이지 말아야 하는지 궁금합니다. 단순히 계속 코드를 보며 추적해야 하는 것 때문인가요?? 이 부분이 와닿지 않습니다. 혹시 실제 예를 들어 설명해주실수 있나요??
조은님 안녕하세요 🙂 강의 잘 보았습니다! 강의를 보다가 문득 궁금한 점이 있는데요! import 문 통해서 절대경로로 파일을 불러올 때, 전역에 있는 tsconfig.json 내에서 파일별로 일일이 수동 설정을 해주어야하는 걸로 아는데 조은님께서는 자동으로 @가 붙여진 형태로 불러와지는 거 같아서요! 혹시 따로 설정 어떻게 하셨는지 여쭤봐도 괜찮을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 이게 현재 프로젝트 이고 plugins { id 'java' id 'org.springframework.boot' version '3.2.3' id 'io.spring.dependency-management' version '1.1.4' id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' } group = 'study' 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' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' //test 롬복 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:5.1.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } //querydsl 추가 시작 def querydslDir = file('build/generated/querydsl') querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl } 현재 gradle설정인데 Querydsl 설정과 검증 부분에서 막혔어요 클린해서 q파일 지우고 테스트 코드 런하면 아래 에러가 나타나고 error: Attempt to recreate a file for type study.querydsl.entity.QHello 이후에 q파일이 생성 된 후에는 error: Could not find class file for 'study.querydsl.entity.Hello'. 에러가 반복되네요.. https://www.inflearn.com/questions/1086099 다른분들 설정파일 따라해도 안됩니다..
강의 중 트랜잭션 관련 부분을 보다 @Transactional과 직접 트랜잭션을 사용하는 예제를 떠올려 생각중인데 제가 생각한것이 맞는지 궁금하여 질문드립니다. @Transactional이 적용된 A클래스의 메서드에서 @Transactional이 적용되지 않은 B클래스의 메서드를 호출하고 B클래스 메서드의 내부는 직접 트랜잭션 매니져로 트랜잭션을 생성하고 롤백하는 로직이 포함되어 있는 상황이 있다고 가정한다면 트랜잭션 처리 순서는 A클래스에서 트랜잭션이 시작되고 B클래스는 @Transactional이 없어서 트랜잭션AOP 프록시가 생성되지 않는것과는 상관없이 트랜잭션 매니져로 직접 생성한 트랜잭션으로 인해 A클래스의 트랜잭션에 합류하게 되어 B클래스의 롤백으로 인해 결과는 모두 롤백되는게 맞는걸까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 강의에서 @SpringBootApplication(scanBasePackages = "hello.itemservice.web") 로 controller 부분 package 만 componentscan하고 나머지 설정부분은 @Import 를 통해서 @configuration 파일을 componentscan하는걸로 이해하고있는데 service, repository의 package에 bean을 config 파일에서 직접 등록하고 의존주입하고있는 상태에서 @Service , @Repository annotation 생략해도 되는데 사용한 이유가 서비스계층, repository계층을 명시 해주기 위해서 사용한 것 인지 궁금해서 질문 남깁니다.
안녕하세요. 현재 react 로 구성되어 있는 프로젝트를 next.js 로 마이그레이션 하기 위해 강의 신청해서 들었습니다. 마이그레이션 도중 질문이 있어서 글 남겨봅니다. 1) 기존 react 에서 navigate 의 state 값으로 전달하던 데이터 들이 있습니다. 전달된 데이터는 location state 로 가져와서 사용했구요. 2) next 12 버전 까지는 query 에 객체를 담아서 보낼수 있고 url 도 as 를 이용해서 제어할 수 있는걸 확인했습니다. 3) 하지만 13버전 이후부터 next/router -> next/navigate 로 변경되면서 query 객체, as 가 삭제되어진 걸로 확인되는데 페이지 이동시 데이터를 전달하러면 url 에 그냥 꼬라박는 방법 뿐인지 질문 드립니다.
public class Animal { public void sound(){ System.out.println("동물 울음 소리"); } } public class Dog extends Animal{ @Override public void sound() { System.out.println("멍멍"); } } public class BabyDog extends Dog{ public void sound() { System.out.println("낑낑"); } } public class AnimalPolyMain1 { public static void main(String[] args) { Dog dog = new Dog(); BabyDog babyDog = new BabyDog(); soundAnimal(dog); soundAnimal(babyDog); } private static void soundAnimal(Animal animal){ System.out.println("동물 소리 테스트 시작"); animal.sound(); System.out.println("동물 소리 테스트 종료"); } } 안녕하세요. 강의 중 추가적으로 궁금한게 생겨서 질문드립니다. 그림에 따르면 코드에 만약에 제가 BabyDog클래스를 만들어서 Dog를 extends 한 후 오버라이딩을 하지 않고 매서드를 생성하면 "낑낑"이 아닌 매서드 오버라이딩이 된 "멍멍"이 출력되어야 하는 거 아닌가요??
트랜잭션을 리포지토리 말고 서비스 계층에 달면 문제가 생기네요ㅠㅠ org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call 서비스 계층서 클래스레벨에 트랜잭션 달고 실행시 이렇게 ..나오는데 레포지토리에달면 잘 동작하는데.. 서비스 계층에 달면 왜그런걸까요..
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 있긴한데 좀 다릅니다 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 연관관계 편의메서드와 관련된 질문입니다. public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } 공부하던 도중 일대다, 다대일, 일대일 연관관계 매서드가 모두 다른 것을 발견했습니다. 제 궁금증은 다대일에서는 왜 meber.getOrders().add(this)로 세팅하고 일대일이나 다대일에서는 orderItem.setOrder(this)로 세팅하는지 궁금한 것 입니다. 커뮤니티에 관련 질문을 찾던 도중 jpa 기본편을 보시라고 하셨는데 위치를 못 찾겠습니다. 알려주시면 감사하겠습니다. 추가로 제가 자바의 List의 메소드에 대한 이해가 부족해서 모르는가 싶기도 한데 그게 맞을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요?예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 내용과 그대로 세타조인을 따라 했는데 query나온 것을 보니 cross join이 없어요 그리고 left join도 처음 sql에서는 left join이 나오는데 번역된 sql에서는 left join이 생략되는데 jpa가 최적화를 한 것일까요?