묻고 답해요
138만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Practical Testing: 실용적인 테스트 가이드
브라우저에 json 예쁘게 출력하는거 어떤 확장인가요?
궁금합니당
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티매니저는 스레드별로 다시 생성되나요?
영한님 JPA 책에서 아래 그림을 보면 스레드가 하나이고 두개의 레포지토리를 사용할때 두개의 엔티티매니저가 하나의 영속성컨텍스트를 사용한다고 나와있습니다. 하지만 테스트 결과(레포지토리에 각각의 엔티티매니저가 있지만 SharedEntityManagerCreator를 통해서(?) 하나의 엔티티매니저를 사용하는걸 확인 했습니다(하나의 SessionImpl을 사용하고 있었으며 내부에 영속성 컨텍스트도 공유함)제가 이해한바가 맞는지 봐주시면 감사하겠습니다.엔티티매니저는 Bean으로 등록되지 않는다.엔티티매니저프록시객체에 메서드를 호출하면 현재 트랜잭션에서 사용되고 있는 엔티티매니저가 있는지 확인후 없다면 팩토리를 통해 엔티티매니저를 생성하고 있다면 재사용한다.엔티티매니저팩토리(인터페이스)는 직접 빈으로 등록되지 않고 LocalContainerEntityManagerFactoryBean 가 빈으로 등록되고 내부 필드에 EntityManagerFactory를 가지고 있고 다른곳에서 생성하지 않기때문에 논리적으로 싱글톤이다 라고 할 수 있다 라고 이해했습니다. 질문이해한 내용에서 3번이 맞다면 LocalContainerEntityManagerFactoryBean 에는 프록시 팩토리와 네이티브 팩토리가 있는데 왜 나눠서 인스턴스 변수로 갖고있는걸까요?EntityManagerFactory를 @Autowired로 주입받을때 LocalContainerEntityManagerFactoryBean 가 프록시 엔티티매니저팩토리를 만들어서 넣어주는걸까요?사진에서 SimpleJpaRepository에 em은 디버깅에서 위에 사진처럼 나오고 있는데 이유는 LocalContainerEntityManagerFactoryBean에서 팩토리를 통해 프록시 객체를 생성해주기 때문인가요?엔티티매니저프록시에서 메소드가 호출되면 리플랙션으로 SharedEntityManagerCreator.invoke 메소드가 호출되서 실제 엔티티매니저를 실행한다고 이해하면 될까요?LocalContainerEntityManagerFactoryBean 의 역할을 모르겠습니다.ㅠㅠ 팩토리를 논리적 싱글톤으로 관리하기 위한 객체일까요?너무 궁금해서 이 새벽까지 디버깅하다보니 질문이 많습니다 ㅠㅠ 답변주시면 감사하겠습니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
11분40초 부분 team, member쿼리가 나가지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Hibernate: create table Member ( MEMBER_ID varchar(255) not null, TEAM_ID bigint, USERNAME varchar(255), primary key (MEMBER_ID) )Hibernate: create table Team ( TEAM_ID bigint not null, name varchar(255), primary key (TEAM_ID) ) create모드로 설정되어있고 이렇게 drop하고 create만 하고 강의처럼 insert 쿼리를 생성하지 않는데 어떤점이 문제일까요?public class JpaMain { 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("TeamA"); em.persist(team); Member member = new Member(); member.setUsername("member1"); member.setTeamId(team.getId()); em.persist(member); tx.commit(); } catch(Exception e){ tx.rollback(); } finally { em.close(); } emf.close(); } }
-
미해결실전! 스프링 데이터 JPA
@CreatedDate에 관하여
@CreatedDate가 persist 전에 호출된다는 말씀이 -> persist 전에 호출되기 때문에 createdDate의 값을 가져오기 위해 별도의 쿼리를 날리지 않는다는 말인가요??또 CreateDate를 사용하는 이유가 persist 전에 호출되고 persist 이후에 JPA가 createdDate에 값을 넣어주기 때문에 사용한다고 생각하는게 맞을까요??
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
대출 반납 오류
https://github.com/strongmhk/Springboot/blob/main/library-app/src/main/java/com/group/libraryapp/domain/user/User.java 처음에 B라는 유저가 클린코드를 대출했다가 반납했는데, 잘되었습니다.근데 다시 대출을 하고 반납을 누르면 반납이 완료됐다고 뜨는데,B라는 유저로 다시 대출을 하려니까 오류가 뜨네요.그래서 DB를 확인해보니 DB에는 B라는 유저가 처음 대출을 하고 반납을 한 후, 2번째로 대출 후 반납을 했을 때 is_return 필드가 갱신되지가 않습니다.제 생각엔 User 클래스 안의 returnBook 메서드에서 .findFirst() 메서드 때문인 것 같기도한데 findLast라는 메서드는 없네요. 해결책이 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
ORM 책 말인데요..
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ORM 서적 혹시 개정판 안 나오나요...버전이 꽤나 바뀐 탓에 사고 싶은데 약간 망설여지네요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
질문입니다.
현재 maven 으로 작업을 하셨는데 이를 gradle 로 한다면 하이버네이트 + gradle 로 작업을 하게 되는데 이런 식으로 실무에 많이 사용이 되나요?maven + hibernate / gradle + hibernate / maven + 스프링 데이터 JPA / gradle + 스프링 데이터 JPA 과 같은 조합들을 고민해보다가 헷갈려서 질문 드립니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대일 관계에서 유니크 제약조건이 추가 질문
강의에서 "외래키에 데이터베이스 유니크 제약조건이 추가되어야 일대일 관계가 가능하다" 를 알아보고자 Member 클래스의 Locker 객체를 아래와 같이 만들었습니다. @OneToOne @JoinColumn(name="LOCKER_ID", unique = true) private Locker locker; unique 값의 default가 false라 true를 바꿔서 넣어보니 잘 작동했습니다.그 다음 빼면 어떻게 되는지 궁금하여 unique 값을 @OneToOne @JoinColumn(name="LOCKER_ID") private Locker locker; 위와 같이 설정하고 돌려보니 create table member ( locker_id bigint unique)unique = true를 했던 것처럼 쿼리를 JPA에서 만들어줬습니다.<질문>@OneToOne 일때 JPA에서 자동으로 unique = false(default) 를 unique = true로 만들어주는지 궁금합니다.답변주시면 정말 감사하겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderItem - Item 관계에 대해 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]OrderItem과 Item는 N:1 관계라고 나오는데요, 하나의 주문에는 여러 상품이 들어가는 건 이해하겠는데 "하나의 상품(하나의 id를 가진)"이 여러 주문에 들어 가는 게 이해가 잘 안 됩니다. 가령 내가 쿠팡에서 내 장바구니에 비누, 치약, 샴푸 3가지 상품을 샀는데 이 각각의 상품들은 id를 가지고 있을 것이고 여기서 결제하고 주문을 완료하면 이 3가지 상품들은 해당 주문 목록에만 표시 될텐데요? 이 중 어느 하나의 상품이라도 다른 OrderItem에 포함 된다는 의미가 뭔지 이해가 안 가네요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
타임리프에서 삼항연산자
<td th:text="${order.orderItem} ==null ? '': ${order.orderItem.get(0).item.itemName}"></td> 혹시 이런식으로 order라는 객체 안에 ordrItem 이 널이 아니면 그중 첫번째 아이의 item.itemName을 표시하려고 하는데요. 계속 에러가 나네요 ㅡ2023-07-26T04:07:54.378+09:00 ERROR 31024 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "order.orderItem.get(0).item.itemName" (template: "/order/list" - line 25, col 25)] with root causeorder.orderItem[0].item.itemName이렇게 해도 비슷한 에러가 나는데 혹시 해결방법있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@ModelAttribute 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@PostMapping 에서는 @ModelAttribute가 전송내용을 담는 역할을 하는것으로 이해가 되는데@GetMapping("/orders") public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) { List<Order> orders = orderService.findOrders(orderSearch); model.addAttribute("orders", orders); return "order/orderList"; }위 코드처럼 @GetMapping에서는 @ModelAttribute("orderSearch") OrderSearch orderSearch가 어디서 값을 받아오는지가 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@RequestParam 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@PostMapping("/order") public String order(@RequestParam("memberId") Long memberId, @RequestParam("itemId") Long itemId, @RequestParam("count") int count) { orderService.order(memberId, itemId, count); return "redirect:/orders"; }여기서 상품주문버튼을 누르면 주문회원, 상품명, 주문 수량이 등록되는데 @requestParam의 memberId, itemId, count는 값을 어디서 어떻게 받아오는지를 모르겠습니다. 주문회원, 상품명같은 경우는 String인데 어떻게 Long타입의 memberId, itemId를 받아오나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트에 대해 질문이 있습니다.
https://www.inflearn.com/questions/789381/%EC%97%94%ED%8B%B0%ED%8B%B0-%EB%A7%A4%EB%8B%88%EC%A0%80-%EB%8F%99%EC%8B%9C%EC%84%B1 위에 질문과 답변을 봤을때는 엔티티매니저가 달라도 트랜잭션이 같으면 같은 영속성컨텍스트를 사용한다고 되어있습니다. 하지만 이 부분이 실제로 어떻게 이뤄질 수 있는것인지 이해되지 않습니다. 코드로 어떻게 되어져 있는지 찾아볼 수 있을까요?제가 찾아본 내용으로는 SessionImpl이라는 엔티티매니저 구현체에 아래 처럼 엔티티매니저를 넣어서 영속성컨텍스트를 생성하는 코드를 볼 수 있었습니다. 그럼 영속성 컨텍스트는 따로 만들어지는게 아닌가? 라는 생각도 하게되었습니다. protected StatefulPersistenceContext createPersistenceContext() { return new StatefulPersistenceContext( this ); } 트랜잭션에 따라 영속성 컨텍스트가 공유되고 스레드마다 영속성 컨텍스트가 어떻게 나눠질 수 있는지 궁금합니다.그리고 영속성컨텍스트는 프록시라도 Bean으로 등록되는데 실제 동작을 하는건 원본객체일테고 그럼 그 객체이 있는 영속성컨텍스트를 공유하게 되는것은 아닌가? 의문이 들었습니다.질문을 정리하겠습니다. 트랜잭션에 따라 영속성 컨텍스트가 어떻게 공유될 수 있나요?(확인할 수 있는코드나 기술이 있다면 말씀해주시면 감사하겠습니다.)Bean으로 등록된 엔티티매니저가 다른 상태를 유지할 수 있는 방법이 무엇인가요? 프록시라해도 원본객체를 통해 동작하는게 아닌가요?영속성컨텍스트는 프록시라도 Bean으로 등록되는데 실제 동작을 하는건 원본객체일테고 그럼 그 객체이 있는 영속성컨텍스트를 공유하게 되는것은 아닌가요?바보같은 질문일 수 있지만 답변해주시면 너무 감사하겠습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Table "MEMBER" not found 오류 문의
안녕하세요, 5강 학습 중 오류가 발생해 문의드립니다.수업과 동일하게 진행했지만, 계속해서 MEMBER 테이블을 찾을 수 없다는 에러가 발생합니다.(Table "MEMBER" not found (this database is empty); SQL statement:)두번째 이미지처럼 MEMBER 테이블도 정상적으로 생성되어 있는 상태입니다.혹시 어떻게하면 DB를 제대로 연결할 수 있을지 문의드리고 싶습니다.감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
member_seq 테이블이 생성되는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]h2 대신에 로컬에 설치되어 있는 mysql 로 예제를 따라하고 있습니다. testMember() 를 실행하고 생성된 테이블을 확인하니, member, member_seq 두 테이블이 생성이 되었습니다. 출력된 sql 문에도 두 테이블을 생성하고 업데이트하는 sql문이 포함이 되어있습니다. member_seq 테이블은 왜 생성되는 것인가요 ??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티매니저의 대해 질문이 있습니다!
EntityManager는 빈 스코프가 프록시로 설정된다고 알고있습니다. 하지만 결국은 원본 엔티티매니저를 사용하는것이라고 이해했습니다. 그러면 요청이 들어오면 엔티티매니저를 사용하는데 엔티티매니저 내에 영속성 컨텍스트가 있고 싱글톤으로 유지된다면 영속성컨텍스트가 다른 요청이랑 공유되는게 아닌가요?싱글톤으로 등록되어 있는데 영속성컨텍스트가 공유되지 않는 이유가 궁금합니다. 엔티티매니저가 빈인데 어떻게 요청마다 생성되는것인지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 DB와 연동이 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MemberMemberRepositoryMemberRepositoryapplication.ymlbuild.gradleh2 창home에 있는 폴더와 같이 설정을 했는데요 JpaShopApplication을 동작시켜보면와같이 커리가 나오긴합니다. 하지만이렇게 멤버가 뜨지를 않는데 어디가 오류인걸까요?ㅜㅜ
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
강사님 프로젝트 진행중인데
혹시 EC2 관련해서 배포중인데 이거관련해서도 여쭤봐도될까요..? 배포까지 마무리하였는데, EC2의 퍼블릭IPv4:8080 으로 하면 연결거부가 떠서요.. 이거 관련해서도 메일로 여쭤봐도되나요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요! 생성자와 필드의 타입에 관련하여 질문있습니다
위의 코드에서 jpa 때문에 protected로 기본 생성자를 만들어주어야 한다고 하셨는데, 이게 무슨 의미인가요??왜 id는 Long 타입인데, userId는 long타입인가요?왜 id = null;로 해준건가요? sql ddl문은 작성해주지않고 자바 class만 작성해준 후 jpa 어노테이션을 붙여주면 db에 자동으로 테이블 생성이 안되나요? 입문자인데 눈높이에 맞춰 잘 설명해주시는 덕분에 재밌게 배우고 있습니다😄
-
미해결실전! 스프링 데이터 JPA
DTO 조회하기 n+1오류
강의 내용은 간단하게 설명해주셧는데1.OneToMany의 경우나 n+1문제가 발생할 경우는 어떻게 해결하나요?2.강의에서는 join만 썻는데 fetch join은 불가능한가요?