묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/drive/folders/1jHYkBAHDuUoSr5hjn0Kp5CzTAWLem3Zu?usp=drive_link 코드를 쭉 작성해봤는데 마지막에 submit할 때 whiteError페이지가 나옵니다. gpt에 해결책을 물어봤을 때에러 로그를 보면, Thymeleaf 템플릿을 처리하는 동안 문제가 발생한 것을 알 수 있습니다. 특히, item.orderItems[0].item.name라는 표현식에서 문제가 발생했습니다.에러의 원인에러 메시지 중에서 가장 중요한 부분은 다음과 같습니다:Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '0' elements, index '0' is invalid 이 메시지는 item.orderItems[0]에서 인덱스를 사용하여 컬렉션의 첫 번째 요소에 접근하려고 했지만, orderItems 컬렉션이 비어 있어서 인덱스 0이 유효하지 않다는 것을 의미합니다. 즉, orderItems 컬렉션이 비어있거나 null일 때 이 표현식을 평가하려다가 오류가 발생한 것입니다.해결 방법컬렉션이 비어있을 경우에 대한 처리:Thymeleaf 템플릿에서 컬렉션이 비어있는 경우를 대비하여 조건문을 추가할 수 있습니다. 예를 들어, orderItems가 비어있지 않은 경우에만 접근하도록 할 수 있습니다.<div th:if="${item.orderItems.size() > 0}"> <span th:text="${item.orderItems[0].item.name}">Item Name</span> </div> 안전한 접근을 위한 기본값 제공:orderItems 컬렉션이 비어있을 때 안전하게 처리하기 위해, th:text 속성에서 기본값을 제공할 수 있습니다.<span th:text="${item.orderItems.size() > 0 ? item.orderItems[0].item.name : 'No items'}">Item Name</span> 서버 측에서 데이터 처리:서버 코드에서 orderItems가 비어있는 경우에 대해 적절히 처리하도록 할 수도 있습니다. 예를 들어, orderItems가 비어있다면 기본값을 설정하거나, 비어있음을 표시하는 별도의 로직을 추가할 수 있습니다.템플릿 구조 개선:템플릿 구조를 개선하여, orderItems가 비어있을 때는 특정 HTML 요소를 렌더링하지 않도록 할 수 있습니다.결론에러의 원인은 item.orderItems[0].item.name에서, orderItems 컬렉션이 비어있을 때 인덱스 0에 접근하려고 했기 때문입니다. 이를 해결하려면 위의 방법 중 하나를 사용하여, orderItems가 비어있는 경우를 안전하게 처리해야 합니다. 템플릿에서 Thymeleaf의 조건문이나 기본값 제공 기능을 사용하여 이 문제를 해결할 수 있습니다. 이런식으로 나왔고 h2데이터베이스의 order자체에 값이 잘 저장된 것은 확인했는데 무엇이 문제인지 잘 모르겠어서 질문드립니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트코드 데이터소스 분리
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]테스트 application.properties와 메인의 application.properties의 설정으로테스트와 실제 어플의 db 동작을 분리 할수 있는데만약에 테스트에서도 테스트 패키지 혹은 테스트 별로db를 다르게 사용하려면 어떻게 해야하나요?단위 테스트 할 기능중에 db종속적인 부분이 있어서질문 드려요!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향을 써야될 때가 언젠지 헷갈려요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]왠만하면 단방향으로 다 끝낼 수 있는데 그러면 양방향은 언제 쓰는게 좋은 건가요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
단방향으로만 지정할때는 어노테이션이 들어가나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]양방향은 필요할 때만 사용하고 단방향만으로도 끝낼 수 있게 설계하시라고 하셨는데 그러면 단방향일때는 외래키가 있는 entity에만 private Ex ex; 같이 넣고 위에 어노테이션을 넣어야 하나요? 만약 넣는 다면 @ManyToOne 넣고 뭘 설정을 또 해야하나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
즉시 로딩 조회에 대해 질문 있습니다.
즉시로딩 관계에서 조회를 할때 어떤 경우는 연관관계에 있는 데이터들을 join으로 한번에 끌고오는 경우가 있고 어떤때는 N + 1 문제가 발생하는 경우가 있었습니다. 그래서 아래와 같이 테스트를 해봤는데요 우선 member와 team의 관계를 즉시로딩으로 설정했습니다. 그리고 member을 한번만 저장하든 여러번 저장하든 N+ 1 문제가 발생했습니다. 그래서 즉시로딩 관계에서 어떤 경우에 연관관계에 있는 데이터들을 한번에 조인해서 가져오는지 궁금합니다.Team team = new Team(); team.setName("team1"); em.persist(team); Team team2 = new Team(); team2.setName("team1"); em.persist(team2); Member member = new Member(); member.setName("hi1"); member.setTeam(team); em.persist(member); Member member2 = new Member(); member2.setName("hi2"); member2.setTeam(team2); em.persist(member2); Member member3 = new Member(); member3.setName("hi3"); member3.setTeam(team2); em.persist(member3); em.flush(); em.clear(); List<Member> members = em.createQuery("select m from Member m", Member.class) .getResultList(); tx.commit();
-
미해결실전! 스프링 데이터 JPA
EntityManager DI
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.EntityManager을 @RequiredArgsConstructor을 통한 생성자 주입을 통해 넣는것이 이해가 안됩니다. EntityManeger을 bean으로 생성하지 않았는데 오류없이 실행된 이유는 다른 파일에서 EntityManager을 @PersistenceContext을 통해 bean으로 생성했기 때문인가요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.flush(), em.clear() 후 프록시 객체 조회에 대해 질문 있습니다.
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; public class Test { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { Team team = new Team(); team.setName("team1"); em.persist(team); Member member = new Member(); member.setName("hi"); member.setTeam(team); em.persist(member); em.flush(); em.clear(); Member findMember = em.find(Member.class, member.getId()); System.out.println(findMember.getTeam().getClass()); System.out.println(findMember.getTeam().getName()); System.out.println("========="); Team team2 = new Team(); team2.setName("team2"); em.persist(team2); findMember.setTeam(team2); em.flush(); em.clear(); Member findMember2 = em.find(Member.class, member.getId()); System.out.println(findMember2.getTeam().getClass()); System.out.println(findMember2.getTeam().getName()); tx.commit(); } catch (Exception e) { tx.rollback(); e.printStackTrace(); } finally { em.close(); } emf.close(); } }실행결과Hibernate: /* insert for jpa_basic.ex1_hello_jpa.entity.Team */insert into Team (name, TEAM_ID) values (?, default) Hibernate: /* insert for jpa_basic.ex1_hello_jpa.entity.Member */insert into Member (city, name, number, roleType, street, TEAM_ID, zipcode, MEMBER_ID) values (?, ?, ?, ?, ?, ?, ?, default) Hibernate: select m1_0.MEMBER_ID, m1_0.city, m1_0.name, m1_0.number, m1_0.roleType, m1_0.street, m1_0.TEAM_ID, m1_0.zipcode from Member m1_0 where m1_0.MEMBER_ID=? class jpa_basic.ex1_hello_jpa.entity.Team$HibernateProxy$q7Fz4jvQ Hibernate: select t1_0.TEAM_ID, t1_0.name from Team t1_0 where t1_0.TEAM_ID=? team1 ========= Hibernate: /* insert for jpa_basic.ex1_hello_jpa.entity.Team */insert into Team (name, TEAM_ID) values (?, default) Hibernate: /* update for jpa_basic.ex1_hello_jpa.entity.Member */update Member set city=?, name=?, number=?, roleType=?, street=?, TEAM_ID=?, zipcode=? where MEMBER_ID=? Hibernate: select m1_0.MEMBER_ID, m1_0.city, m1_0.name, m1_0.number, m1_0.roleType, m1_0.street, m1_0.TEAM_ID, m1_0.zipcode from Member m1_0 where m1_0.MEMBER_ID=? class jpa_basic.ex1_hello_jpa.entity.Team$HibernateProxy$q7Fz4jvQ Hibernate: select t1_0.TEAM_ID, t1_0.name from Team t1_0 where t1_0.TEAM_ID=? team2안녕하세요 위 코드에 대해 질문 있습니다.findMember.getTeam().getClass() 출력결과가 class jpa_basic.ex1_hello_jpa.entity.Team$HibernateProxy$q7Fz4jvQ 와 같습니다.그리고 findMember2.getTeam().getClass(); 출력결과가 class jpa_basic.ex1_hello_jpa.entity.Team$HibernateProxy$q7Fz4jvQ 와 같습니다.중간에 clear()를 하여 영속성 컨텍스트를 비웠는데 왜 프록시 객체를 조회하면 똑같은 프록시 객체가 나오는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
LAZY 관계에서의 프록시 초기화에 대해 질문 있습니다.
Member와 Team이 있는데 이 둘이 다대일 관계이고 LAZY 설정이라고 하겠습니다.Member을 조회하면 Member의 필드인 team에는 Team에 대한 프록시 객체가 저장된다고 이해했습니다. 여기서 궁금한 부분이 있습니다.Member 조회시 생성되는 Team에 대한 프록시 객체는 영속성 컨텍스트에 저장이 되는건가요?team의 실제 값을 사용하면 프록시 초기화가 발생해 DB에서 실제 Team 엔티티 값을 가져올텐대요 이때 가져온 Team 엔티티는 어디서 저장되고 관리 되나요? 이미 영속성 컨텍스트에는 프록시 객체가 존재할텐대 가져온 실제 엔티티 객체는 어디서 저장되고 관리되는지 궁금합니다.
-
해결됨실전! 스프링 데이터 JPA
Projection 관련 질문이 있습니다.
영한님의 예시인 UsernameOnly에서는 유저명만 가져왔는데, 혹시 조금 더 깊게 들어가서 유저명뿐만 아니라 해당 유저가 속한 팀의 팀명까지 같이 가져올 수 있는 방법이 있을까요?public interface UsernameAndTeam { String getUsername(); Team getTeam(); }이렇게 하니 팀 객체까지는 잘 가져오던데, 여기서 팀의 이름만 딱 정해서 가져올 수도 있는지 궁금합니다.머릿속으론 String getTeamGetName(); 이라는 무슨 괴상한 코드가 떠오르는데.. 이건 제가 봐도 좀 아닌 것 같네요 ㅋㅋㅋㅠㅠ항상 답변 감사드립니다. ++ 혹시 몰라서 String getTeamGetName()으로 테스트를 실행해보니 No property 'getName' found for type 'Team'; 이라고 오류가 떴는데, 이 말은 Team에서 getName을 못 찾았다는 것 같은데 그럼 Team까진 잘 접근이 된 것 같으니 그럼 혹시 getTeamName이라고 하면 되지 않을까? 라는 생각이 들어 그렇게 바꿔 실행해보니 잘 되는 것 같네요..?! 이렇게 하면 되는 게 맞을까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Controller + RestController 함께 사용
안녕하세요! 스프링 로드맵을 수강하고 Spring Boot + Thymeleaf 로 간단한 프로젝트를 진행하던 중 궁금한 점이 있어 질문 남김니다. 좋아요 기능이나 모달창에서 일어나는 동작들은 매번 결과를 view를 넘겨주기 번거롭거나 처리하기 복잡한 것 같아서, 이러한 부분들만 일반 Controller 말고 Rest Controller를 호출하고 처리하도록 구현하고 싶은데 혹시 이런 방식으로 혼용해서 사용해도 괜찮을까요? 아니면 프로젝트의 일관성을 위해 일반 Controller만 사용하는 것이 좋을까요? 감사합니다.
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
ProjectSkill과 Skill 객체 생성 관련 질문있습니다.
테스트코드 작성하는 강의를 막 마치고, html '/test' 생성하여 확인하는 강의를 진입하여 듣던중,test만 돌리다 오랜만에 datainitilizer가 불리도록 run을 하니,org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataInitializer': Invocation of init method failedCaused by: org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation : com.mkim.portfolio.domain.entity.ProjectSkill.skill -> com.mkim.portfolio.domain.entity.Skill 이런 에러가 발생하였습니다.테스트코드 작성 강의전에는 정상적으로 datainitializer 호출되었고, 테스트 케이스도 전부 패스한 상황이라 무엇이 문제인가 계속 확인을 하는데 이해한 바로는 ProjectSkill이 Skill 엔티티를 참조해야하지만 아직 생성이 안된 상태라 발생하는것처럼 이해하였는데, val java = Skill(name = "Java", type = SkillType.LANGUAGE.name, isActive = true) val kotlin = Skill(name = "Kotlin", type = SkillType.LANGUAGE.name, isActive = true) val python = Skill(name = "Python", type = SkillType.LANGUAGE.name, isActive = true) val spring = Skill(name = "Spring", type = SkillType.FRAMEWORK.name, isActive = true) . . . skillRepository.saveAll( mutableListOf( java, kotlin, spring, . . . ) . ... ..... project1.skills.addAll( mutableListOf( ProjectSkill(project = project1, skill = java), ProjectSkill(project = project1, skill = spring), ProjectSkill(project = project1, skill = mysql), ProjectSkill(project = project1, skill = redis) ) )이렇게 작성하여 부르면 에러가 나지만val skills = mutableListOf( Skill(name = "Java", type = SkillType.LANGUAGE.name, isActive = true), Skill(name = "Kotlin", type = SkillType.LANGUAGE.name, isActive = true), Skill(name = "Python", type = SkillType.LANGUAGE.name, isActive = true), Skill(name = "Spring", type = SkillType.FRAMEWORK.name, isActive = true), Skill(name = "Django", type = SkillType.FRAMEWORK.name, isActive = true), Skill(name = "MySQL", type = SkillType.DATABASE.name, isActive = true), Skill(name = "Redis", type = SkillType.DATABASE.name, isActive = true), Skill(name = "Kafka", type = SkillType.TOOL.name, isActive = true) ) skillRepository.saveAll(skills) . ... ..... project1.skills.addAll( mutableListOf( ProjectSkill(project = project1, skill = skills[0]), // Java ProjectSkill(project = project1, skill = skills[3]), // Spring ProjectSkill(project = project1, skill = skills[5]), // MySQL ProjectSkill(project = project1, skill = skills[6]) // Redis ) ) 이와 같이하면 에러가 살아집니다...무엇이 달라 차이를 만드는지가 너무 궁금하여 질문 남겨요감사합니다, 전체 현재까지 코드 깃허브
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
QueryDsl관하여 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]안녕하세요. 근래에 쿼리 DSL을 배우면서 적용을 해보고 있습니다! 쿼리dsl을 사용하면 @OneToMany 등등 연관관계 매핑이 필요 없는지 궁금합니다. 필요하다면 왜 필요한지도 궁금합니다!!
-
해결됨실전! Querydsl
설명이 잘 이해가 안 가는 부분이 있습니다
강의 2분 45초에서 left join이니 team 기준으로 데이터를 전부 조회해온다고 말씀하셨는데, 그 team 기준이라는 말씀이 무슨 의미인 건지 잘 모르겠습니다.제가 생각하기로는 이 테스트의 경우 member와 team의 left join이니 member의 데이터들을 기준으로 조인된 team의 데이터를 조회해오는, 즉 member 기준으로 데이터를 조회하는 것 같은데, 제가 설명을 잘못 이해한 건지 아니면 제가 잘못 알고 있는 부분이 있는 건지 궁금합니다.감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
delivery 인식 불가 ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)에3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.위 강의를 듣고잇는데, delivery가 제 개발환경에서는 인식이 안됩니다...선언부 미인식 문제 자주 하는 질문을 참고해서 IDE 초기화도 해보고 했는데, 안되서 질문드립니다. 뭔가 설정을 잘못한거 같아서 JDK와 Gradle 설정 부분도 제대로 되어 있는 것 확인했습니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
ManyToOne 에서 fetch join 에 대해 질문 있습니다.
강의 1분쯤에 아래와 같은 내용이 있습니다."ManyToOne이나 OneToOne 같은건 fetch join을 하거나 DB 입장에서는 left out join해서 한번에 데이터를 다 끌고와도 성능에 무리가 없는데 컬렉션 조회 같은 경우에는 조회를 하는 순간 DB 입장에서는 데이터가 뻥튀기 된다."궁금한 부분은 ManyToOne 관계에서 fetch join에서도 DB 입장에서 데이터가 뻥튀기 되지 않나 라는 생각입니다.예를들어 member1, member2, member3이 teamA에 속해 있다고 했을때 이 상황에서 fetch join을 해도 어차피 내부적으로는 join으로 바뀌게 되므로 결과적으로는 아래와 같이 출력이 되므로 DB 입장에서 결국 이 상황도 데이터 뻥튀기 이지 않나 라는 생각이 듭니다.member1 : teamAmember2 : teamAmember3 : teamA
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
테스트코드 실패
안녕하세요, 테스트코드 결과가 계속 실패되는데... 이유를 찾지 못하여 질문 드립니다. BeforeAll에서 projects를 디버그찍어 skills안의 skill확인 하면 제대로 들어간것이 보이는데, 테스트에 진입을 하면 skills가 0이 되는데...다른 변수들은 다 들어가고 skills만 0이 되는 상황입니다... 어디서 부터 실수를 만든건지 파악이 안되어 도움을 요청드립니다. 아래 현재 문제가 있는 코드 남깁니다.Git 저장소
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
REQUIRES_NEW와 내부 호출
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]내부 호출 문제점은 REQUIRES_NEW 어노테이션이 적용된 경우에도 동일하게 발생하는 것 같은데 맞을까요?? 아래 코드를 실행했을 때 커밋이 한 번도 발생하지 않는 것을 로그로 확인했습니다. 혹시나 해서 여쭤봅니다!! @Slf4j @SpringBootTest public class InternalCallV1Test { @Autowired CallService callService; @Test void externalCall() { callService.external(); } @TestConfiguration static class InternalCallV1TestConfig { @Bean CallService callService() { return new CallService(); } } @Slf4j static class CallService { @Transactional(propagation = Propagation.REQUIRES_NEW) public void internal() { log.info("call internal"); printTxInfo(); } @Transactional public void external() { log.info("call external"); printTxInfo(); this.internal(); throw new RuntimeException("종료"); } private void printTxInfo() { boolean txActive = TransactionSynchronizationManager.isActualTransactionActive(); log.info("tx active={}", txActive); } } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
sequence 전략에서 여러 대의 서버가 동시에 번호를 요청하는 경우
sequence 전략에서 여러 대의 서버가 동시에 번호를 요청하는 경우 어떤 방식으로 동작할 지 궁금합니다.allocationSize로 설정한 값을 여러 대의 서버가 같이 공유해서 사용하고, 할당받은 시퀀스 값을 넘어선 번호를 요청한 서버가 DB에서 시퀀스 값을 할당받아 온다.접근하는 서버마다 allocationSize 만큼 할당을 받아서 각자 할당받은 번호를 사용한다. 제 생각에는 서버가 내려가면 사용하지 못한 시퀀스 값은 날라간다는 말씀을 듣고, 각 서버마다 allocationSize 만큼 할당을 받아서 사용할 것 같은데 정확히 어떻게 동작할 지 궁금합니다.
-
해결됨실전! 스프링 데이터 JPA
코드를 실행해도 DB에 데이터가 추가되지 않습니다
이 테스트를 실행하면 스프링 데이터 JPA의 save 메서드를 사용했으니 바로 DB에 member 하나가 추가되어야 할 것 같은데, DB를 보니 추가된 데이터가 없습니다.application.yml이 문제인가 해서 ddl-auto 설정을 보니 create로 잘 되어있고, 로그를 보면 sql문은 잘 날아가는데 왜 DB에 저장이 안 되는지를 도저히 모르겠어서 프로젝트 압축 파일을 남깁니다 ㅠㅠhttps://drive.google.com/file/d/1tyWEF3_l80u8Vban3No5q59y-x8sjWqF/view?usp=sharing테스트 코드들은 MemberRepositoryTest 클래스에다가 전부 넣어놨습니다. 감사합니다.
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
도메인 객체 / entity 객체 / requset, response 객체 간 mapping 시 mapper 사용
안녕하세요. 관련 내용을 듣다가 궁금한 것이 생겨 질문드립니다.해당 강의를 듣다가 궁금한 것이 생겨 질문드립니다.찾아보니 DDD나 헥사고날 아키텍처에서 request / response 객체 <-> 도메인 객체 <-> entity 객체 간의 mapping이 일어나는 것을 볼 수 있는데요..이런 경우 controller, service, infral layer가 모두 mapper 관련 라이브러리 객체나 직접 구현한 mapper 객체를 들고 변환시켜주는 구조는 별로 좋지 못한 구조일까요?제 개인적인 의견으로는 결국 지금 구조에서 response / request 객체나 entitiy 객체가 domain 객체로 변환시켜주기위해 domain 객체에 의존성이 생기는 구조인데 mapper 객체를 쓰면 이런 객체간의 의존성을 최소화시킨다는 점에서 장점이 있을 것 같은데요.. 물론 정답은 없겠지만, 의견이 어떠신지 궁금하여 질문드립니다.