묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
여러 프로젝트에서 하나의 데이터베이스에 접근하는방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 강의 열심히 보고 있습니다. 감사합니다.다름이 아니라현재 여러프로젝트에서 하나의 데이터베이스에 접근하여crud 를 하고자 합니다. 1. 알아본결과 모든 프로젝트에서 똑같이 엔티티를 관리하면 된다고 하는거같은데.. 이게 맞을지요..2. 그리고 만약 맞다면 그럼 한곳에서 엔티티를 수정하게 되면 다른곳에서도 똑같이 다 수정해야하는게 아닌가 위 방법은 생각 해봐도 아닌거같아서.. 아마 따로 엔티티를 공용으로 관리하여 사용하는 방법이 있을거같은데 그런방법이 없을지요.. 주로 어떤방법을 사용하는지 알려주실수 있나요...
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
jdk 관련 질문입니다
안녕하세요! 자바 스프링 수업 재밌게 듣고 있습니다.다름이 아니라 사용하는 SDK가 Oracle OpenJDK version 17.0.10 버전 다운하여 사용중입니다. 이게 기업용은 유료로 바꼈다고 조심해서 사용하라고 하길래 검색해봐도 시원하게 결과가 나오지 않아서 질문드립니다.Oracle JDK와 Oracle OpenJDK가 다른게 맞는건지, 무료 사용은 맞는지, 기업용 무료사용은 어떤걸 선택해야하는지 궁금해서 질문드립니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.clear() 질문
안녕하세요. 혼자 실습 중에 이해가 안가는 것이 있어 질문드립니다.Member member = new Member(1L, "jiho"); em.persist(member); Member jiho = em.find(Member.class, 1L); em.clear(); Member jiho2 = em.find(Member.class, 1L); System.out.println(jiho == jiho2); tx.commit();를 실행했을 때의 결과가로 나옵니다.false 출력 후에 commit() 호출로 쓰기 지연 저장소에 있던 insert sql문이 실행되야할 것 같은데,실행되었다는 문구도 없고 DB에도 저장되어있지않습니다. em.clear();가 1차캐시 뿐만 아니라 쓰기 지연 저장소에 있는 쿼리문들도 모두 지워버리는건가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
String query = "SELECT t.members.size FROM Team t"; 오류
아래 내용 검색해보니 SIZE(t.member)로 사용하라고 안내하는데 왜 저는 안되는걸까요...? java.lang.IllegalArgumentException: org.hibernate.query.SemanticException: illegal attempt to dereference collection [com.example.jpql.jpql.Team(t).members] with element property reference [size]Caused by: org.hibernate.query.SemanticException: illegal attempt to dereference collection [com.example.jpql.jpql.Team(t).members] with element property reference [size]
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티 수정 과정과 쓰기 지연 저장소
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요! 플러시 강의 54초 부분에서 플러시 발생 시 수정된 엔티티가 쓰기 지연 SQL에 등록된다고 하셨는데, 그럼member.setUsername(",,,"); 와 같은 변경 메소드 호출변경은 영속성 컨텍스트에 바로 반영됨쓰기 지연 SQL 저장소에 UPDATE SQL 등록commit()후 flush()가 호출되며 스냅샷과 영속성 컨텍스트에 등록되어있는 엔티티 사이의 불일치 감지변경된 엔티티를 쓰기 지연 SQL 저장소에 등록flush로 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송와 같이 동작하는 것이 맞나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테이블 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]아직 @Column등의 어노테이션이 좀 헷갈려서 테이블과 코드를 같이보며 익숙해지려하고있는 상태에서 테이블을 보니, 예를들면 orders테이블에 ORDER_DATE가 추가가 되있고 코드에서는 private LocalDateTime orderDate; 와 같이 다른 어노테이션이 붙지 않앗음에도 데이터베이스에 추가가 되는거같아보입니다. 그럼 제가 이해하기론 따로 컬럼명을 바꿔서 넣고싶을떄 어노테이션에 name=""필드를 추가하고 아닐땐 그냥 필드 선언만 하면 되는건가요? 제가 이해를 제대로 한건지 모르겟어요 ㅠㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강사님의 flush 중복 언급에 대해
강사님이 커밋하며 내부적으로 flush 가 호출된다고 했는데..왜 1번과 4번에 flush 가 두번있는건가요?내부적으로 flush 일어난다는게 1번과 4번 어떤건가요?커밋은 5번인데..처음에 어플리케이션 코드에인 tx.commit() 이것을 호출하면내부적으로 1번의 flush 가 호출된다는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Transactional 적용 범위 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요! 강의 잘 듣고 있습니다.@Tansactional 어노테이션을 붙이면 private 메서드들에도 해당 어노테이션이 적용되는 건가요?이 질문을 하는 이유는 join 메서드 안에서 validateDuplicateMember 메서드를 사용하고 있고 join은 @Transactional이 걸려있는 상태인데 이럴 경우에 어떤 게 적용되는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대일 단방향 관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]일대일 관계에서 외래 키를 대상 테이블에 넣을 때 왜 양방향 관계만 JPA에서 지원하고 단방향은 지원하지 않는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 매핑과 단방향 매핑의 차이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]단방향 매핑이랑 양방향 매핑의 차이점에 대해 생각해보았습니다. 먼저, DB에서 FK 하나만 있으면 양 테이블 Join 조회가 가능해서 FK 는 단방향 매핑처럼 DB 테이블에 존재하면 된다고 이해했습니다. 그래서 단방향 매핑과 양방향 매핑의 차이는FK "하나"를 가지고 단방향 이동을 할것인가 or 양방향 이동을 할것인가의 차이-> 이 경우는 양방향 매핑은 mappedBy 로 객체 세상에서 기존 단방향에서 양방향으로 접근이 가능하게 만들고(DB에선 원래 가능했음), By 쪽에서 DB 세상의 반대쪽 매핑 테이블 값을 변경하지 못하도록 JPA 에서 막는다고 이해했습니다. 제가 이해한 게 맞는지 궁금합니다. 추가적으로 @OneToMany 가 붙은 컬럼은 데이터베이스 테이블에 생성되지 않는건가요 원래?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 초기화 detach 질문
[질문 내용]안녕하세요 저와 비슷한 질문이 게시판에 올라와있는데 답변이 이해가지 않아서 질문 올립니다 아래 코드에서 강의와 다른점은 System.out.println에서 reference.getClass() 대신 reference를 썼다는 점 입니다. try { Member member1 = new Member(); member1.setName("member1"); em.persist(member1); em.flush(); em.clear(); Member reference = em.getReference(Member.class, member1.getId()); System.out.println("reference = " + reference); em.detach(reference); System.out.println(reference.getName()); tx.commit(); } catch (Exception e) { tx.rollback(); e.printStackTrace(); } finally { em.close(); }reference.getClass()에서 getClass()를 쓰지 않으면 reference.geName()했을때 member1로 출력이 됩니다.그런데 이 이유를 모르겠습니다. 저는 detach(reference)를 하면 프록시 객체 reference가 영속성 컨텍스트에서 분리되어서 getName()을 쓰지 못할거라고 생각했는데 왜 member1이 출력되는지 모르겠습니다 여기서도 에러가 나야하는것 아닌가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@Autowired 안 쓰는 이유가 있을까요??
Service나 jdbcTemplate 변수 설정하실 때 @Autowired 안 쓰신 이유가 따로 있으실까요???
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Querydsl 레포지토리 분리
안녕하세요 영한님! 저는 V4 방식으로 조회를 할 때, 주로 querydsl을 사용해서 쿼리를 작성합니다. (new 키워드도 제거할 수 있고, 좀 더 직관적인 이유 때문입니다.)이런 경우 쿼리용 레포지토리를 분리할 때 쿼리 레포지토리용 CustomRepository를 따로 작성해줘야 하나요?? 엔티티 조회용OrderRepository CustomOrderRepository 쿼리 조회용 (DTO)OrderQueryRepository CustomOrderQueryRepository
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문조회 질문입니다.
자바 17로 하면 아래같이 코드를 캐스캐이드 하라고 나옵니다. cq.where(cb.and(criteria.toArray(new Predicate[criteria.size()]))); 이부분은 캐스캐이드 해줘도 빨간줄이 나옵니다. 혹시 17버전으로 작동되는 코드는 어떤것이 있을까요? package jpabook.jpashop.repository;import jakarta.persistence.EntityManager;import jakarta.persistence.TypedQuery;import jakarta.persistence.criteria.*;import jpabook.jpashop.domains.Order;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;import org.springframework.util.StringUtils;import java.util.ArrayList;import java.util.List;import java.util.function.Predicate;@Repository@RequiredArgsConstructorpublic class OrderRepository { private final EntityManager em; public void save(Order order){ em.persist(order); } public Order fineOne(Long id){ return em.find(Order.class,id); }// public List<Order> findAllByString(OrderSearch orderSearch){// QOrder order=QOrder.order;//// } /** * JPA Criteria */ public List<Order> findAllByCriteria(OrderSearch orderSearch) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Order> cq = cb.createQuery(Order.class); Root<Order> o = cq.from(Order.class); Join<Object, Object> m = o.join("member", JoinType.INNER); List<Predicate> criteria = new ArrayList<>(); //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { Predicate status = (Predicate) cb.equal(o.get("status"), orderSearch.getOrderStatus()); criteria.add(status); } //회원 이름 검색 if (StringUtils.hasText(orderSearch.getMemberName())) { Predicate name = (Predicate) cb.like(m.<String>get("name"), "%" + orderSearch.getMemberName() + "%"); criteria.add(name); } cq.where(cb.and(criteria.toArray(new Predicate[criteria.size()]))); TypedQuery<Order> query = em.createQuery(cq).setMaxResults(1000); return query.getResultList(); }}
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
재고수량 초과 테스트 InvalidDataAccessApiUsageException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]재고수량 초과할 때 NotEnoughStockException 예외가 터져야 하는데 InvalidDataAccessApiUsageException 예외가 나오네요에러 메세지와 코드 첨부하겠습니다 [error message]java.lang.Exception: Unexpected exception, expected<jpabook2.jpashop2.exception.NotEnoughStockException> but was<org.springframework.dao.InvalidDataAccessApiUsageException> at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:30) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) 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.dao.InvalidDataAccessApiUsageException: id to load is required for loading at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:246) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) at jpabook2.jpashop2.repository.ItemRepository$$SpringCGLIB$$0.findOne(<generated>) at jpabook2.jpashop2.service.OrderService.order(OrderService.java:34) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:392) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) at jpabook2.jpashop2.service.OrderService$$SpringCGLIB$$0.order(<generated>) at jpabook2.jpashop2.service.OrderServiceTest.재고수량_초과(OrderServiceTest.java:62) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19) ... 23 moreCaused by: java.lang.IllegalArgumentException: id to load is required for loading at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:77) at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:43) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:206) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.doLoad(IdentifierLoadAccessImpl.java:160) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.lambda$load$1(IdentifierLoadAccessImpl.java:149) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.perform(IdentifierLoadAccessImpl.java:112) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:149) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2424) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2390) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:319) at jdk.proxy2/jdk.proxy2.$Proxy123.find(Unknown Source) at jpabook2.jpashop2.repository.ItemRepository.findOne(ItemRepository.java:25) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 55 more[코드]@Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository;@Test(expected = NotEnoughStockException.class) public void 재고수량_초과() throws Exception { //given Member member = createMember(); Item item = createBook("JPA book", 10000, 10); int orderCount = 11; //when orderService.order(member.getId(), item.getId(), orderCount); //then fail("재고 수량 부족 예외가 발생해야 한다."); }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Member findMember = em.find(Member.class, member.getId()); em.detach(findMember); System.out.println("findMember.getUsername() = " + findMember.getUsername());프록시를 detach() 했을땐 이름 조회 안되고, find()로 했을 땐 detach() 해도 이름 조회되는게 프록시는 껍질 엔티티를 받는거라서 detach() 하면 안되고, find 로 받으면 실제 엔티티라서 detach() 해도 이름 조회가 되는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 등록 강의 질문있습니다.
상품 등록 강의 5분부터 form을 넘겨줘서 추적이 가능하다고 하셨는데요.model.addAttribute("form", new BookForm()); form 이부분이 html의 form부분과 이름이 같아서 추적이 가능한건가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
MemberServiceTest에 관하여 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]MemeberServiceTest 다 돌려봤는데 outerTxOff_fail()만 에러 뜨는게 정상인거죠??
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
db사용시에 그냥 워크벤치로 해도되나요?
db사용시에 그냥 워크벤치로 해도되나요?그럼 따로 인텔리제이랑 연결하는건 없는건지 궁금합니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
완성 코드에도 도서관 프론트엔드 소스가 html 파일에 안보이는데
7강 듣는 중에 갑자기 완성된 도서관 UI를 보여주셨는데 해당 index.html에는 해당 소스 코드가 확인이 안되는데 어디서 소스코드를 얻을 수 있는건가요 ? 아니면 뒤에서 같이 개발을 하는건가요 ? 완성본 소스 코드에서도 index.html 에서 해당 ui 코드 확인이 안되어서 물어봅니다.