묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Category에서 부모와 자식에 대해 모르겠습니다.
지금 카테고리에서 왜parent, children을 사용하는지 모르겠습니다.그냥 이게 왜 있고 뭐에 쓰는 건지를 모르겠어요어디서 학습할 수 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA 강의를 듣고 프로젝트를 만들 수 있나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니요2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. 이번에 백엔드 단기간 취업 목적으로 JPA 활용 1, 2 를 들어서 포트폴리오에 첨가할 프로젝트를만들 계획이 있습니다.부수적인 CS, 언어, 데이터베이스 등등의 지식이뒷받침된다는 전제하에 만들 수 있나요?MVC 강의가 있던데 이것을 듣지 않는다면 불가능하거나 혹은 지장이 많나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
crud질문
쓰기 지연 sql저장소에서 commit을 한번에 하는 데 select는 1차캐시에서 가지고 오는 건가요?한 트랜잭션 안에 insert 와 select를 동시에 할 경우, Team team = new Team(); team.setName("TeamA"); em.persist(team); // System.out.println("team.getId() = " + team.getId()); // System.out.println("team.getName() = " + team.getName()); // // Member member = new Member(); member.setUsername("member1"); member.setTeam(team); System.out.println("==Before--"); em.persist(member); System.out.println("==after--"); // em.flush(); //현재 영속성 컨테스트에 있는것을 다 날려 // em.clear();//영속성 컨테스트 초기화 // //객체지향적이지 않은 방법 // Member findMemner = em.find(Member.class, member.getId()); // Long findteamId = findMemner.getTeamId(); // Team findTeam = em.find(Team.class, findteamId); // Member findMemner = em.find(Member.class, member.getId()); Team findteam = findMemner.getTeam(); System.out.println("findteam.getName() = " + findteam.getName());findteam.getName()의 값이 나오는 이유가 1차 캐시에 저장된 @id에서 id값을 가지고 오기 때문에 commit되기 전(insert) 되기 전에조회(select)문이 실행가능해지는 건가요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
스프링 컨테이너 한 클래스 내에서 두개의 @Repository 사용하기
BookController 내에서 서로 다른 Repository를 사용하려고 한다면 어떻게 사용해야 하나요?1번인 saveBook에서는 BookMemoryRepository의 saveBook()을 사용하고 2번인 saveBook1 에서는 BookMySqlRepository의 saveBook()을 사용하고 싶다고 하면 사용할 수 있는지? 사용할 수 있다면 어떻게 사용해야 하나요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
한글깨짐
project 만들때마다 계속 한글깨지는데 project만들떄마다 계속 setting 해주어야하나요? <!-- ?? --> <!-- ????? ? ?? ??-->
-
미해결실전! Querydsl
쿼리문 질문입니다.
4:58강의 쿼리문저의 쿼리문영한님은 왜 쿼리문이 2개가 나오나요?/*쿼리문*/쿼리문 총 2번이 찍히는데 환경이 다른 것 일까요,.,.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
api/v1/simple-orders로 api호출을 하면 자꾸 InvalidDefinitionException이 발생합니다.
안녕하세요 강의 잘 보고 있습니다.다름이 아니라 강의를 보면서 따라서 하고 있는 도중에 api/v1/simple-orders로 접근을 하면 invalidDefinitionException이 발생합니다.혹시 오타가 있나해서 몇번이고 다시 확인하고 orderRepository클래스도 붙여넣고 initDB클래스도 붙여넣었는데도 안되네요...찾아보니까 jackson 라이브러리가 객체를 JSON타입으로 바꾸면서 생기는 오류라고 하는데 도움을 받을 수 있을까요?아래는 압축한 파일일 있는 링크입니다.https://drive.google.com/file/d/1FGTNqcXxTkw2l-UeVN50kW6v12b4oGQj/view?usp=sharing
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
h2 data insert 문제
h2 data에 upload 되지 않아 문의 드립니다.em.find에서 객체가 key값이 나오는것이 아닌 object로 나와 문의 드립니다. persistentUsername은 강의에서 userName으로 변경할때 저는그냥 변경하지는 않았습니다만, Object로 나와 다른 문제가 있는지 해서 여쭈어 보게 되었습니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
준영속 상태 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 준영속 상태 강의를 듣던중 잘 이해가 안가서 질문올립니다 ㅠㅠ강의 6분경에try문안에서 em.clear()를 함으로서영속성 컨텍스트를 완전히 초기화 했는데커밋되기 전이므로 db에 아무런 값이 없을텐데Member member2를 선언했을때 왜 1차 캐시에서 값을 가져올수 있는건지 궁금합니다..제가 뭔갈 잘못이해하고 있는거 같은데도와주시면 감사하겠습니다!!!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
insert 출력이 안돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 Hello JPA개발 강의를 듣던중insert를 날려도 출력이 안되고그냥 콘솔에 출력해도 출력이 안돼서 도저히 뭐가 문제인지 모르겠어서 질문남깁니다.. 패키지 구조입니다persistence입니다 pom.xml입니다 member클래스입니다h2는 1.4.200버전으로 받은거같아요
-
해결됨실전! Querydsl
querydsl 의존성문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. @queryprojection 어노테이션이 쿼리 디에스엘에 의존성에 대한 얘기를 해주셨는데요. 레포지토리에서 쓰는 쿼리디에스엘도 같은 의존성 문제가 있는거 아닌가요 ? 극단적인 예로 치명적인 버그로 쿼리디에스엘을 급히 밀어야 되는 문제라던가 다른걸로 대체를 해야 할때레포지토리에서 사용했던 쿼리펙토리도 모두 바꿔줘야 하는 부분이 아닌가 해서요.
-
해결됨실전! Querydsl
dto로 만들어 바로 조회
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 프로젝션을 보고 있던와중에 궁금증이 생겨서 질문남깁니다. dto로 반환해주고 싶은데 dto가 private final 일 경우 기본 생성자를 만들지 못하는데 이럴땐 final을 풀고 기본생성자를 사용해주는 방법으로 가는게 맞을까요 ? 다른방법이 있으면 추천 부탁드립니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
JdbcTemplate 생성자 만드는데 에러나요. JdbcTemplate 타입의 bean을 찾을 수 없다고 하는데 어떻게 해결해야 하나요?
JdbcTemplate 생성자 만드는데 에러나요. JdbcTemplate 타입의 bean을 찾을 수 없다고 하는데 어떻게 해결해야 하나요?강의를 더 보니까 19강에서 설명해주고 계신 build.gradle 때문인거 같은데요.저는 해당 파일이 비활성화 되어 있는 것 같아요.위 캡쳐처럼 코드가 알록달록(주황, 보라, 노랑..) 하지 않고, 모두 회색으로 보이는데 그래서 일까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
one to many 지연로딩
@Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>();일대다 관계에서는 기본 설정이 지연 로딩이 맞나요 ??orderItems.stream().forEach(o -> o.getItem().getName()); //Lazy 강제초기화@OneToMany 어노테이션에서 fetch = Fetch.Lazy가 없어서 기본설정으로 들어가는지 궁금합니다 !
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
order저장 시 OrderStatus.ERROR일 때 Item의 stockQuantity를 감소시키지 않게 하기 질문이요
Order가 저장할 때 OrderStatus.ERROR 일 때는 Order만 db에 저장되고Item의 재고(stockQuantity)는 감소가 안되게 하고 싶습니다.즉, Order는 OrderStatus.ERROR 여부와 상관없이 저장이 되고OrderStatus.ERROR일때만 Item의 재고(stockQuantity)는 감소가 안되게 하고 싶습니다.(ERROR니까 재고가 감소안되게 하려고합니다) 저는 주문(order)하다가 에러가 발생하면 throw로 Exception을 던지지 않고OrderStatus만 ERROR로 변경해 주려고 합니다.즉 ERROR 발생했을때 OrderStatus의 값을 order.setStatus(OrderStatus.ERROR)를 통해 에러를 발생시키지만 주문자체는 db에 저장되고Item의 재고(stockQuantity)를 줄여주지 않으려고합니다.물론 ERROR가 발생하지 않고 정상적으로 실행이 되면 Item의 재고도 정삭적으로 줄어 들겠죠 다음은 Order 엔터티입니다. 강의와 조금 다르게 TimeStapmed를 상속받았는데 질문과는 상관없습니다.@Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor public class Order extends TimeStamped{ @Id @GeneratedValue private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) private Delivery delivery; @Enumerated(EnumType.STRING) private OrderStatus status; private long orderTotalPrice; public void addOrderItem(OrderItem orderItem){ orderItems.add(orderItem); orderItem.setOrder(this); } public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems){ Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for (OrderItem orderItem : orderItems){ order.orderTotalPrice += orderItem.getTotalPrice(); order.addOrderItem(orderItem); } order.setStatus(OrderStatus.CREATED); return order; } } 그래서 제가 해준 방법은 우선 특정 조건일 때 setStatus(OrderStatus.ERROR) 으로 에러를 발생시킵니다. (길어져서 코드에는 안적었는데 디버깅상 전혀 문제가 없습니다. 그냥 특정조건일 때 에러 발생시키는 겁니다.)그리고 Order 엔터티에 있는@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 을@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH) 로 수정한다음에OrderService에서 order를 save한 후 OrderStatus.ERROR 일때만 flush를 발동 시켰는데orderRepository.save(order); if (order.getStatus() == OrderStatus.ERROR){ orderRepository.flush(); } orderItem만 저장이 안되고 Item의 stockQuantity는 줄어드는군요그래서 OrderItem에 있는@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "item_id") private Item item; 위 코드에 cascade = CascadeType.DETACH 를 추가해도 소용이 없더군요 어떻게하면order는 OrderStatus의 ERROR 여부와 상관없이 order는 저장이 되고OrderStatus.ERROR 일때만 Item의 stockQuantity가 저장이 안되게 할 수 있을까요? 혹시몰라서 OrderItem과 Item의 코드도 올립니다.OrderItem엔터티의 코드@Entity @Getter @Setter @NoArgsConstructor public class OrderItem { @Id @GeneratedValue @Column(name = "order_item_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "item_id") private Item item; @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "order_id") private Order order; private Integer orderPrice; private Integer quantity; // ... createOrderItem ... // ... getTotalPrice ... } Item엔터티의 코드입니다.@Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "dtype") @Getter @NoArgsConstructor @AllArgsConstructor public abstract class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; private String name; private Integer price; private Integer stockQuantity; public Item(String name, Integer price,Integer stockQuantity){ this.name = name; this.price = price; this.stockQuantity = stockQuantity; } public void removeStock(Integer quantity) { Integer restStock = this.stockQuantity - quantity; if(restStock < 0) { throw new EApplicationException(ErrorCode.NOT_ENOUGH_STOCK, String.format("Out of Stock")); } this.stockQuantity = restStock; } } 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
선생님들 도와주세요~
package com.example.demo; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import javax.transaction.Transactional; @SpringBootTest @Transactional(rollbackOn = {Exception.class}) class Repository_CookerTest { @Autowired Service_Cooker Service_Cooker; @Autowired Repository_Cooker repositoryCooker; @Test @Rollback(value = false) void 테스트(){ Cooker cooker=new Cooker(); cooker.setId(123L); cooker.setExp(1); cooker.setName("123"); cooker.setAge(23); Long id=Service_Cooker.save(cooker); Assertions.assertEquals(cooker,repositoryCooker.find_one(id)); } } package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; @Repository public class Repository_Cooker { @Autowired private EntityManager entityManager; public void save(Cooker cooker){ entityManager.persist(cooker); } public Cooker find_one(Long id){ return entityManager.find(Cooker.class,id); } }package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class Service_Cooker { @Autowired Repository_Cooker repository_Cooker; public Long save(Cooker cooker){ repository_Cooker.save(cooker); return cooker.getId(); } } org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: com.example.demo.Cooker; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: com.example.demo.Cooker insert into cooker (cooker_id, age, exp, name) values (null, 23, 1, '123');안녕하세요 영한 선생님덕분에 쑥쑥 자라나고 있는 코린이입니다.질문은 아이디 없이테스트를 돌리면 통과가 되는데요아이디를 설정하고 돌리면 에러가 납니다.왜 그런건지 어디가 잘못된 건지 알고싶어요 ~도와주세요~
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
14:06초 질문있어요
14:06초에 왜 delivery만 select하는 쿼리가 나갔는지 모르겠어요@GetMapping("/api/v2/simple-orders") public List<SimpleOrderDto> ordersV2() { List<Order> orders = orderRepository.findAllByString(new OrderSearch()); List<SimpleOrderDto> result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(Collectors.toList()); return result; } @Data static class SimpleOrderDto{ private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; public SimpleOrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); //Lazy 강제 초기화 orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getDelivery().getAddress(); //Lazy 강제 초기화 } }에서 List<Order> orders = orderRepository.findAllByString(new OrderSearch());여기서 order 테이블 select 하는 쿼리 1번List<SimpleOrderDto> result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(Collectors.toList()); public SimpleOrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); //Lazy 강제 초기화 orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getDelivery().getAddress(); //Lazy 강제 초기화 }여기서 member랑 address 함께 join하는 쿼리 2번 (order이 2개이며 fk가 다 달라서 영속성 컨텍스트에 있지 않음) 총 3번으로 n+1문제가 발생하여야 된다고 생각했는데 어디가 틀렸는지 모르겠어요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jpa 테스트 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]============================CONDITIONS EVALUATION REPORT============================Positive matches:----------------- NoneNegative matches:----------------- NoneExclusions:----------- NoneUnconditional classes:---------------------- None MemberServiceIntegrationTest에서 실행하면 위에 오류가 뜹니다. 코드 빠뜨린건 없는데, 이유를 몰라 질문해 봅니다.스프링 3.0 이상 버전이며 h2는 2.1.214 버전입니다
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
첫강의 후 콘솔시 에러와 함께 진행이되지 않습니다.
https://www.inflearn.com/questions/755819/%EC%B2%AB%EA%B0%95%EC%9D%98-%EB%93%A3%EA%B3%A0-%EB%9F%B0%EC%8B%9C-%EC%BD%98%EC%86%94%EC%B0%BD%EC%97%90-%EC%97%90%EB%9F%AC%EB%B0%9C%EC%83%9D%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4 위의 답변을 보고 h2 콘솔창을 켰지만 앱이 구동되지 않으니 , 인터넷이 연결되지 않음으로 뜹니다. 앱이 구동되지 않는데 h2 콘솔창 켜는 것이 가능하나요???
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
윈도우 rabbitMQ 설치했는데 15672 접속이 안됩니다..
rabbitmq 정상적으로 실행은 되었는데localhost:15672 접속하면 페이지가 안뜹니다..운영체제 window이고..도와주세요....!