월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! 스프링 데이터 JPA
@EntityListeners로 오딧항목을 업데이트 하려는데 다른 테이블도 같이 업데이트 됩니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 오딧항목 처리부분 구현해 보다가 이상하게 동작하는 부분이 있어서 문의드립니다. Car - Body < Part 구조가 있을 때, 즉 Car 는Body 와 1:1,Body 와 Part 는 1:n 관계가 있습니다. JPA에서는 모두 양방향 참조로 Car에서 Part 까지 접근 가능하고, 연관관계 주인은 Car -Body 에서는Body 가,Body < Part 에서는Part 가 가지도록 했습니다. 엔티티 저장을 편리하게 하기위해서 모든 OneToXXX 는 cascade 모드를 ALL 로 설정했습니다. 각 엔티티는 Audit 처리를 위해 Audit MappedSuperclass를 상속하고 이 클래스는 int 타입의 version 필드를 가지고 있습니다. 이 Audit 엔티티에 @EntityListeners 를 등록해서 Create, Update 시 버전을 올릴려고 AuditListener 을 구현하고 참조합니다. 오딧 테스트를 위해 @BeforeEach 애노테이션으로 데이터를 넣고 @Test 애노테이션으로 테스트를 수행했습니다. Car 를 리포지토리에서 가져와서 Body 를 통해 Part 를 가져왔고 Part 의 이름을 업데이트 했습니다. 기대하는 값은 Part 테이블의 version 필드가 1 이 되는 것인데, Part 테이블은 정상적으로 1 로 업데이트 됐지만 Car 테이블의 버전도 1 로 바뀌었습니다. 왜 이렇게 동작하는지 궁금합니다. 자세한 사항은 너무 길에서 별도 페이지에 작성하였습니다. 양해 부탁드립니다. JPA Test를 위한 @BeforeEach 와 트랜잭션 분리 감사합니다.
- 미해결실전! 스프링 데이터 JPA
[Error] Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.
안녕하세요 영한님 spring data jpa 를 사용해서 사이드 프로젝트를 진행 중인데 발생하지 않던 에러가 발생하여 너무 이상해서 이렇게 질문을 드립니다. 처음 @Query 어노테이션을 사용하여 @Param을 따로 사용하지 않고 데이터를 바인딩 해주었습니다. (제가 알고 있기론 spring 4version 이상부터는 파라미터의 이름이 같을 시 생략이 가능하다고 알고있었습니다.) 그리고 실제로 @Param을 사용하지 않고도 잘 적용도 되었고 문제없이 실행되었지만 기능을 확장하는 과정에서 갑자기 ava.lang.IllegalStateException : For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. 이렇한 에러가 발생한 것이었습니다. 그래서 @Param 어노테이션을 사용해서 해결은 하였지만 정확히 왜 기존에는 잘 되었는지, 그리고 이제와서 에러가 발생한건지 원인을 찾고 싶었는데 아무리 검색해도 찾지를 못했습니다. 혹시 이에 대해 정보를 얻을 수 있을까요??? 감사합니다
- 미해결실전! 스프링 데이터 JPA
해당 영상에서 member엔티티의 id값 할당방식
@Id @GeneratedValue Member 엔티티의 id생성이 auto로 디폴트값인데, 영상 7분 10초에 멤버의 객체생성이 하나뿐인 테스트에서id값이 1이아닌 2로 뜨는지 궁금합니다.
- 미해결실전! 스프링 데이터 JPA
이후 과정에 대해 질문이 있습니다.
여기에 질문을 하는게 맞는지 모르겠지만 혹여나 저와 비슷한 고민을 하는 사람들도 있을까 싶어 여기에 남겨봅니다. 저는 이제 막 강사님의 스프링부트 기초, JPA 1,2 , 데이터 JPA 까지 다 듣게 되었습니다. 뭔가 배우면 그걸 바로 써먹고 싶어서 간단한 프로젝트를 해보려 했는데 생각보다 의도대로 흘러가지 않는다는걸 느꼈습니다.. 대부분 시작은 그렇겠지만 아직 덜 배웠다는 느낌이 매우 강합니다. 예를 들어 기본적인 글과 댓글을 남기는 게시판이야 어렵진 않은데 이미지 파일 등을 처리하는 과정이 제가 이전에 쓰던 장고와는 좀 많이 달라 약간 어려움이 있습니다. 좀 알아보니 강사님께서 강의하신 스프링MVC 강의에 해당 내용이 있는듯 한데 저같은 경우엔 우선 잘 모르더라도 남들이 쓴 코드를 보고 대충 적용해서 간단한 토이프로젝트를 완성하는게 좋을지 혹은 강사님의 스프링MVC 강의를 듣고 좀 더 완성도 있게 진행하는 방향이 좋을지 궁금합니다.
- 미해결실전! 스프링 데이터 JPA
repository는 entity당 개별로 생성해줘야 하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의내용을 보면 Member와 Team 엔티티가 있고 JpaRepository를 상속받은 repository 또한 각각 만들어져 있습니다. 단순한 조회는 이미 정의되어있는 메소드로 가능하지만, 다른 테이블(엔티티)와 조인하는 경우에는 직접 정의해서 사용 가능하다는 내용의 강의였는데요 그럼 만약 4개 5개 복잡한 엔티티들과 연관된 쿼리들을 정의하고 싶다면 어느 repositroy에 정의를 해야할지 고민입니다. 여러 엔티티를 1개의 repository로 관리하고자 해도, 상속받을때 <>속에 특정 엔티티를 넣어줘야하는데, 그럼 어떤 엔티티를 넣어야할까요? 코딩에 정답은 없겠지만은 실무에서는 관례쩍으로 어떤식으로 구현을 하는지 궁금합니다.
- 미해결실전! 스프링 데이터 JPA
선생님 질문이 있습니다!
안녕하세요! 강의 재밌게 수강하고 있습니다! 실례가 안 된다면 혹시 선생님께서 말씀하시는 핵심 비즈니스 로직과 화면 혹은 API에 맞춘 로직의 차이점을 간단하게 설명해주실 수 있으실까요? 저는 화면에 출력하거나 API를 만드는 게 곧 핵심 비즈니스 로직이라고 생각했는데 제가 잘못 생각하고 있었던 거 같아 혹시 도움을 받을 수 있을까 하여 질문 남기게 됐습니다 ㅠ + Trade off는 어떤 의미로 이해하면 좋을까요? ㅠㅠ P.S 비전공자로 여러 강의를 들으면서 선생님 강의 만난 게 최고의 행복인 거 같습니다! 종종 PPL 하시는 JPA 책도 잘 읽고 있는데 언젠가 기회가 되면 선생님께 싸인 받고 싶습니다 ㅋㅋㅋ 존경합니다 선생님!
- 미해결실전! 스프링 데이터 JPA
File-project Structure 설정
안녕하세요 강의 잘 보고 있습니다. 4:30초 쯤에 하는 설정으로 인해서 멤버 변수 옆에 주황색 a 가 생겼는데 이것이 의미하는 것은 무엇인가요?
- 미해결실전! 스프링 데이터 JPA
entitygraph관련 궁금증
안녕하세요!! 만들어주신 로드맵을 열심히 공부하고 있는 학생입니다! @entityGraph와 관련하여 추가적인 궁금증이 있어 질문드립니다. 먼저 해당 내용에 대해 repository 내에서 findAll() 메소드를 상속받아, 여기에 fetch join을 부여해 주는 것으로 이해했는데요 혹시 이렇게 상속받으면 findAll 메소드 자체가 바로 fetch join을 진행하는것이 아닐까 해서요 예를 들어 A 위치에서는 member의 변수만을 필요로 하고, B 위치에서는 team까지 가져오려 하면 A에서는 LAZY로 유지되는 것이 좋고, B에서는 바로 fetch join하는 것이 나을 거라 생각하는데 위의 방식이면 둘 다 바로 fetch join을 진행할 것 같다고 생각하는데 이게 맞을까요?? 혹시 맞다면 어떤 식으로 고치는것이 더 최적화될지 궁금합니다.... --- 추가로 혹시 @entityGraph는 무조건 left outer join에서만 적용되는 것일까요??
- 미해결실전! 스프링 데이터 JPA
@Path variable로 Id를 받을 때 궁금증
강의를 듣다가 궁금한게 생겼는데요 Id 같은 PK의 경우에 좀 중요한 정보라고 생각을 합니다. 사용자 입장에서는 자동적으로 매겨진 pk인 id를 모르겠지만 이것을 사용자 측에서 저장하고 server와 주고 받는것이 맞는건지 궁금합니다. 공부를 하는 입장이라 실무에서는 어떤 방식으로 사용자 정보를 조회하도록 하는지가 너무 궁금합니다. ID정도는 넘겨줘도 상관이 없는건가요? 아니면 이러한 정보를 절대 전송하면 안되고 매번 session에서 꺼내야 하는건가요? cookie 에서 이 값을 저장해도 무방한가요? 무엇이 나은가요? ㅠㅠ cooki Id
- 해결됨실전! 스프링 데이터 JPA
Repository 구현체와 인터페이스
안녕하세요. 강의에서는 JpaRepository 구현체와 JpaRepository를 상속받은 인터페이스 Repository 두개를 만들어서 비교하는 형태로 강의를 하셨는데 1.영한님께서도 보통 두가지를 따로 만들어서 주로 인터페이스 Repository에서 처리할수 있는것들은 처리하고, 인터페이스만으로는 안되는것들은 구현체Repository에서 처리하시나요?? 2. 지금 강의를 들어보면 인터페이스Repository에서도 jpql쿼리문을 작성할수있기때문에 구현체Repository를 사용할일이 없어보이는데 인터페이스에서는 불가능한 예시 하나만 들어주실수있으실까요? 항상 감사합니다!
- 미해결실전! 스프링 데이터 JPA
21:30 질문
21:30 시간에 기본적으로 optional로 findById가 반환된다고 하셨는데요. orElseGet으로 하면 빈 Member를 넘겨주는게 좋을까요? 실무에서 어떤 방식으로 findById했는데 해당 정보가 없는경우 어떻게 처리해주는지 그것이 궁금합니다. orElseGet으로 하면 없다는것에 대한 기준(예를 들어 Member의 이름이 nothing 이거나, 다른방식이던)을 어떻게 해주는게 좋을지 고민입니다
- 해결됨실전! 스프링 데이터 JPA
Page 인터페이스로 실제 웹에 적용할때..
안녕하세요 영한님 질문드립니다. 현재 Page<T> 로 값을 반환받았을때 여러가지 메서드를 사용할수있는것을 확인했습니다. 그런데 실제 웹의 페이징을 보면 << < 1 2 3 4 5 > >> << < 6 7 8 9 > >> 이런식으로 전체페이지가 9까지 있을경우 페이지를 5개씩 나눠지는데요. 1.Page의 메서드 결과값으로 따로 계산식 없이는 표현하는게 불가능해 보입니다. 저런식으로 나타내고 싶을때는 현재페이지,마지막페이지, 노출페이지갯수 를 이용하여 계산식을 따로 적용하는게 맞는건가요? 2.Slice를 이용해 모바일의 더보기에 보통 적용한다고 하셨는데요. 그럼 offset값은 0을 고정하고 limit값을 더보기 버튼을 클릭했을때 숨겨진 page번호가 limit * page번호 = limit 값이 되어 매개변수에 넣어주면 되는건가요?
- 미해결실전! 스프링 데이터 JPA
JPA Dirty Checking - open session in view
안녕하세요 JPA Dirty Checking 관련 질문 드립니다. 우선 환경은 Spring Boot 입니다. public void test() { OrderInfo orderInfo = new OrderInfo(); orderInfo.setStatus("test"); oRepo.save(orderInfo); OrderInfo findOrderInfo = oRepo.findById(orderInfo.getId()).get(); findOrderInfo.setStatus("zzzzzzz"); } 위와 같은 코드가 있다고 할 때 Open session In view 설정과 @Transactional 에 따라서 dirty checking 되는 로직에 대해서 질문드립니다. 1. Open Session in View : true @Transactional : 사용 안함 Hibernate: call next value for hibernate_sequence Hibernate: insert into order_info (status, id) values (?, ?) Hibernate: select orderinfo0_.id as id1_0_0_, orderinfo0_.status as status2_0_0_ from order_info orderinfo0_ where orderinfo0_.id=? 2. Open Session in View : false @Transactional : 사용 안함 Hibernate: call next value for hibernate_sequence Hibernate: insert into order_info (status, id) values (?, ?) 3. Open Session in View : true @Transactional : 사용 Hibernate: call next value for hibernate_sequence Hibernate: insert into order_info (status, id) values (?, ?) Hibernate: update order_info set status=? where id=? 4. Open Session in View : false @Transactional : 사용 Hibernate: call next value for hibernate_sequence Hibernate: insert into order_info (status, id) values (?, ?) Hibernate: update order_info set status=? where id=? 1 번의 경우 영속성 컨텍스트가 각각의 트랜잭션에서 끝나서 select 문이 나가는 것으로 보입니다. 2번의 경우 OSIV로 인해 영속성 컨텍스트가 끝까지 남아서 select문이 안나가는 것으로 보입니다. 3번의 경우도 OSIV와 Transaction으로 인해 영속성 컨텍스트안에 있는 객체를 가져오기에 select 문이 안나가는 것으로 보입니다. 그 후 dirty checking 으로 인해 update 문이 발생합니다. 4번의 경우 트랜잭션 범위내에 있는 영속성 컨텍스트에서 찾아오기에 select문이 안나가는 것으로 보입니다. 그 후 dirty checking 으로 인해 update 문이 발생합니다. dirty checking 의 경우 영속성 컨텍스트가 관리하고 있는 엔티티에 대해서 스냅샷을 저장 후 변경이 되면 나가는 것으로 알고 있습니다. 그럼 이 때 2번의 경우 영속성 컨텍스트가 남아서 select문이 안나간다고 생각을 하는데 왜 dirty checking 이 안되는 이유가 있을까요??
- 미해결실전! 스프링 데이터 JPA
UsernameOnly 내의 함수 네이밍 룰
안녕하세요 UsernameOnly에서 GetUsername() 으로 함수명을 적었더니 오류가 발생하였는데 프로젝션 기능을 쓰기 위해서는 소문자 get + 변수명을 작성해야 하는걸까요 ?
- 미해결실전! 스프링 데이터 JPA
커맨드와 쿼리 분리
안녕하세요 영한님 강의 후반부에 커맨드와 쿼리 분리 라고 말씀하셨는데 여기서 뜻하는 커맨드는 어떤 것을 의미하는 것일까요?
- 미해결실전! 스프링 데이터 JPA
Projection 활용 네이티브 쿼리 예제 질문있습니다.
안녕하세요 아직 코딩 초보라 질문이 조금 부족해도 이해 부탁드립니다!강의를 따라 코드를 작성하고 있는데 Projection 활용 네이티브 쿼리 실습 부분에서 결과가 이상하게 출력되어서 질문 남깁니다! MemberProjection 인터페이스 생성하고, MemberRepository 인터페이스에 @Query 작성하고, 테스트 코드도 따라서 작성했는데 결과가 아래와 같이 출력됩니다. 혹시 이전에 작성한 코드들 중에 위와 같은 결과를 야기시킬만한 코드가 어떤게 있을까요...?아시는 분들 답변 부탁드립니다!
- 미해결실전! 스프링 데이터 JPA
쿼리 출력 형태
안녕하세요 쿼리가 김영한님처럼 예쁘게 포맷된 형태가 아니라 한 줄로 나오는데 이걸 변경하려면 어떤 옵션을 써야할까요?
- 미해결실전! 스프링 데이터 JPA
findProjectionsByUsername 생성오류
Error creating bean with name 'memberRepository' defined in study.datajpa.repository.MemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.List study.datajpa.repository.MemberRepository.findProjectionsByUsername(java.lang.String)! Reason: Failed to create query for method public abstract java.util.List study.datajpa.repository.MemberRepository.findProjectionsByUsername(java.lang.String)! null; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List study.datajpa.repository.MemberRepository.findProjectionsByUsername(java.lang.String)! null 이렇게 repository에서 저 네임메서드가 생성이 안되어서 오류가 뜨는데 해결이 안됩니다..
- 미해결실전! 스프링 데이터 JPA
테스트 메인 클래스
안녕하세요. test 패키지 밑에 DataJpaApplicationTest 라는 클래스가 자동생성되지 않은 것 같은데 왜 이런 현상이 있나요?
- 미해결실전! 스프링 데이터 JPA
External Libraries
안녕하세요 강의 항상 잘 듣고 있습니다. 인텔리j에서 왼쪽 프로젝트의 External Libraries 에 있는 것들과 오른쪽의 Gradle에서 보는 의존성. 이 2개의 차이는 무엇인가요? 감사합니다.