Q&A
조인쿼리에서의 인덱스 설계
안녕하세요. hee duk kim님 조인이라는 것이 FK를 기준으로 연결되기 때문에 해당 컬럼에는 기본적으로 인덱스가 필요합니다. 조인과 관련된 최적화는 실전 데이터베이스 성능 최적화에서 다룰 예정입니다. 감사합니다.
- Likes
- 0
- Comments
- 2
- Viewcount
- 17
Q&A
안녕하세요. hee duk kim님 조인이라는 것이 FK를 기준으로 연결되기 때문에 해당 컬럼에는 기본적으로 인덱스가 필요합니다. 조인과 관련된 최적화는 실전 데이터베이스 성능 최적화에서 다룰 예정입니다. 감사합니다.
Q&A
안녕하세요. 인프님 최신 버전으로 받으셔도 괜찮습니다^^
Q&A
안녕하세요. 파부님 결론부터 말씀드리면, SingletonService 객체는 “JVM이 실행되는 순간” 생성되는 것이 아니라, SingletonService 클래스가 처음 실제로 사용되어 초기화될 때 생성됩니다. 예를 들어 public class Main { public static void main(String[] args) { System.out.println("main 시작"); } } 이 경우 JVM은 Main 클래스는 사용하지만, SingletonService 클래스는 아직 사용할 필요가 없습니다. 그래서 SingletonService 클래스가 로딩/초기화되지 않고, 당연히 생성자도 호출되지 않습니다. 감사합니다.
Q&A
터프남님 감사합니다 :) 다음 패치에 반영할게요!
Q&A
안녕하세요. 김진규님 생각하신 내용이 맞습니다 :) 감사합니다.
Q&A
안녕하세요. 마성호님 Configuration도 프록시 대상에 추가되는 문제가 있는 듯 합니다. 다음 코드를 참고해서 Configuration을 제외하는 코드를 적용해주세요 🙂 감사합니다. package hello.proxy.app.config.v4_postprocessor.postprocessor; import lombok.extern.slf4j.Slf4j; import org.jspecify.annotations.Nullable; import org.springframework.aop.Advisor; import org.springframework.aop.framework.ProxyFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.util.ClassUtils; @Slf4j public class PackageLogTracePostProcessor implements BeanPostProcessor { private final String basePackage; private final Advisor advisor; public PackageLogTracePostProcessor(String basePackage, Advisor advisor) { this.basePackage = basePackage; this.advisor = advisor; } @Override public @Nullable Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { log.info("param beanName={} bean={}", beanName, bean.getClass()); // 프록시 대상 여부 체크 // 프록시 적용 대상이 아니면 원본 그대로 진행 String packageName = bean.getClass().getPackageName(); if (!packageName.startsWith(basePackage)) { return bean; } // 설정 클래스(@Configuration)는 프록시 대상에서 제외 // 설정 클래스를 프록시로 감싸면 @Bean 팩토리 메서드 호출이 깨진다 // (CGLIB로 강화된 설정 클래스라 getUserClass로 원본 클래스를 얻어 어노테이션을 검사) Class userClass = ClassUtils.getUserClass(bean.getClass()); if (AnnotationUtils.findAnnotation(userClass, Configuration.class) != null) { return bean; } // 프록시 대상이면 프록시를 만들어서 반환 ProxyFactory proxyFactory = new ProxyFactory(bean); proxyFactory.addAdvisor(advisor); Object proxy = proxyFactory.getProxy(); log.info("create proxy: target={} proxy={}", bean.getClass(), proxy.getClass()); return proxy; } }
Q&A
안녕하세요. obi님 우선 제 생각에 비즈니스 정책을 단순하게 변경하는게 가장 좋을 것 같아요. 하지만 그게 어려운 상황이라면, 중간 테이블을 하나 만들어서 해결하는 것이 필요합니다. 예를 들어서 users -> subscribers -> subscriptions 구조를 만드는 것이지요. users: 로그인 계정 subscribers: 구독 권리를 가진 주체 subscriptions: 현재 구독 정보 users는 탈퇴 후 재가입하면 새로 생길 수 있으니, 구독이 직접 바라보면 안 됩니다. 대신 구독은 오래 유지되는 subscriber_id를 바라보게 합니다. 그래서 재가입 시에는 새 users 로우를 만들고, 기존 subscriber_id에 다시 연결합니다. 즉, 핵심은 구독의 FK를 user_id가 아니라 subscriber_id로 바꾸는 것입니다. 감사합니다.
Q&A
안녕하세요. 호준님 이 로드맵은 이미 실무에 있는 주니어 개발자 분들도 많이 듣고 있는 로드맵이어서, 모든 과정을 충분히 소화한다면 실무에 필요한 개발자가 될 수 있다 생각합니다. 취업을 기준으로 생각하면다면 생각하신 대로 진행하시되 다음 내용을 참고해서 전체 로드맵을 진행하시는 것을 추천드립니다. 전체 로드맵은 다음을 참고해주세요. https://youtu.be/8hsFZg-i6wo?si=pIfnDiSRvja5LkvS 감사합니다 🙂
Q&A
안녕하세요. Choi님 이런 부분을 한번에 다 완벽하게 답을 구하는 것은 쉽지 않습니다. 많은 분들이 권장하는 방법은 우선 처음부터 끝까지 강의를 다 듣고, 그 다음에 한번 정도 복습하면서 정리하는 것입니다. (사실 어느정도 익숙해짐이 필요합니다.) 도움이 되시길 바래요 🙂
Q&A
안녕하세요. 마성호님 도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다. 실제 동작하는 전체 프로젝트를 ZIP 파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요. 구글 드라이브 업로드 방법은 다음을 참고해주세요. https://bit.ly/3fX6ygx 주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요 추가로 다음 내용도 코멘트 부탁드립니다. 1. 문제 영역을 실행할 수 있는 방법 2. 문제가 어떻게 나타나는지에 대한 상세한 설명 (오류 화면, 오류 로그 포함) 링크: 공식 서포터즈 링크: 자주하는 질문 감사합니다.