묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨
벌크연산시 타입이 맞지 않아 에러가 납니다(자바 ORM 표준 JPA 프로그래밍 - 기본편의 마지막 부분에 대한 질문입니다)
김영한님 "자바 ORM 표준 JPA 프로그래밍 - 기본편" 마지막 섹션 내용을 공부하다 에러를 못 고치고 질문 올립니다.하이버네이트 버전은 6.2.9.FInal이고 부트버전은 3.2.3입니다 @Entity @Setter @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Product { @Id @GeneratedValue private Long id; private String name; private int price; private int stockAmount; public Product(String name, int price, int stockAmount) { this.name = name; this.price = price; this.stockAmount = stockAmount; } }Product의 price가 double 타입이면 에러가 안 나는데 int면 아래 jpql실행시 에러가 납니다.@Test void 벌크연산106p(){ Product p1 = new Product("새우깡", 1000, 5); Product p2 = new Product("양파깡", 2000, 5); Product p3 = new Product("고래밥", 5000, 15); em.persist(p1); em.persist(p2); em.persist(p3); String jpql = "update Product p " + " set p.price = p.price*1.1 " + " where p.stockAmount<:stockAmount"; int resultCount = em.createQuery(jpql) .setParameter("stockAmount", 10) .executeUpdate(); System.out.println(resultCount + "개 상품 가격 수정"); }에러 메세지는 다음과 같습니다.java.lang.IllegalArgumentException: org.hibernate.query.SemanticException: The assignment expression type [java.lang.Float] did not match the assignment path type [java.lang.Integer] for the path [p.price] [update Product p set p.price = p.price*1.1 where p.stockAmount<:stockAmount] jpql내에 p.price*1.1을 정수로 형변환해서 할당하면 될 것같아, (int)(p.price*1.1)로 바꿔도 에러나네요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 질문합니다
마지막 부분에 vector로 새로 만들어서 넣지 않고 기존의 a배열을 미리 sort한 후 해당되지 않는 두 개의 인덱스 값만 빼서 출력했더니 틀렸다고 하네요. 차이가 무엇일까요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
세션은 Stateless 에 반하는 방법인데 어떻게 생각하시나요
HTTP 특성에 Stateless 에 의미를 살펴보면 세션은 적절하지 않은 방법이라고 생각이 들었는데 그러면 모든 인증 방법을 토큰기반인증방법으로 하는게 좋은 것 일까요?선생님의 의견이 궁금해서 질문해봅니다
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
업데이트는 그냥 dirty-checking을 이용하면 된다고 하셨는데..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에서 '"성능의 경우 조회에서 문제가 생기고, 생성이랑 수정은 성능 문제가 잘 발생하지 않는다"고 한 부분에서 궁금증이 생겼습니다! 업데이트의 경우 JPQL을 사용한 쿼리문을 통해 수정하는 방법이 있고, 엔티티를 싹 불러와서 dirty-cheking을 이용하는 방법이 있는걸로 알고 있습니다. 제 생각에는 뭔가 엔티티를 싹 불러오는 후자의 방법이 더 느릴거 같은데, 왜 후자를 그냥 쓰면 된다고 하신 이유가 궁금합니다!또 두 방식 중 어떤 상황에 무엇을 써야하는 지 기준이 있다면, 알려주시면 감사하겠습니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
양방향 연관관계시 연관관계 편의 메소드
1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.위 테이블을 보면 Order는 Member, Delivery, OrderItem과 양방향 연관관계이므로 Order 클래스에 연관관계 편의 메소드를 작성했으며, Categroy는 category_item과 양방향 연관관계이므로Category 클래스에 연관관계 편의 메소드를 작성한 것으로 이해했습니다. 그럼 만약ORDERS와 ORDER_ITEM , ITEM 모두가 양방향 연관관계즉, 모든 테이블이 양방향 연관관계라면,어느 클래스에서 연관관계를 작성하면 될까요? 비즈니스적으로 몰리는 엔티티에 작성하면 되는지,아님 애초에 이런 상황이 발생하지 않도록 ORDER_ITEM 과 같은 테이블을 추가해서 단방향 연관관계를 만드는 게 더 좋을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 강의 38:45초 질문드립니다.
Member member1 = new Member(); member1.setUsername("hello"); em.persist(member1); em.flush(); em.clear(); Member reference = em.getReference(Member.class, member1.getId()); // 영속성 컨텍스트에서 가져옴 System.out.println("reference.getClass() = " + reference.getClass()); // em.detach(reference); em.close(); System.out.println("reference.getUsername() = " + reference.getUsername());
-
미해결[2024 개정판] 코딩 입문자를 위한 파이썬 완벽가이드
궁금한게 있습니다.
강의를 보는데 강의에서 계속 print를 쓸 때마다 한칸씩 아래로 내린 후 작성하던데 꼭 그래야 하는 이유가 있는 건가요? 아니면 그냥 써도 별 문제 없지만 깔끔하게 보이기 위해서 그렇게 작성하는 건가요?
-
미해결누구나 할 수 있는 안드로이드 앱 개발 - 2 (Kotlin)
2-2 목표달성앱 Realm 설정 관련
설정 관련 잘 안되어서 메일 보냈습니다.asdsad8664@naver.com
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 객체와 영속성 컨텍스트
강의 내용과 PPT를 봤을 때는 프록시 객체가 영속성 컨텍스트에 저장되지 않는 것으로 느껴졌는데, 찾아보니 프록시 객체도 영속성 컨텍스트에 저장되더라고요. 만약, 같은 PK값을 가진 프록시 객체와 엔티티 객체가 모두 영속성 컨텍스트에 존재하는 상황이라면 어떤 모습으로 각각이 존재하게 될지 알 수 있을까요. PDF의 도식으로 개념을 구조화했는데 이 상황은 잘 그려지지 않아 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
AnnotationConfigApplicationContext 다형성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]강의 내용에서 MemberApp과 OrderApp에는 다음과 같이 // MemberApp.javapackage hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class MemberApp { public static void main(String[] args) { // AppConfig appConfig = new AppConfig(); // MemberService memberService = appConfig.memberService(); ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = applicationContext.getBean("memberService", MemberService.class); Member member = new Member(1L, "memberA", Grade.VIP); memberService.join(member); Member findMember = memberService.findMember(1L); System.out.println("new member = " + member.getName()); System.out.println("find Member = " + findMember.getName()); } } // OrderApp.javapackage hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.order.Order; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class OrderApp { public static void main(String[] args) { // AppConfig appConfig = new AppConfig(); // MemberService memberService = appConfig.memberService(); // OrderService orderService = appConfig.orderService(); ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = applicationContext.getBean("memberService", MemberService.class); OrderService orderService = applicationContext.getBean("orderService", OrderService.class); Long memberId = 1L; Member member = new Member(memberId, "memberA", Grade.VIP); memberService.join(member); Order order = orderService.createOrder(memberId, "itemA", 20000); System.out.println("order = " + order); System.out.println("order.calculatePrice() = " + order.calculatePrice()); } } applicationContext를 생성할 때 그 자료형을 ApplicationContext란 Interface로 선언했는데 왜 ApplicationContextInfoTest에서는 ac의 자료형을 AnnotationConfigApplicationContext으로 하신거죠? // ApplicationContextInfoTest.javapackage hello.core.beanfind; import hello.core.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + beanDefinitionName + " object = " + bean); } } @Test @DisplayName("애플리케이션 빈 출력하기") void findApplicationBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); } } } 그리고 ac의 자료형을 ApplicationContext 로 했을 때는 findApplicationBean 메서드의 ac.getBeanDefinition이 사용할 수 없다고 나오는데 AnnotationConfigApplicationContext으로 선언했을 때는 사용할 수 있는데 그 이유가 뭔지 궁금합니다.
-
미해결실리콘밸리 엔지니어와 함께하는 테라폼(Terraform)
tfstate 관리 시 dynamodb 사용 관련 질문
tfstate 관리 시 S3 버저닝을 했을 때, dynamo db를 사용하지 않아도 버지닝이 되니 굳이 사용하지 않아도 되지 않을까요 ?
-
미해결확률과 통계 기초
6.1 두 독립인 정규분포의합
독립인 정규분포의 합이 평균 분산 모두 두개의 합인 새로운정규분포가 된다는걸 MGF로 증명해주셨는데그것말고 평균은 선형성으로 더할수있고 분산도 독립이라면 V(X1+X2) = V(X1)+V(X2)이렇게 증명하는건 틀린건가요?
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"
watch 함수 실습
해당 강의의 App_multiple_source_type.vue 소스에서 다양한 watch 함수들 주석을 풀어가며 실습 중인데, 강사님은 소스 입력 후 저장하면 바로 웹에 적용되어 vue 개발자도구에서 데이터 변경을 하시는데 저는 watch 함수 하나 실습 후 다른 watch 함수 주석 풀어서 테스트하면 웹에서 새로 고침을 했는데도 불구하고 데이터 변경이 안되요ㅠ... 따로 이유가 있을까요?? vite.config.js 에 server: watch: usePolling 도 설정해둔 상태입니다.
-
미해결PWA 시작하기 - 웹 기술로 앱을 만들자
권한 부탁드립니다.
인프런 아이디 : kj94gakt@naver.com인프런 이메일 : kj94gakt@naver.com깃헙 아이디 : shdong@tanso.life깃헙 Username : seunghyeonD
-
미해결모바일 웹 퍼블리싱 포트폴리오 with Figma
display flex 질문,,
안녕하세요 ! gnb부분 하다가 헷갈리는게 있어서요 ..gnb 부분엔 flex를 줘서 가로배치 1/5한 건 이해했는데,.gnb a 위아래 여백이 남았어서 그 여백을 없애려면.gnb a에 display : flex를 주어야한다고 하셨는데왜 flex를 주면 위아래 여백이 사라지고 딱 맞게 배치가 되는건지 이해가 잘 안가서요 ㅠ..!말로 설명이 가능하실까 모르겠지만 일단 남겨봅니다!
-
미해결실리콘밸리 엔지니어와 함께하는 테라폼(Terraform)
subnet 생성을 terraform으로 하는게 괜찮을지 고민입니다.
resource "aws_instance" "web" { ami = data.aws_ami.ubuntu.id instance_type = "t2.micro" tags = { name = "MyEc2" } depends_on = [aws_default_subnet.default_az1] } resource "aws_default_subnet" "default_az1" { availability_zone = "us-west-2a" tags = { Name = "Default subnet for us-west-2a" } }aws default subnet을 지정해주는 terraform resource가 있는 것 같은데 정상동작했어요 ! 이런 방법은 어떤가요 ? aws cli를 따로 사용해야하니 왠지 terraform에 종속성이 생긴 느낌이들어서요
-
해결됨홍정모의 따라하며 배우는 C++
(과제스포)제가 과제를 똑바로 이해했는지 궁금합니다.
#include<chrono> #include<iostream> #include<mutex> #include<random> #include<thread> #include<utility> #include<vector> #include<atomic> #include<future> #include<numeric> #include<execution> using namespace std; mutex mtx; void dotProductDQThread(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, unsigned long long& sum) { int sum_tmp = 0; //local sum for (unsigned i = i_start; i < i_end; ++i) { sum_tmp += v0[i] * v1[i]; } sum += sum_tmp; } void dotProductProm(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, promise<unsigned long long>&& sum) { int sum_tmp = 0; //local sum for (unsigned i = i_start; i < i_end; ++i) { sum_tmp += v0[i] * v1[i]; } sum.set_value(sum_tmp); } int main() { /*v0 = { 1,2,3 }; v1 = { 4,5,6 }; v0_dot = 1 * 4 + 2 * 5 + 3 * 6;*/ const long long n_data = 100'000'000; const unsigned n_threads = 4; //initialize vectors std::vector<int> v0, v1; v0.reserve(n_data); v1.reserve(n_data); random_device seed; mt19937 engine(seed()); uniform_int_distribution<> uniformDist(1, 10); //v0와 v1에 값 무작위로 넣어줌 for (long long i = 0; i < n_data; ++i) { v0.push_back(uniformDist(engine)); v1.push_back(uniformDist(engine)); //cout << v0[i] << "\t" << v1[i] << endl; } cout << "std::inner_product" << endl; { const auto sta = chrono::steady_clock::now(); const auto sum = std::inner_product(v0.begin(), v0.end(), v1.begin(), 0ull);//0ull = unsigned longlong 0 const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } //TODO: use divde and conquer strategy for std::thread cout << "TODO: use divde and conquer strategy for std::thread" << endl; { const auto sta = chrono::steady_clock::now(); unsigned long long sum = 0; vector<thread> threads; threads.resize(n_threads); const unsigned n_per_thread = n_data / n_threads; for (unsigned t = 0; t < n_threads; ++t) threads[t] = std::thread(dotProductDQThread, std::ref(v0), std::ref(v1), t * n_per_thread, (t + 1) * n_per_thread, std::ref(sum)); for (unsigned t = 0; t < n_threads; ++t) threads[t].join(); const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } //TODO: use promise cout << "TODO: use promise" << endl; { const auto sta = chrono::steady_clock::now(); //std::promise<unsigned long long> sum; auto sum = 0ull; vector<thread> threads; vector<future<unsigned long long>> futures; vector<promise<unsigned long long>> proms; threads.resize(n_threads); futures.resize(n_threads); proms.resize(n_threads); const unsigned n_per_thread = n_data / n_threads; for (unsigned t = 0; t < n_threads; ++t) { futures[t] = proms[t].get_future(); threads[t] = std::thread(dotProductProm, std::ref(v0), std::ref(v1), t * n_per_thread, (t + 1) * n_per_thread, std::move(proms[t])); } for (unsigned t = 0; t < n_threads; ++t) { threads[t].join(); sum += futures[t].get(); } const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } }결과는 제대로 나오지만, 제가 과제를 똑바로 이해했는지 궁금해서 여쭤봅니다.과제1: use divde and conquer strategy for std::thread쓰레드에 sum에 local sum값을 넣어 race condition 해결과제2: prom 사용해보기sum 변수 선언 및 thread, promise, future 모두 쓰레드 크기 만큼의 vector로 만들어줬습니다. 병렬 처리 후 future값을 sum에 더해줬습니다.※추가 궁금증promise 과제 중, std::ref와 std::move 둘 다 해보았습니다. 두 경우 모두 정상 작동하였는데, 어떤 방법을 가장 추천하시나요?
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
다시 질문 드립니다 ㅠㅠ CSS 키프레임 애니메이션 활용한 실전 예제 제작 01(원형 크기 변경 로딩 애니메이션)
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>도형 로딩 애니메이션</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="loading"> <span></span> <span></span> <span></span> </div> </body> </html> /* Google Web Font */ @import url('http://fonts.googleapis.com/css?family=Raleway&display=swap'); body { font-family: 'Raleway', sans-serif; line-height: 1.5em; margin: 0; font-weight: 300; display: inline; justify-content: center; align-items: center; height: 100vh; } a { text-decoration: none; } .loading {} .loading span { display: inline-block; width: 20px; height: 20px; background-color: gray; border-radius: 50%; animation: loading 1s linear infinite; } .loading span:nth-child(1) { animation-duration: 0s; background-color:crimson; } .loading span:nth-child(2) { animation-duration: 0.2s; background-color:dodgerblue; } .loading span:nth-child(3) { animation-duration: 0.4s; background-color:royalblue; } @keyframes loading { 0% { opacity: 0; transform: scale(0.5); } 50% { opacity: 1; transform: scale(0.5); } 100% { opacity: 0; transform: scale(0.5); } }이렇게 작성했는데 go live 화면에선 이렇게 뜨고 애니메이션이 안나와요.. ㅠㅠ 뭐가 문제일까요??? 몇주동안 안되요..
-
미해결처음 만난 리덕스(Redux)
강의자료문의
ppt 강의 자료는 어디서 받을 수 있나요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터의 afterCompletion에서는 예외를 처리해주진 못하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]afterCompletion 구현 코드 결과 화면사진과 같이 afterCompletion()에서 예외 처리 부분에 response.sendError(200)을 해도 예외가 500으로 나가는 걸 확인할 수 있었습니다.@ControllerAdvice 어노테이션을 지정한 클래스 및 제가 구현한 ExceptionResolver들은 전부 주석처리 하여서 HandlerExceptionResolver 단계에서 예외 처리 실패했으니 500 Internal Error이 나가는 것은 맞지만,최종적인 단계에서 필터링 해주는 인터셉터인 afterCompletion()에서 sendError()을 지정하면 WAS는 지정된 상태 코드의 예외 처리를 해줘야하지 않나요?