본문 바로가기

반응형
SMALL

전체 글

(89)
[과제] JPA 게시판 과제 후기 8주차에는 강의로 JPA를 배우기 시작했다. 우선 전체적으로 느낀 점은 익숙하지 않은데 그래서 신기하고 재밌었다. 기존 JDBC에서 직접 쿼리를 작성해야 하고 결과를 받아와야 하던 방식과는 다르게, jpaRepository 구현체를 구현하고 메서드 이름만으로 원하는 데이터를 수정하고 조회해올 수 있었다. 강의에서 들었던 것처럼 예전에 쿼리 설계에 사용하던 시간을 조금이라도 객체적인 방식으로 고안해볼 수 있었던 점이 가장 매력적이었다고 생각했다. 제출 Pull Request [3기-C 김소현] JPA 게시판 과제 제출합니다! by thguss · Pull Request #170 · prgrms-be-devcourse/springboot-board- 📌 과제 설명 JPA를 이용하여 User 및 Post 엔티..
[날카로운 질문하는 머쓱이] 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..

반응형
LIST