분류 전체보기 (104) 썸네일형 리스트형 [날카로운 질문하는 머쓱이] N+1 문제 오늘의 질문 빠밤 >~< N+1 문제 ..? 처음 들어봤다! N+1 문제 JPA 연관 관계에서 발생하는 이슈로, 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 개수(n)만큼 연관 관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 되는 것 예를 들어, 주문 내역에서 구매 상품(연관 관계가 설정된 엔티티)들을 조회할 때, 구매 상품 수만큼 조회 쿼리가 발생한다. 발생 이유 JPA는 메서드 이름을 분석하고 JPQL을 생성하여 실행된다.(JPQL은 SQL을 추상화 한 객체지향 쿼리 언어로써 특정 SQL에 종속되지 않고 엔티티 객체와 필드 이름을 가지고 쿼리를 실행한다.) 조회 쿼리(예를 들면 findAll())를 날리면 연관 관계를 무시하고, 해당 엔티티만을 조회하는 쿼리를 실행한다. 그렇기 때문.. [우당탕탕 개발일지] 로그인 가능한 사용자 계정 추가하기 & PasswordEncoder 우당탕탕 강의를 들으며 코드를 작성해가는 중입니다 ㅇㅁㅇ ..!! 오늘의 문제 발생 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("user").password("{noop}user123").roles("USER") .and() .withUser("admin").password("{noop}admin123").roles("ADMIN") ; } 어제와 다름 없이 사용 중지된 Adapter에서 오버라이딩 하여 inMemoryAuthentication() 이라는 메서드를 사용하여 사용자와 관리자 계정을 추가했다. 그래서 대체 방.. [우당탕탕 개발일지] WebSecurityConfigurerAdapter 지원 불가 이번 주부터 Spring Security 관련 강의 듣기를 시작했다. ((두근두근)) 어려움의 프레임으로 돌돌 쌓인 보안 관련 친구라 설렘 반 두려움 반 입니다! 그리고 설정에서부터 막혔다. ㅇㅁㅇ !! 강사님은 WebSecurityConfigurerAdapter을 상속해서 쓰셨는데, 찾아보니 지원 중지 됐다고 한다. (WHAT ?!) 2020년까지도 멀쩡했던 친구 같은데,,, 왜,,, ㅠㅅㅠ 해결방법은 따로 Bean을 등록해서 사용해주는 것이었다. 복잡시러워라 ㅇㅅㅇ https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter Spring Security without the WebSecurityCon.. [우당탕탕 개발일지] JPA Repository 오류, Not a managed type: class java.lang.Object java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@31aa9 b01 testClass = com.example.springbootpart4.domain.order.OrderRepositoryTest, locations = [], classes = [com .example.springbootpart4.SpringBootPart4Application], contextInitializerClasses = [], activeProfiles = [], proper tySourceLocations = [], propertySourceProperties = ["org.springfram.. [발표 스터디] 옵티마이저 (Optimizer) 학습, 그리고 발표 후기 🧐 안녕하세요. 데브코스 발표 스터디에서 옵티아미저라는 주제로 발표를 맡게 된 김소현입니다. 하하하. 데브코스에서 속해있는 팀에서는 발표 스터디를 진행한다 >_0 당시 아프고.. 바빠서.. 슬랙 확인을 늦게 한 나! 남은 주제를 가져가게 되었는데 그게 바로 옵티마이저였다-! 완전 처음 들어보는 용어 @! 하지만 오히려 조아 ~!~! 옵티마이저 (Optimizer) - 가장 효율적인 방법으로 SQL 쿼리를 수행 할 최적의 처리 경로를 생성하는 DBMS 내부의 핵심 엔진 - 컴퓨터의 CPU 역할 - 사용자가 구조화 된 질의(SQL)로 결과 집합을 요구하면, 이를 생성하는 데 필요한 처리 경로를 계획한다. ( = 실행 계획) - 실행 계획을 세우고, 통계 정보를 활용하여 각 예상 비용을 산정 및 비교해서 최고 효.. [TIL] 기본키 자동 생성 전략 (GenerationType) 최근 프로그래머스 데브코스에서 JPA를 배우고 있다. Entity 및 Column을 생성하는 과정에서 기본키(PK)를 자동 생성해주는 여러가지 전략이 있었다. 어떤 전략들이 있고, 각각 어떤 경우에 쓰는 지 궁금해져서 알아보고 기록을 남긴다 ^~^ IDENTITY @Id @GeneratedValue(value = GenerationType.IDENTITY) private Long id; 기본키 생성을 데이터베이스에 위임한다. 즉, id 값을 넘겨주지 않아도(null) DB에서 자동으로 AUTO_INCREMENT 해준다. entityManager.persistt() 시점에 즉시 INSERT SQL을 실행하고 DB에서 식별자를 조회한다. (보통 commit 시점에 INSERT 실행) SEQUANCE @Id .. [TIL] 영속성 컨텍스트 (Persistence Context) 오늘 강의에서는 영속성 컨텍스트의 개념과 구조, 기능들을 배울 수 있었다. 구조를 이해한 후, 기능에 대한 설명을 들으니 DB에 어떻게 접근하고 데이터를 어떻게 가져오는지 더 잘 알 수 있어서 좋았다. 먼저, Entity와 EntityManager에 대해 알 수 있었다. 지난 시간에 Bean으로 등록하면서 사용한 몇 패키지들을 몰라서 찾아 공부하면서도 모르는 부분이 모호하게 남아있었는데, 오늘 강의에서 정확히 알고 넘어갈 수 있어서 좋았다. Entity: RDB의 테이블과 매핑되는 객체 EntityManagerFactory: EntityManager을 생산하는 공장으로, Thread safe 해서 여러 Bean이 접근해도 안전하다. EntityManager: CRUD와 같은 모든 트랜잭션을 처리하고, T.. [날카로운 질문하는 머쓱이] 동기 방식과 비동기 방식 분명 동기와 비동기를 공부했었고, 머릿속으로는 알고 있는데 바로 글을 쓰기에는 어려웠다. 갑자기 질문이 나와도 대답할 수 있도록 반복적으로 공부해야겠다고 생각했다. 동기 (Synchronous) 작업 요청한 후, 작업의 결과가 나올 때까지 기다린 후 처리하는 방식이다. 특정 입출력 작업을 하기 위한 준비가 되었는지에 집중하고, 이벤트가 발생하면 그에 따른 적합한 처리를 한다. - 순차적으로 처리하면서 내려간다. - 비동기 방식에 비해 결과 값이 느리다. - 디버깅이 쉽다. 비동기 (Asynchronous) 작업 요청 후 다른 작업을 하다가 해당 작업이 완료되면 그에 따른 작업을 처리하는 방식이다. - 여러 로직이 동시에 처리된다. - 동기 방식에 비해 결과 값이 매우 빠르게 나타난다. - 다른 프로세스의.. 이전 1 ··· 8 9 10 11 12 13 다음