30%
53,900원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
h2 콘솔 저장한 설정 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]H2 콘솔 저장된 설정을 재다운로드 하는 과정에 날려먹어 방법을 찾아 시도해보았지만 해결을 하지 못해 이렇게 질문 남깁니다. 숨겨진 설정 파일을 찾아 전 설정으로 덮어씌우면 된다해서 그대로 해보았지만 설정이 바뀌질 않습니다, 혹시 다른 방안이 있을까요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
락 잡을 경우 조회가 안되는데요
질문이 있습니다. 세션1에서 commit전 아래와 같이 쿼리를 날리고 ``` set autocommit false; update member set money=500 where member_id = 'memberA'; ``` 세션2에서 아래와 같이 update와 select를 실행하는 쿼리를 날려보았습니다. ``` SET LOCK_TIMEOUT 60000; set autocommit false; update member set money=1000 where member_id = 'memberA'; select * from member; ``` 이후 세션1에서 commit을 날리게 되면 세션2에서 순차적으로 update, select문이 실행 되는데 이건 세션1에서 락이 반납이 되서 모든 쿼리문이 실행된걸로 보면 되는걸까요?? 그렇다면 commit 후 락이 반납되기 전까지는 어떠한 CRUD 쿼리는 실행을할수 없다고 보면 될까요??
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
MaximumPoolSize관련
안녕하세요! 항상 강의 잘 듣고 있습니다. 최근 사내에서 트래픽이 몰리는 프로젝트를 하게되었고 쓰레드풀과 히카리풀을 어떤식으로 튜닝할지 고민중에 있습니다. 영한 쌤 강의와 질문 답변들을 참고한 결과 서버가 한대에 내장WAS, DB한대만 있다고 가정하였을때에는 서버 cpu를 50%정도 사용하게끔 최대 쓰레드 풀 조정한 후 최대 쓰레드 풀 보다 약간 낮게 히카리 풀을 설정하는게 일반적인 경우에는 올바른 조치 일까요 ? 튜닝을 위와같이 시작하는게 맞는지 사수없는 주니어가 질문드립니다 ㅜ_ㅜ 감사합니다!
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
안녕하세요 db2관련으로 문의드립니다
안녕하세요. 현재 스프링 mvc까지 완강한 상황이고 다음달부터 스프링 + jpa 활용한 프로젝트를 진행중인데 따로 JPA패키지를 구매하지 않고 스프링 db2까지만 학습해도 jpa를 활용하여 프로젝트를 하는데 무리가 없을까요? 스프링 강의가 부트+ jpa패키지보다 jpa를 다루는 시간이 짧아서 db2에서 다루는 것만으로도 부족한 건 아닌지 여쭤봅니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
스프링 DB 2편 강의 문의
좋은 강의 감사드립니다 영한님 강의 jpa, 스프링 데이터 jpa, querydsl를 모두 수강했었는데 스프링 db 2편 강의를 꼭 들어야할까요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
pool 사이즈 초과에 대한 커넥션 요청 시 Wating 상태 커넥션이 궁금합니다.
[질문 내용]HikariDataSource에 대한 MaximumPooSize를 1로 설정후에 2개의 커넥션 요청 시 2번쨰 커넥션 요청은 Wating 상태로 가게 되는데 첫번쨰 커넥션이 연결이 해제(conn.close())가 된다면 2번째 커넥션 요청은 자동으로 커넥션을 반환받게 되나요? 해당 시나리오대로 테스트 시 30초 타임아웃 뒤에 익셉션이 발생해서요. 따로 명시해야 하는 로직이 있을까요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
실무에서 커넥션 풀 사용시 maximum풀사이즈 산정은 어떻게 하는지 궁금합니다.
안녕하세요. 강의 잘보고 있습니다. 강의 보다 궁금한 점이 실무에서 커넥션 풀 사용시 maximum풀사이즈 산정은 어떤 과정으로 산정을 하나요? (배민같이 대량의 트래픽을 받아줘야 하는 경우) 뭔가 톰캣 쓰레드 갯수와 커넥션 풀 갯수를 적절하게 맞춰서 셋팅을 해야 할것 같은데 산정 과정이 어떻게 되는지 궁금합니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
굳이 Proxy 객체로 감싸서 반환하는 이유가 무엇인가요,,,,
강의 도중 중요한 내용은 아니라고 하셨지만 궁금해서 이렇게 질문을 남깁니다. 커넥션을 사용하고 반환하는 과정에서 Proxy로 감싸지 않고 반환하면 다시 재사용하는데 있어서 어떤 문제가 발생하는 것인지 궁금합니다. 또한, Proxy 로 감싸서 얻는 이점이 무엇인지도 궁금하네요.. 강의 감사합니다!
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
JPA renaming
안녕하세요. JPA 가 (Java Persistence API) -> Jakarta Persistence API 로 renaming 된 것 같아서 제보 드려요~
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
트랜잭셔널 에노테이션에 대해서 질문이 있습니다.
A 서비스 클래스에서 어떠한 메서드(@Transactional 있음)가 하나의 트랜잭션을 실행하는데 B 서비스 클래스에 있는 UPDATE 메서드를 A 서비스 클래스의 해당 메서드에 넣어서 사용한다고 할때 B서비스 클래스의 UPDATE 메서드에 @Transactional 에노테이션이 붙어있어도 문제가 없을까요? B 클래스 메서드가 단독으로 트랜잭션을 실행하지 않는다는 무조건적인 보장이 있으면 에노테이션이 없는 것이 맞지만 그것이 아니라면 에노테이션이 있어야 될것 같아서 질문드립니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Spring을 공부하면서 애플리케이션 영역에서 트랜잭션을 적용을 권고하는 사유가 있을지 궁금합니다.
이전에 닷넷 + MSSQL개발 환경에서는 트랜잭션을 애플리케이션 영역이 아닌 프로시저 내에서(쿼리문 영역) 트랜잭션 설정하는것을 권고했었는데요. Spring 환경으로 넘어가면서 동일한 MSSQL사용하지만 애플리케이션 설정하는것을 권고하더라구요. 도저히 이 부분에 대해서 왜 어플리케이션 영역에서 설정해야 하는지 이유를 잘 모르겠습니다. 감사합니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
@Transactional 관련 커넥션풀 반환 원리 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 아니오[질문 내용]안녕하세요. 커넥션풀 반환에 관련되서 질문드리고자 합니다. 서비스단의 메소드에 @Transactional 을 사용해서 생성된 프록시의 마지막에 커넥션을 반환하는것으로 이해해습니다. @Transactional은 보통 update,insert,delete 쿼리가 존재하는 곳에 붙이는 것으로 알고 있는데요. 단순히 조회만하는 메서드에서 @Transactional을 안붙여도 어떻게 커넥션 풀이 반환되는지 궁금합니다. Service.java 코드에서 가령 10개의 메서드가 있는데 1개만 @Transactional이 붙여도 해당 클래스는 프록시가 생성되어 모든 메서드에 커넥션 풀이 반환되는 부분이 들어가는것으로 이해됩니다. 그렇다면 controller에서 바로 repository 메서드(select, update, insert, delete 등)를 호출해도 커넥션풀이 반환되는걸까요? 반환이된다면 원리가 궁금합니다. ※ 추가질문강의 내용 일부 중 JPA 트랜잭션 코드 예시에서 엔티티매니저 종료 & 엔티티 매니저 팩토리 종료 부분이 있는데 해당 부분이 커넥션 풀을 반환하는 것으로 이해하면 될까요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
회사에서 격리 수준을 커밋되지 않은 읽기 방식 채택해서 사용중 질문
강의내용에서 커밋된 읽기 방식을 많이 들 사용한다고 하시는데 정작 제가 재직중의 회사의 경우 커밋되지 않은 읽기 방식을 채택중에 있습니다. 지금까지 아는 봐로는 커밋되지 않은 읽기 방식을 채택할경우 SEELCT면에서 데이터를 빨리 읽을 수 있기 때문에 사용하는 것으로 인지하고 있습니다. 대용량 데이터를 다루는 케이스에서는 커밋되지 않은 읽기 방식은 적당하지 않은 방식일지 궁금합니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
데이터베이스 관련 서적을 추천 받고 싶습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 김영한님! 우선 제 롤모델이십니다.. 이것만큼은 꼭 말씀드리고 싶었습니다>< 영한님의 강의로 제 지식을 쌓는 데 수혈이 되어 하루하루 성장함을 느낍니다ㅎㅎ 아직 프로젝트를 진행해보지 않았지만, 테이블을 설계하거나 sql을 보다 잘 짤 수 있도록 관련 공부를 해보고 싶은데 혹시 영한님께서 데이터베이스에 관해서 도움이 된 서적이나 혹은 추천해주실 만한 것이 있을까요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Attributeconverter @Converter와 nativeQuery와 함께 사용했을때 @Converter가 작동하지 않습니다. 답변해주시면 큰절올리겠습니다,,,,,
1. 강의 내용과 관련된 질문인가요? 아닙니다. 그래도 답변 해주시면 너무 너무 감사드리겠습니다. 2. 네!! 어디에서도 찾지 못했습니다. 3. 넵! 지금 현제 하고 있는 프로젝트에서 Entity에 enum 필드를 @Enumerated를 사용하지 않고 컨버팅해서 사용하려고 했습니다. 예를 들자면 남자(1) 여자(2) 과같은 enum이 있을때 db에 저장할때는 1과 2 (코드값)을 넣고 select로 값을 가져올때는 남자,여자 이렇게 문자열로가지고 오고싶었고 그 방법으로 @Converter 를 사용하는것이였습니다. @Converter는 jpa에서 제공하는 findbyId() 와같은 함수에서는 잘 작동했지만 jpql을 사용해서 db에 직접 쿼리를 날릴때는 전혀 작동하지 않는 문제가 있었습니다. 디버깅 해봤을때는 jpql을 호출할때 내부적으로 @Converter의 프록시가 호출이 안돼서 아에 Attributeconverter의 구현클래스(컨버터)조차 호출이 되지 않았습니다. 저 혼자 해결해 보려했으나 도저히 해결이 안되고 물어볼 곳이 없어서 이렇게 글을 올리게 됐습니다. 답변부탁드립니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
checked 예외는 커밋
수업내용중에 checked 예외는 커밋하고, unchecked 예외는 롤백한다고 하셨는데, 강의를 다 들어봐도 예외를 변환하는 건 있어도 그 이유에 대한 언급은 없는거 같은데 혹시 뭔지 여쭤봐도 될까요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
"DB 락 - 개념 이해" 강의 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요. 영한님 이번에도 유익한 강의 해주셔서 감사합니다. 다름이 아니라, 강의 내용 중 트랜잭션 관련하여 질문 드릴 것이 있습니다. DB Lock을 사용하지 않는 상황에서 서로 다른 세션이 같은 데이터를 수정할 때 트랜잭션의 원자성이 깨질 수 있다고 하셨는데, 비슷한 시점에 실행되는 트랜잭션이 서로 영향을 미치는 격리성의 문제로도 볼 수 있을 것 같다는 생각이 들더라구요. 혹시 격리성이 아니라, 원자성이라고 설명해주신 이유가 있으신가요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
"프레젠테이션 계층에서 사용자 요청을 검증한다"에 궁금한 점이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 영한님 :) "프레젠테이션 계층에서 사용자 요청을 검증한다"에 대해서 궁금한 점이 있습니다. 아래 상황에서 제가 생각한 것이 맞는지 여쭤보고 싶습니다. "특정 유저의 기본키와 새로운 패스워드를 전달 받아서 해당 유저의 패스워드를 수정해야 하는 REST API가 있다. 이 때 패스워드에는 유저의 이메일이 포함되면 안 된다. 예를 들어, 이메일이 test@gmail.com일 경우 패스워드에 test가 포함되면 안 된다." 위 상황을 해결하기 위해 제가 생각한 로직은 다음과 같습니다. 컨트롤러 계층에서 유저 기본키로 유저의 이메일을 찾아 반환하는 서비스 계층 메서드를 호출한다. 반환된 이메일이 새로운 패스워드에 포함되는지 검증한다. 포함되지 않았다면 유저의 패스워드를 변경하는 서비스 계층 메서드에 유저의 기본키와 새로운 패스워드를 담아서 호출한다. 유저의 패스워드를 변경하는 서비스 계층 메서드에서는 전달받은 유저의 기본키로 유저의 패스워드를 변경한다. 이 때는 패스워드에 유저의 이메일이 포함되어 있는지 검증하지 않는다. 위 상황에서 이러한 로직으로 해결을 하는 것이 최선인지 의문이 듭니다. 이 방법이 틀린 것인지.. 더 좋은 방법이 있는지 가이드를 주시면 감사하겠습니다. :)
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
락 획득을 시도하는 순서에 대한 질문입니다.
DB락의 순서에 대해서 질문입니다. 세션1이 트랜잭션을 시작하고, 데이터를 변경하기 위해 update쿼리를 날리면 그 때 락을 획득하고, 획득했다면 실제로 쿼리가 수행되는 것인가요?? 그러니까 일단 데이터 변경 쿼리를 실행해야 락 획득을 시도하는 것인거죠?? 그래서 데이터 변경 구문을 날릴때가 아니고, 조회 시에도 락을 획득하고 싶다면 따로 select for update구문을 사용하는 것 맞나요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
오타 제보 및 질문 한가지 드립니다.
먼저 좋은 강의 제작에 감사드립니다. 3.트랜잭션 이해.pdf p.21 락4 락을 획득하기 위해 대기하던 세션2가 락을 확득한다. (확득이라고 써있네요) p.24에도 동일하게 오타가 존재합니다. 뻘질문 하나 드리겠습니다. 트랜잭션 매니저에서 getTransaction()으로 트랜잭션을 시작 한 경우 마지막에 commit/rollback을 수행해 트랜잭션을 닫아야 하는데요 만약 트랜잭션을 열어놓고 실제적으로 insert/update/delete 한 작업이 없다면 위의 2가지 중 하나를 호출하는것 말고 트랜잭션을 닫는 또다른 방법이 있을까요? status.clear() 뭐 이런식으로.... 아무것도 안했을때만 쓰는 방법 같은것 말입니다... 답변 부탁드리겠습니다. 감사합니다.