묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
19:04 초 where in 쿼리 대신 where array_conatins 쿼리가 나왔습니다. (스프링 부트 3.1)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]현재 스프링 부트 3.1 로 강의를 따라가고 있습니다.default_batch_fetch_size:10 을 설정해서 나가는 쿼리가 줄어드는 것을 확인했습니다만, 쿼리가 두 개가 아니고 총 세 개가 나왔습니다.023-06-13T23:24:02.666+09:00 DEBUG 68750 --- [nio-8080-exec-5] org.hibernate.SQL : select o1_0.order_id, d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status, m1_0.memeber_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name, o1_0.order_date, o1_0.status from orders o1_0 join member m1_0 on m1_0.memeber_id=o1_0.member_id join delivery d1_0 on d1_0.delivery_id=o1_0.delivery_id offset ? rows fetch first ? rows only 2023-06-13T23:24:02.676+09:00 INFO 68750 --- [nio-8080-exec-5] p6spy : #1686666242676 | took 2ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/springbootjpa select o1_0.order_id,d1_0.delivery_id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status,m1_0.memeber_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name,o1_0.order_date,o1_0.status from orders o1_0 join member m1_0 on m1_0.memeber_id=o1_0.member_id join delivery d1_0 on d1_0.delivery_id=o1_0.delivery_id offset ? rows fetch first ? rows only select o1_0.order_id,d1_0.delivery_id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status,m1_0.memeber_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name,o1_0.order_date,o1_0.status from orders o1_0 join member m1_0 on m1_0.memeber_id=o1_0.member_id join delivery d1_0 on d1_0.delivery_id=o1_0.delivery_id offset 0 rows fetch first 100 rows only; 2023-06-13T23:24:02.681+09:00 DEBUG 68750 --- [nio-8080-exec-5] org.hibernate.SQL : select o1_0.order_id, o1_0.order_item_id, o1_0.count, o1_0.item_id, o1_0.order_price from order_item o1_0 where array_contains(?,o1_0.order_id) 2023-06-13T23:24:02.689+09:00 INFO 68750 --- [nio-8080-exec-5] p6spy : #1686666242689 | took 0ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/springbootjpa select o1_0.order_id,o1_0.order_item_id,o1_0.count,o1_0.item_id,o1_0.order_price from order_item o1_0 where array_contains(?,o1_0.order_id) select o1_0.order_id,o1_0.order_item_id,o1_0.count,o1_0.item_id,o1_0.order_price from order_item o1_0 where array_contains('ar2: ARRAY [CAST(1 AS BIGINT), CAST(2 AS BIGINT), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL]',o1_0.order_id); 2023-06-13T23:24:02.690+09:00 DEBUG 68750 --- [nio-8080-exec-5] org.hibernate.SQL : select i1_0.item_id, i1_0.dtype, i1_0.category_item_id, i1_0.name, i1_0.price, i1_0.stock_quantity, i1_0.author, i1_0.isbn, i1_0.artist, i1_0.etc from item i1_0 where array_contains(?,i1_0.item_id) 2023-06-13T23:24:02.691+09:00 INFO 68750 --- [nio-8080-exec-5] p6spy : #1686666242691 | took 0ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/springbootjpa select i1_0.item_id,i1_0.dtype,i1_0.category_item_id,i1_0.name,i1_0.price,i1_0.stock_quantity,i1_0.author,i1_0.isbn,i1_0.artist,i1_0.etc from item i1_0 where array_contains(?,i1_0.item_id) select i1_0.item_id,i1_0.dtype,i1_0.category_item_id,i1_0.name,i1_0.price,i1_0.stock_quantity,i1_0.author,i1_0.isbn,i1_0.artist,i1_0.etc from item i1_0 where array_contains('ar3: ARRAY [CAST(1 AS BIGINT), CAST(2 AS BIGINT), CAST(3 AS BIGINT), CAST(4 AS BIGINT), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL]',i1_0.item_id); 수강 중에 제가 따라 작성한 코드를 스프링부트 2.4.1에 그대로 옮겨보니 강의 내용대로 where in 쿼리가 나오는 것을 확인했습니다.스프링부트 버전 차이에서 나오는 쿼리가 달라진 것 같은데, 제 생각이 맞을까요? 답변 확인 : 빠르게 답변해주셔서 감사합니다!!덕분에 array_contains 로 최적화된 이유를 쉽게 이해할 수 있었습니다. (Hibernate에서 최적화를 했었었군요!)아 그리고 강의 내용에서 쿼리 세 개 나온다는 것을 확인했습니다(잘못 본 것에 대해 질문글에서 수정을 해놨어야 했는데 빼놓지 않았었네요 ㅠㅠ)다시 한번 상세한 답변 정말 감사드립니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
radio 버튼 css 로 색상 변경하는 방법
라디오버튼 기본값은파란 테두리, 흰 배경, 파란 점 인데빨간 테두리, 검은 배경, 노란 점이런식으로 3가지를 다 바꿀수는 없나요?과제중에 궁금해서 여쭤봅니다테두리와 점 색을 바꾸면배경은 흰색이 되어버리거나점이 사라져버리고 배경색으로만 가득 찬다거나해서3개를 함께 적용할 방법을 찾지 못하겠는데원래 안되는건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링부트 버전에 따른 SQL 문이 다른 점 (Alias 유무)
안녕하세요, 스프링부트 3.1로 강의를 듣고 있는 학생입니다.3.1.0 버전에서는 Select 쿼리를 생성할 때 별칭(alias) 없이 생성되었는데JPA hibernate 버전 차이가 원인인 것인가요?문서를 찾아보려고 해도 어떻게 찾아야 할지 감이 오지 않아서 질문드립니다.아래는 MemberServiceTest 회원가입 test 의 로그입니다.3.1.02023-06-13T22:26:00.567+09:00 DEBUG 64058 --- [ Test worker] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.name=? 2023-06-13T22:26:00.571+09:00 DEBUG 64058 --- [ Test worker] org.hibernate.SQL : select next value for member_seq2.4.12023-06-13 22:23:43.684 DEBUG 63945 --- [ Test worker] org.hibernate.SQL : select member0_.member_id as member_i1_0_, member0_.city as city2_0_, member0_.street as street3_0_, member0_.zipcode as zipcode4_0_, member0_.name as name5_0_ from member member0_ where member0_.name=? 2023-06-13 22:23:43.691 DEBUG 63945 --- [ Test worker] org.hibernate.SQL : call next value for hibernate_sequence아래는 각 로그가 출력할 때 사용한 파일입니다.2.4 버전https://drive.google.com/file/d/1BhS1ZjixkOKzQxrEaSLGu0o6tWGhRLr_/view?usp=sharing3.1 버전https://drive.google.com/file/d/1SN6W0iq6X2ALHPNJDUgXuG-ep3-D4UyU/view?usp=sharing
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
dir(), help(), __all__
기존 강의에서 dir(), help(), all 사용법을 알려주셨는데요작업형2에서는 유용히 사용할 수 있을것 같은데작업형1에서는 어떻게 사용 가능할까요? 제가 1-3문제를 푸는도중 to_datetime 함수가 생각나지않아 dir(), help(), all 방식을 사용하여 찾아보려했는데 계속 오류가 떠서요. 혹시 작업형1에서 위와 같은 함수가 생각이 안날때 dir(), help(), all를 쓰는 방법을 알 수 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Class to import 창을 어떻게 띄우나요?
안녕하세요, 강의를 듣다가 타 패키지의 클래스를 import시킬 때 단축키를 이용하셔서 저렇게 창을 띄워 바로 import시키시는 걸 보았는데요! 윈도우라 해당 단축키가 어떤 단축키인지 나름대로 찾아봐서 따라해도 나오지 않아 질문드립니다 ㅠㅠ컨트롤 알트 O / 알트 엔터 등등 따라해보았는데 윈도우 단축키는 어떻게 되나요...? 알트 + 엔터를 누르면 이렇게 나옵니다!Auto Import 설정도 검색해서 나온대로 따라해보았는데 Class to Import 창은 여전히 나오지 않네요ㅠ-ㅠ패키지와 클래스는 이렇게 들어가 있습니다
-
해결됨독하게 되새기는 C 프로그래밍
overrun 예시 문제에 대한 질문있습니다.
강사님 강의 OVERRUN 예제를 보며 똑같이 해보려고 하는데 overrun 경고를 잡고 실행을 중단한것으로 판단됩니다.무시하고 실행하는 방법이 있을까요?
-
미해결배민도 사용한다고? 환경설정 없는 백엔드 노코드 개발!
인티저 인식 오류
왜 인티저로 안되는거죠?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
super.service(req,resp)는 무엇인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. control O 를 통해서 생성한 protected void service ... 에서마지막 super.service(req,resp) 을 설명없이 없애셨는데, 이 부분이 무슨 역할을 하는 친구인지 궁금합니다. 소리없이 없애셔서 전 있는 상태로 실행했더니, 계속 whitelabel 창이 떴었습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
피처엔지니어링 질문드립니다
아직 모든 강의를 다 들은 것은 아니여서, 혹시 뒤에 있는 강의 내용 중에 제 질문에 대한 답이 있을 지는 모르겠지만 우선 질문 드립니다.피처엔지니어링 방법을 바꿔가면서 모델링 평가지표가 좋게 나오는 방향으로 선택해야한다는 것은 이해하였습니다.제가 아직 공부를 많이하지는 않았지만 categorical 에는 (1) 적용안함 (2) 전부drop (3) 라벨인코딩, (4) 원핫인코딩 , numerical 에는 (1) 적용안함 (2) 민맥스 (3) 스탠다드 (4) 로버스트 스케일러가 있는 것으로 알고 있는데요.[질문 1][질문 1-1] 데이터 타입 별로 그냥 한가지 피쳐엔지니어링 방법을 적용한다고 해도, 4 x 4 = 16 가지 조합이 나오는 것 같은데요, 시험 중에 16가지 조합을 전부 시도해보시는지 궁금합니다. 적용안하는 선택지를 제외하면 9가지 인데, 9가지 조합을 다 해봐야할까요? [질문 1-2 ] 아니면 그냥 스케일러 같은 경우는 무조건 로버스트를 쓴다고 생각해버려도 될런지도 궁금합니다. [질문 2]필드 별 다르게 적용해야하는 문제도 나온적이 있나요? 예를 들어 A 컬럼도 numerical 이고 B 컬럼도 numerical 일 때, A 컬럼엔 민맥스 적용 B 컬럼엔 로버스트 적용 하는게 정답인 케이스 같은게 있나 해서요. 잘 몰라서 드리는 질문일수도 있습니다 ㅠ 이렇게까지 해야하는 문제는 안나온다고 생각해도 될까요? [질문 3]describe() 결과를 보고 어느 피쳐엔지니어링을 사용하면 좋겠다는 판단이 올수있을까요? 혹시 몇가지 판단요소나 꿀팁같은게 있는지 궁금합니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
3개의 서비스 실행 시 데이터베이스 에러 발생
영상에서 실제 실행할 떄 3개의 서비스인 User, Catalog, Order 서비스를 정상적으로 실행하는 것을 보았습니다.그런데 저는 하나의 서비스를 실행한 후 다른 서비스를 실행하면Unable to open JDBC Connection for DDL execution [Database may be already in use: "C:/경로/ecommerce.mv.db". Possible solutions: close all other connection(s); use the server mode [90020-214]] [n/a]이미 데이터베이스가 연결 중이니 다른 커넥션을 닫거나 서버모드를 사용하라는 에러가 발생합니다.서버모드로 해결했는데 혹시 다음 강의에서 충돌이 발생할 가능성이 있을까요??필자의 정보h2 버전 : 2.1.214h2 데이터베이스 엔진을 다운받아 임베디드 모드로 데이터베이스 생성했습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]bin도 없애보고 환경변수 설정도 다시 해보고 했는데도 안되네요.. 어떻게 해야되나요..??
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
애너테이션 대신 AOP로 트랜잭션 설정하면 어떤가요?
@Transactional 애너테이션을 사용하는 대신 예를 들어 비즈니스 로직이 담겨있는 service 계층의 모든 메서드에 AOP를 통해 일괄적으로 트랜잭션을 적용한다면 어떤 문제가 있을까요?생각으로는 성능 상 부하가 생길 것 같지만 그 영향이 어느 정도인지는 또는 다른 어떤 단점들이 있을지 가늠이 잘 되지 않습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 시험장에서 제출할떄
안녕하세요실제 시험장에서 작업형2를 풀때 관련 질문인데요pd.DataFrame({'index': test.index, 'target': pred}).to_csv('003000000.csv', index=False)이와 같이 to_csv 이후에 read_csv도 포함한 코드를 제출해야하나요? 아님 read_csv는 눈으로만 확인해보고 실제 제출할때는 지워서 제출하면될까요? 작업형 2를 풀때 문제에 써져있는 평가지표있잖아요이런거---->> (제출한 모델의 성능은 F1평가지표에 따라 채점)이런식으로 나와있으면 ## 평가from sklearn.metrics import f1_scoref1_score(y_val, pred) 이렇게 꼭 포함시켜야 하나요? 그리고 포함시켜야한다면 이를print(f1_score(y_val, pred))로 출력도 해야하나요? 코랩에서 연습할때는 전부 성능평가까지 코드짜면서 연습해봤는데 실제 시험장에서는 어디까지 코드를 짜야할지가 헷갈려서요!좋은 강의 감사드립니다!
-
미해결웹 서비스 해킹을 위한 버프스위트 완벽 활용 가이드
이거 해결 어떻게 하죠?
윈도우 11사용하는 데 크롬에서 설정들어가서 컴퓨터에서 프록시 설정 켜기로 설정하래서 해보니까 거기서 8080pt 무ㅓ127.0.01 그런거 입력하라는 데로 다했는데 하니까 크롬에서 아무 사이트 들어가니까 사이트가 공격 받고 있을수있습니다 라고하면서 사이트가 실행이 되지 않는데 이거 어떻게 해결하죠?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
아스키코드로 풀어보았는데 이렇게 짜도 괜찮을까요?
import java.util.*; class Main { public char solution(int n, String s){ int[] cnt = new int[n]; // 알파벳 등장 횟수 배열 char[] ch = s.toCharArray(); for (int i = 0; i < n; i++) { cnt[ch[i]-65]++; // count배열에 a,b,c,d,e 투표결과 저장 } int max = Integer.MIN_VALUE, answer =0; for(int i = 0; i<5; i++){ // count배열의 인덱스 0,1,2,3,4만 체크 if(cnt[i] > max){ answer = i; max = cnt[i]; } } return (char)(answer+65); } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); int n=kb.nextInt(); String str=kb.next(); System.out.println(T.solution(n, str)); } }이렇게 짜도 괜찮을까요?
-
해결됨데이터 분석 SQL Fundamentals
강사님 analytic 집계함수 에 대해서 궁금한게 있습니다.
select empno, ename, deptno, sal, avg(sal) over (partition by deptno) dept_avg_sal , sal - avg(sal) over (partition by deptno) dept_avg_sal_diff from hr.emp;위 SQL은 강사님이 작성해주신 코드 입니다.with temp_01 as ( select empno ,ename ,sal as "개인 급여" ,avg(sal) over (partition by deptno) as "평균 급여" from emp ) select empno,ename,"개인 급여","평균 급여",abs("평균 급여"-"개인 급여") from temp_01;밑에는 제가 답안지를 안보고 먼저 작성한 코드 입니다. 제가 처음에 첫번째 코드처럼 작성을 하려다가 이게 group by 처럼 부하가 좀 큰 작업이라고 생각이되었습니다.그래서 한번만 사용하고 싶어서 임시테이블을 만들고그 테이블의 컬럼끼리 계산을 하게 했는데 윈도우 함수를 한번 더 사용하는것과 서브쿼리로 한번만 호출하는 것 중에서 윈도우 함수를 한번 더 호출하는게 더 나은 선택이라면 그 이유가 궁금합니다.만약에 서브 쿼리를 사용하는데 그 서브 쿼리에 함수를 사용한 컬럼이 있다면그 컬럼을 호출할때마다 그 함수를 실행해서 그 결과를 가져오나요?아니면 한번 서브쿼리를 실행하면 그 데이터가 저장되서 값만 가져오나요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
jdbc 탬플릿으로 findById로 조회 시 정상적으로 반환은 되지만 AUTO_INCREMENT 한 컬럼이 null인 상황입니다.
안녕하세요. 질문 제목에 관해 말씀드리겠습니다.상황은 이러합니다.member table에 jdbc 탬플릿으로 잘 저장하고 잘 조회하나 테스트하는 중으로 테이블은 아래와 같습니다.CREATE TABLE member ( member_id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(45), login_id VARCHAR(45), password VARCHAR(45), email VARCHAR(45) UNIQUE ); 레포지토리는 아래와 같습니다.package com.boaz.sketch2fashion.repository.member; import com.boaz.sketch2fashion.domain.Member; import com.boaz.sketch2fashion.repository.member.MemberRepository; import com.boaz.sketch2fashion.repository.member.dto.MemberSaveDTO; import com.boaz.sketch2fashion.repository.member.dto.MemberUpdateDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; import org.springframework.stereotype.Repository; import javax.sql.DataSource; import java.security.Signature; import java.util.List; import java.util.Map; @Slf4j @Repository public class JdbcMemberRepository implements MemberRepository { private final NamedParameterJdbcTemplate template; public JdbcMemberRepository(DataSource dataSource) { this.template = new NamedParameterJdbcTemplate(dataSource); } @Override public Member save(Member member) { String sql = "insert into member(name, login_id, password, email) values(:name, :loginId, :password, :email)"; KeyHolder keyHolder = new GeneratedKeyHolder(); SqlParameterSource param = new BeanPropertySqlParameterSource(member); template.update(sql, param, keyHolder); long key = keyHolder.getKey().longValue(); member.setId(key); return member; } @Override public Member findById(Long id) { String sql = "select * from member where member_id = :id"; Map<String, Object> param = Map.of("id", id); Member member = template.queryForObject(sql, param, memberRowMapper()); return member; } @Override public Member findByLoginId(String loginId) { String sql = "select * from member where login_id = :loginId"; Map<String, Object> param = Map.of("loginId", loginId); Member member = template.queryForObject(sql, param, memberRowMapper()); return member; } @Override public void update(Long id, MemberUpdateDTO memberUpdateDTO) { String sql = "update member set name = :name, login_id = :loginId, password = :password, email = :email where id = :id"; SqlParameterSource param = new MapSqlParameterSource() .addValue("name", memberUpdateDTO.getName()) .addValue("loginId", memberUpdateDTO.getLoginId()) .addValue("password", memberUpdateDTO.getPassword()) .addValue("email", memberUpdateDTO.getEmail()); template.update(sql, param); } @Override public void delete(Long id) { String sql = "delete from member where id = :id"; Map<String, Object> param = Map.of("id", id); template.update(sql, param); } private RowMapper<Member> memberRowMapper() { return BeanPropertyRowMapper.newInstance(Member.class); } } 테스트 코드는 아래와 같습니다. @Test void findById() { // given Member memberA = new Member("a", "a", "a", "a"); // when Member saveMember = memberRepository.save(memberA); log.info("{}", saveMember.getId()); Member findMember = memberRepository.findById(saveMember.getId()); log.info("{}", saveMember.getId()); log.info("{}", findMember.getId()); // then assertThat(saveMember).isEqualTo(findMember); } memberA를 저장하고 findById로 찾아서 saveMember와 findMember의 내용물이 같은지 확인하는 코드입니다. memberA를 저장하면 pk는 1이 될 것이라고 생각하여 findById(saveMember.getId());로 H2 DB에서 pk가 1인 행을 찾아 findMember로 반환하여 isEqualTo를 하려고 했습니다. 결과 이미지saveMember의 getId 1로 findMember를 찾았는데 findMember의 getId는 null입니다.따라서 테스트가 실패합니다. 테스트 환경H2 스프링 내장 DB, jdk 17 항상 질문 답변 해주셔서 정말 감사합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
term을 consol.log로 찍었을 때 나오는 게 이해가 안되어서 질문드립니다
const onChangeTerm = useCallback((e) => { setTerm(e.target.checked); console.log(term); setTermError(false); }, []); console.log(term);이렇게 term의 consol.log를 찍어서 확인해 봤는데 setState는 비동기이기에 term의 초기값이 false라고 했을때 useState는 비동기이니 하면첫번째 term의 consol.log는falsetruetruefalsefasletrue이런식으로 진행되야 할꺼 같은데실제로 로그 를 찍어보니까 onChangeTerm안에 있는 console.log(term)은 계속 false로 찍힙니다 이유가 무었인가요?
-
미해결중상급 퍼블리싱을 위한 CSS3의 모든 것
[공유] 부모 요소가 position: absolute 인 경우에 대한 설명
영상 마지막 부분에 보면 부모 요소에 position: absolute인 경우에도 부모-자식 요소가 매칭이 되게 되는 걸 보셨을 겁니다. 정확하게는 relative가 부모, absolute가 자식으로 매칭되는 것이 아닌 (편의상 이렇게 설명을 하셨지만) absolute는 position: static 속성을 가지고 있지 않는 조상을 기준으로 작동합니다 즉, relative, absolute, fixed, sticky 의 값을 가지고 있는 부모가 있다면 자식-부모 매칭이 됩니다.그러나, 대부분의 경우에는 relative-absolute인 경우가 대다수죠!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
setter 대신 Builder를 사용하여 구성했는데 꼬임에 대해서
setter 사용을 지양하기 위해setter를 사용하지 않고 Builder 패턴으로 구현하여 코드를 작성하던중 OrderService의 order() 메서드를 테스트 하는데 NullPointerException이 발생했습니다.어디서부터 꼬인지를 모르겠어서어디부터 물어봐야할지를 모르겠네요...그래서 이후 강의에서는 setter를 사용하지않고 정석대로 생성자를 이용하는 방식을 사용하는 강의가 있는지 궁금합니다.