묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Transaction 적용구간에 대한 질문
안녕하세요? 강사님.덕분에 Springboot 수월하게 학습하고 있습니다.좋은 강의 항상 감사드립니다.다름이 아니라Transaction 적용구간에 대한 문의 드립니다.아래 가상 소스를 예를 들면방안1, 방안2 모두 문제점들이 있는데 실제 현업에서는 주로 어떠한 방법으로 해결하시는지 고견을 듣고 싶습니다. 물론, Controller 외부에서 별도 호출하는 방식으로아래 문제를 피해갈 수 있을것 같지만, 서비스 관리 특성성 하나의 메서드로 관리하고 싶다는 전제 입니다. 방안1) 경우 메소드에 Transaction을 적용하면순수 DB처리 이외도 처리도 포함되어 트랜잭션 처리이 짧을 수록 좋은데 길어질 수 있는 문제가 있습니다.방안2) 경우메소드를 쪼개어 순수DB 처리 메소드에만 Transaction을 적용할 수 있겠지만, external 메소드, 등록(), 의 경우 프록시 특성상외부에서 내부 메서드 호출시 트랜잭션이 적용되지 않습니다. 방안1)BasicService{ @Transactional public void 등록() { 1. 이미지 파일 저장 2. 이미지 파일 리사이징 3. ----트랜잭션 구간--- 3-1) 내용 등록 3-2) 업로드 파일 등록 }} 방안2) BasicService{ public void 등록() { 파일업로드(); DB저장(); } public void 파일업로드() { 1. 이미지 파일 저장 2. 이미지 파일 리사이징 } @Transactional public void DB저장() { 3. ----트랜잭션 구간--- 3-1) 내용 등록 3-2) 업로드 파일 등록 }} 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필터사용
(인터셉터 대신) 특별히 필터를 사용해야 하는 경우는 어떤경우가 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
중복체크기능 관련 질문올립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 강사님 강의 잘 듣고있습니다. 강사님 제가 강의에서 들은 내용을 토대로과거 만들었던 프로젝트를 리팩토링하려고 하는데 어려움이 있어 질문올립니다. 강사님 위와같은 형식으로 회원가입을 진행하려고 하는데 과거에는 ajax를 사용해서 아래와 같이 <input type="text" id="signup-form-nickname" placeholder="닉네임을 입력해주세요." check_result="fail" required> <button type="button" id="check-nickname-btn" style="margin-left: 14px;" value="N">중복확인</button> check_result="fail"를 활용해 중복체크를 하면 check_result="success"값으로 바꿔 회원가입을 진행하는 방법을 사용했었습니다. 그런데 Thymeleaf에 와서는 어떤식으로 중복체크를 해야할지 감이 안잡혀 질문을 남깁니다. 타임리프는 ajax를 사용하지도 않고 중복체크 div도 form안에 있어 이것만 따로 보내는 방법도 알지 못하겠어 찾아보았으나 답이 나오지 않아 질문드립니다. 좋은 강의 만들어주셔서 감사합니다. 후기는 취업하고 올리려고 벼르고 있습니다. ㅇㅁㅇ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
게시판을 여러 개 만들 때
1. 예를들어 자유게시판, 건의게시판 이렇게 여러개가 있고 기능은 거의 똑같지만 건의에는 사진업로드 기능이 추가로 존재할 때 자유게시판 컨트롤러, 레파지토리, 모델, ... 건의게시판 컨트롤러, 레파지토리, 모델, ... 이렇게 다 각자 만들어줘야 하나요? 아니면 컨트롤러 레파지토리 모델 자유,건의 게시판 통합해서 만드나요? 2. DB에서 테이블도 자유, 건의 게시판 따로 만들어서 개발하나요? ( title, content 이런 것들 )
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
컨트롤러의 통합에 관한 질문입니다
안녕하세요. 스프링은 스프링 빈중 @Controller 혹은 @RequestMapping이 붙어있을 때 요청정보와 컨트롤러를 매핑한다고 저번시간에 배웠습니다. 제가 이때 이해한 것은 요청정보URL-객체 매핑이 저장된다는 것이었는데, 이렇게 컨트롤러 클래스를 하나로 통합하게 된다면 매핑이 url-메소드 관계가 형성이 되는 것 같습니다. 이 부분이 저희가 지금까지 MVC 프레임워크를 만드는 과정과 조금 결이 다른 부분이라 어떤 식으로 매핑정보가 등록되는 것인지 잘 이해가 가지 않습니다. 매핑이 클래스 단위로 일어날 수도 있지만 메소드 단위로 일어날 수 도 있는 것으로 이해하면 될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
session.getAttribute(SessionConst.LOGIN_MEMBER) 질문
안녕하세요 영한님! 질문드립니다..! 아래와 같이 로그인 시 세션에 로그인 회원정보를 보관하고 //로그인 성공 처리 TODO //세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성 HttpSession session = request.getSession(true); //세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 아래와 같이 세션에서 SessionConst.LOGIN_MEMBER가 key 값으로 session 에서 SessionConst.LOGIN_MEMBER와 매칭되는 value인 Member 객체를 꺼내오는 것으로 이해하고 있는데,, Member loginMember = (Member) session.getAttribute(SessionConst.LOGIN_MEMBER); 위와 같은 로직으로 여러회원이 로그인 할 텐데... 어떻게 하나의 key 값으로 여러개의 Member 객체를 구별 할 수 있는지 궁금합니다...! 감사합니다.!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 enum에 관하여 질문 좀 드리겠습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. JPA에서 enum을 활용할 때 질문드리겠습니다. 요일을 enum 타입으로 만들어 (0~6, 일~월 이런 형식) 체크 박스로 입력을 받아, 체크를 선택한 요일은 매장의 휴무일로 지정하는 로직을 구현하는 중입니다. @ElementCollection을 활용하여 간단하게 처리하려고 했으나, 추천하시는 방식이 따로 있길래 어떤 식으로 로직을 작성해야 하는지가 너무 궁금해졌습니다. https://www.inflearn.com/questions/21303 1. 위에서 영한님께서 해주신 답변 중, 2번의 경우를 추천하셨기에 2번으로 진행하려고 하였습니다! 혹시 이 경우, 2번 방법을 추천하신 이유가 무엇인지가 궁금합니다!!! 2. 위 링크의 2번 로직으로 코드를 작성하면 다대다 엔티티 매핑이 발생하는데 개인적인 생각에 요일과의 매핑은 단순히 요일과 요일에 엮여있는 매장 ID값만 알면 되는 것 같아 @ManyToMany를 그대로 사용해도 되는 건가?? 라는 생각이 들었습니다. 그대로 사용을 해도 좋은지 아니면 1 : N, N : 1로 풀어주는 것이 좋은지 궁금합니다!!!! 또, 이렇게 요일을 처리하는 구현을 Enum보다 추천하실만한 방법이 있는지, 있다면 어떤 방식인지도 말씀해주시면 감사드리겠습니다!! 날씨가 많이 더운데 더위 조심하시고 폭우 조심하세요! 감사합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
WebConfig에서 등록하는건 항상 글로벌로 적용되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]WebConfig에서 등록하는 fomatter는 항상 글로벌로 적용되나요? 특정 Controller class에만 적용되게 하거나, Annotation 기반 formatter처럼 특정 method에만 적용되게 할 순 없는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트코드 회원가입 오류 질문
IllegalStateException 오류가 나는데,yml에 MVCC도 제거했고, h2도 켰는데도 그러네요@Autowired MemberService memberService;@Autowired MemberRepository memberRepository;여기에서 왜 빨간줄이 나는지 잘 모르겠습니다이상해서 MemberRepository와 MemberService도 pdf에서 복사해서 붙여넣어도 그렇습니다(@Service, @Repository 도 되어있습니다)Unit4로 했습니다!
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
경로 질문
안녕하세요 상품 목록 - 타임리프 강의를 보다가 질문드립니다 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" rel="stylesheet"> </head> <body> 를 해당 강의에서 <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"> </head> <body> 로 변경하셨습니다. @{/css/bootstrap.min.css}가 static/css/bootstrap.min.css경로를 찾게되는것은 https://www.inflearn.com/questions/266792를 보아서 이해하였습니다. 하지만 @{} 작성하지 않고 <link href="../css/bootstrap.min.css" rel="stylesheet">로 작성해도 css 정상적으로 적용되는 것을 확인했습니다. <link href="../css/bootstrap.min.css" rel="stylesheet"> 만 작성해도 templates/css/bootstrap.min.css 가 아닌 static/css/bootstrap.min.css에 접근할 수 있는 이유가 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
API 개발 협업 관련 질문드립니다.
안녕하세요 영한님 스프링 기본편부터 querydsl까지 들으면서 혼자 프로젝트를 진행했었고 이제 사이드 프로젝트를 하면서 다른 프론트엔드 개발자와 협업해보고 싶습니다. 구글링을 해도 원하는 정보를 얻을 수 없어서... 질문을 남겨보려고 합니다. 보통 사이드 프로젝트를 진행하면 백엔드(저)는 제 pc로, 프론트엔드 개발자분은 그 분의 pc로 개발하게 될텐데, 제가 api 개발을 마치고 깃허브에 코드를 올려놓으면 프론트분이 제 코드를 clone해서 프론트분의 로컬 환경에서 api를 테스트하는 메커니즘인가요? 또한 만약 이렇게 테스트하게 된다면, 프론트분은 db이 어떻게 접근하는지, 보통 백엔드는 api만 개발하고 테스트는 하지 않는지도 궁금합니다.
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
api-gateway 서버를 실행시키고 first-service와 second-service 를 실행시키면 api-gateway가 실행이 잘 안됩니다.
안녕하세요 Spring Cloud Gateway 프로젝트 생성 강의를 진행했는데요 제가 first-service와 second-service 그리고 api-gateway를 모두 Spring Boot 2.6.10 버전 java 11 버전 sdk도 11 로 생성했습니다. 우선 api-gateway의 application.yml 파일은 다음과 같습니다. server: port: 8000eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eurekaspring: application: name: apigateway-service cloud: gateway: routes: - id: first-service uri: http://localhost:8081/ # 여기로 요청할거다. predicates: # 조건절이다. - Path=/first-service/** # 사용자가 이걸호출하면 위에 uri로 간다. 즉 http://localhost:8081/first-service/** 으로 간다. - id: second-service uri: http://localhost:8082/ # 여기로 요청할거다. predicates: # 조건절이다. - Path=/second-service/** # 사용자가 이걸호출하면 위에 uri로 간다. first-service의 application.yml 파일은 다음과 같고 server: port: 8081spring: application: name: my-first-serviceeureka: client: fetch-registry: false register-with-eureka: false FirstServiceController는 다음과 같습니다. @RestController@RequestMapping("/first-service")public class FirstServiceController { @GetMapping("/welcome") public String welcome() { return "Welcome to the First service"; }} 또한 second-service의 application.yml은 다음과 같고 server: port: 8082spring: application: name: my-second-serviceeureka: client: fetch-registry: false register-with-eureka: false SecondServiceController는 다음과 같습니다. @RestController@RequestMapping("/second-service")public class SecondServiceController { @GetMapping("/welcome") public String welcome() { return "Welcome to the Second service"; }} 브라우저에 http://127.0.0.1:8081/first-service/welcome 을 입력하면 Welcome to the First service가 잘뜨고 http://127.0.0.1:8082/second-service/welcome 을 입력하면 Welcome to the Second service 가 잘 뜹니다. 그런데 http://127.0.0.1:8000/first-sevice/welcome http://127.0.0.1:8000/second-sevice/welcome 을 입력하면 역시나 동일하게 Welcome to the ~ 가 나와야하는데 Whitelabel Error Page 404 에러가 발생합니다... 원인이 무엇일까요? 참고로 api-gateway 서버를 먼저키고 first, second 켜보기도하고 first, second 서버 먼저 키고 api-gateway를 켜보기도했는데 상관없이 똑같은 에러가 발생합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 컴파일러 버전문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 위와같은 에러가 발생합니다. 에러 문구에 17버전 이라고 되어있어 구글링을 통하여 java버전이 제대로 설정되어있지 않음을 파악하고 환경변수 설정을 해주었습니다. 그래도 저 에러가 해결되지않아서 질문드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Whitelabel Error Page 질문
webapp 디렉토리의 index.html과 basic.html이 열리지 않습니다.... 인텔리제이 유료버전을 사용하고 있고 build를 인텔리제이로 바꿔도 봤고, build.gradle에서 tomcat 부분을 주석으로도 해봤는데 모두 출력이 정상적으로 이루어지지 않습니다...오타가 있나 봤는데 오타도 없고, 지웠다가 다시 생성해봐도 동일합니다....ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
구현체의 개념질문입니다
단순한 개념질문인데... DefaultConversionService 인터페이스는ConversionService인터페이스와 ConverterRegistry인터페이스를 확장한 인터페이스로 보입니다. DefaultConversionService를 ConversionService와 ConverterRegistry의 구현체라고 불러도 될까요??(또는 "DefaultConversionService는 구현체"다 라는 명제가 성립되나요?) 보통 지금까진 "A인터페이스를 implements한 B구현체"는 많이봤는데 위 질문내용은 처음봅니다
-
미해결스프링 핵심 원리 - 기본편
여러 빈들이 @PostConstruct 사용시 질문입니다.
여러 빈들이 초기화할때, 서로 각각 초기화할때 생성된 데이터를 이용하는 경우 null에러같은 것이 일어날 수 도 있지 않나요?? 스프링은 이런걸 초기화할때 알아서 방지해줄지 궁금합니다 (아니면 클래스에 @order, @primary 등과 같은 기능을 붙여야하는지 싶습니다)
-
미해결스프링 핵심 원리 - 기본편
policyMap과 polices에 아무것도 안 나옴
System.out.println("policyMap = " + policyMap);System.out.println("policies = " + policies);했을 때, 영상과 다르게 아무것도 나오지 않습니다.분명 영상 코드와 똑같이 쳤는데, 무엇을 확인하면 좋을지 알 수 있을까요?아래는 제가 작성한 AllBeanTest class 코드 입니다ㅡㅡㅡㅡㅡㅡpackage hello.core.autowored;import hello.core.AutoAppConfig;import hello.core.discount.DiscountPolicy;import hello.core.member.Grade;import hello.core.member.Member;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import java.util.List;import java.util.Map;public class AllBeanTest { @Test void findAllBean() { // 이렇게 클래스를 두개 모두 등록하면, 두개 모두 땡겨와서 등록시켜줌 ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); int discountPrice = discountService.discount(member, 10000, "fixDiscountPolicy"); Assertions.assertThat(discountService).isInstanceOf(DiscountService.class); Assertions.assertThat(discountPrice).isEqualTo(1000); int rateDiscountPrice = discountService.discount(member, 20000, "rateDiscountPolicy"); Assertions.assertThat(rateDiscountPrice).isEqualTo(2000); } static class DiscountService { private final Map<String, DiscountPolicy> policyMap; private final List<DiscountPolicy> policies; @Autowired public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policies) { this.policyMap = policyMap; this.policies = policies; System.out.println("policyMap = " + policyMap); System.out.println("policies = " + policies); } public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); } }}
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
entity를 async 메소드 파라미터로 넘길 경우에 대한 질문입니다.
안녕하세요 강사님 항상 좋은강의 잘 보고있습니다. DB관련 강의를 보고서 코드를 작업하던 중 이해가 안가는 부분이 있어 질문드립니다. 정확한 질문포인트 강의를 찾지 못해 트랜잭션 관련 질문이라 이곳에 남깁니다.. Parent entity가 onetomany로 child entity list를 갖고있는 상황입니다. Lazy Loading으로 사용중입니다. @transactional이 붙은 A 메서드가 parent entity를 find해왔습니다. 아직 child를 사용하지 않았습니다. 조회쿼리도 나가지 않았습니다. A메서드는 @Async로 별도 thread에서 동작하는 B메서드에 parentEntity를 parameter로 넘깁니다. (B메서드에는 transactional코드가 없습니다) B메서드에서는 child를 사용하여 동작하는 코드가 들어있습니다. 의문점은 이게 fail to lazily initialize... no session이 나와야하지 않나 싶은데 정상작동한다는 점입니다. 강의를 통해 제가 이해한것은.. 1. transaction은 db connection과 함께 움직입니다. 2. transaction은 thread local로 관리되어 thread마다 할당됩니다. 고로 db connection은 thread에 할당됩니다. 3. entity manager는 일부러 엮지 않는 이상 thread끼리 공유하지 않는다. 한 thread에 하나씩 붙는다. 4. open session in view를 켜지 않는 한 entity manager는 transaction과 생명주기를 같이한다 async에서 할당된 thread들은 transaction이 없기 때문에 entity manager를 갖고 있지 않은 상태이고, parameter를 통해 받은 parent entity는 사실상 dto와 같은 취급을 받아야 하는게 아닌가 하는 생각입니다. 고로 parent entity에서 child를 조회하려하면 entity manager와 db connection이 없기 때문에 관련 에러가 터질것이라 생각했습니다. 하지만 async 메소드에서 child를 사용하려하면 정상적으로 쿼리가 나가고 실행에 아무런 장애가 없습니다. 이에 궁금증이 생겼습니다. 1. entityManager 생성이 transaction과 같이하는게 아니라, Thread가 생성될때마다 각 Thread는 entityManager를 자동으로 부여받는것인가? 2. 1번이 맞다면.. entity가 갖고있는 Lazy loading인 상태의 proxy항목이 Async thread에 있는 entitymanager를 사용해서 조회를한것인가? parameter로 넘긴 entity가 내부적으로 db connection을 물고있는건가 싶은 의문도 생겼습니다. 테스트코드는.. https://github.com/zzangisdaeho/transaction-test.git TestAsync.testAsync() 를 한번만 봐주실 수 있다면 감사하겠습니다. (테스트코드 에러는.. 테스트 종료시에 entitymanager를 release하면서 나는 NPE인데.. 아직 원인을 파악하지 못하였습니다. 궁금한점은 async쪽입니다..) 감사합니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
레거시 코드에서 DriverManager를 사용하는데요...
안녕하세요~ 로드맵을 따라 듣다가 아직 이 강의를 볼 타임이 아닌데 ㅠㅠ 오늘 인수인계 받은 배치 애플리케이션의 소스코드를 봤는데 도무지 이해가 가지 않는 코드로 작성되어 있어 혹시나 싶은 마음에 강의를 찾아보니 있네요 ㅎㅎ 레거시 코드의 배치 애플리케이션에서 DriverManager, PreparedStatement, ResultSet을 사용해서 DB 처리를 하고 있습니다. 그런데... 서버가 기동될 때 최초 1회만 커넥션을 생성해서 close하지 않고 계속 사용합니다. 이걸로 서버 재기동전까지 계속 쿼리를 동작시킵니다. (PreparedStatement와 ResultSet는 사용하면 close 합니다.) 강의를 보니 커넥션을 맺는 비용이 비싸기 때문에 이런 코드가 만들어진 것으로 추측해보는데요 close를 하지않는 단일 커넥션을 사용하는 것은 어떤 장단점을 가지는지 궁금합니다. close를 하지 않는 단일 커넥션은 커넥션풀에 커넥션이 1개만 있는 경우와 같을까요? 배치 애플리케이션이니까 단일 커넥션으로 처리했을까요? * 배치의 정보를 드리자면.. 대략 수는 50개, 동시에 처리되는 것들이 보통 5개, 실행시간은 보통 5분 내외, 최대 3시간입니다. 이상한 코드가 맞겠죠?? 자야하는데 고민이 깊어지네요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문남깁니다.
homeLoginV3 에서 질문드립니다. //세션에 회원 데이터가 없으면 home로 보내주는 로직 if (loginMember == null) { return "home";} 에 대해서 의문점이 있어서 질문을 남기게 되었습니다.상단에서 이미 세션 관리자에 저장된 회원 정보를 조회했고, 세션이 존재하지 않는다면 home 으로 이동하고, 그렇지 않은경우(세션 관리자에 회원 loginMember가 있는경우)에서는 회원 데이터가 없을 수가 있나요??이미 기존에 회원이 로그인을 했었기 때문에, 세션에는 당연히 회원 데이터가 있다고 생각이 듭니다..세션에 회원 데이터가 없는 경우가 있는 상황이 있는지 궁금합니다.