TIL 37

2022/11/08 TIL

JPA 프로그래밍 702 페이지까지 읽었다. 컬렉션과 부가기능 고급 주제와 성능 최적화 부분을 다 읽었고 트랜잭션과 락, 2차캐시 파트를 읽기 시작했다. 컬렉션과 부가기능 컬렉션의 경우 셋과 리스트를 이용하는 방법과 이 둘을 사용할때 hashcode와 equals 메쏘드가 어느 시점에 사용되는지 배웠다. Order by와 Order column에 대해서 배웠고, 오더 컬럼이 프로그램쪽에서 컨트롤하는 방법, 오더 바이가 데이터베이스의 order by를 사용하는 것이라는 것을 배웠다. Converter는 typeorm에서 transformer 와 유사한 역할을 하는데, 객체에 저장한 값을 다른 값이나 형태로 매핑하여 쓸수 있게 해주는 방법이다. 데이터들을 저장할때에는 이벤트들이 발생하는데, 영속화하기전,후,..

TIL 2022.11.09

2022/11/01 TIL

JPA 프로그래밍 610페이지 까지 읽었다. 스프링 데이터 JPA 부분을 마무리하고 웹 어플리케이션과 영속성 관리를 다 읽었다. 그리고 컬렉션 타입쪽에 들어가기 시작했다. 웹 어플리케이션과 영속성 관리 쪽에서 궁금한 부분이 많았는데 이번에 많은 부분을 해소할 수 있어서 좋았다. 트랜잭션이 같으면 같은 영속성 컨텍스트가 적용되는 부분과 다르면 다른 영속성을 사용한다는것, 준 영속상태와 지연로딩으로 인해서 발생하는 지연로딩 문제나, 미리 로딩해주기 위해서 발생하는 노고 등에 대해서 배웠다. 그리고 이를 해결하기 위해서 OSIV를 사용한다는 것과 OSIV에서 발생할 수 있는 문제들을 배웠다. ** OSIV의 초기 모델인 요청당 트랜젝션의 경우 컨트롤러단에서 정보를 수정할 경우 영속성 컨텍스트의 변경감지로 인해..

TIL 2022.11.01

2022/10/31 TIL

JPA 프로그래밍 560페이지 까지 읽었다. 중간에 스프링 웹 서비스 개발하는 부분은 이미 김영한님의 강의영상을 통해서 구현해본 부분이라서 넘어갔다. 공부한 내용은 영속성 컨텍스트와 JPQL, 그리고 스프링 데이터 JPA 관련된 내용을 배웠다. 스프링 데이터 JPA에서 네임드 쿼리를 이용하여 JPQL을 사용한다는 부분이 기억에 남았다. C레벨의 탄생 도서관에서 눈에 띄어서 집었다. C레벨에 도달한 사람들은 어떤 고민을 할까?이런 생각이 들었는데, 이 책에서 이야기하는 내용은 C레벨에 도달했을때 미션을 성공적으로 수행하는 방법에 대해서 알려주는 책인듯 하다. 오늘 70페이지까지 읽었고, 기억에 남는 부분은 입사전에 회사 내부에 대한 정보를 얻는 부분이 기억에 남았다. 전에 모젯에서 근무했을때 승기님이 CO..

TIL 2022.10.31

2022/10/29 TIL

JPA 프로그래밍 460페이지 까지 읽었다. Criteria와 queryDsl, nativeSql을 사용하는 방법에 대해서 배웠다. queryDsl이 Criteria보다 쓰기 간편하다고 느껴졌다. 그리고 벌크 수정을 하는 경우 영속성 컨텍스트를 통해서 업데이트하는 것이 아니라 바로 sql을 실행하는 것이므로 이때 영속성이 깨지는 문제를 해결하는 팁도 몇가지 배웠다. 이 방법은 세가지가 기억에 남았는데 첫 번째는 가장 먼저 벌크연산을 하고 이 후 영속성 컨텍스트를 사용하는 것이다. 두 번째는 벌크 연산을 한 이후 엔티티 매니저를 통해서 엔티티를 리프레시(em.refresh()) 해주는 것이다. 이러면 데이터베이스에서 정보를 다시 조회해온다. 세 번째는 벌크 연산 이후 영속성 컨텍스트를 초기화하는 것이다. ..

TIL 2022.10.29

2022/10/28 TIL

JPA 프로그래밍 409 페이지 까지 읽었다. JPQL과 JPQL의 조인방법들, 서브쿼리 방법, 경로표현식, 내부식, 그리고 Criteria 사용법을 알게 되었다. 패치조인이 무엇인지 이제야 알 수 있게 되었다. TypeOrm에서는 Relation을 통해서 풀거나 쿼리빌더로 해결하던 문제들을 이렇게 푸는구나 라는 생각을 하게 되었다. 그리고 JPQL이 객체에 대한 쿼리를 하는건 맞지만 query를 통해서 문제를 해결하는건 동일하지 않나? 이런 생각이 들었다. ORM을 사용해서 많은 문제를 쉽게 풀 수 있게 되었지만, 효율적인 프로그래밍을 위해서 쿼리를 만지는건 못 피하는건가 싶은 생각이 들었다. 그리고 queryDSL을 쓰게 되면 여타 언어들에서 사용하는 쿼리빌더나 엑티브레코드 암흑의 핵심 110페이지 ..

TIL 2022.10.29

2022/10/27 TIL

자바 표준 ORM 프레임워크 JPA 프로그래밍 359페이지까지 읽었다. 값타입과 JPQL 그리고 JPQL쿼리빌더에 대해서 알게 되었다. JPQL같은 경우는 죄다 직접 써야하나? 쿼리빌더같은게 있으면 좋을텐데, 이런 생각을 계속 했는데, 역시 누가 생각한건 다들 만드려고 하는 것 같다. 암흑의 핵심 조셉 콘래드의 암흑의 핵심을 읽기 시작했다. 57페이지까지 읽었다. 작가가 선상생활을 많이해서 해양소설을 위주로 글을 썼다고 하는데, 첫 장에서부터 묘사가 정밀했다. 마치 내가 템스 강에 와있는 듯한 기분이 들었다. 두께가 얇은데 아마 주말 안에 다 읽을 것 같다.

TIL 2022.10.27

2022/10/25 TIL

자바 ORM 표준 JPA 프로그래밍 309페이지 까지 읽었다. 고급 매핑 내용과 프록시와 연관관계 관련된 내용을 봤다. 고급 매핑쪽에서는 테이블의 상속 방식 세가지와 조인 테이블을 사용하는 방법과 여러 케이스를 들어 손자 클래스까지 존재하는 경우들을 보여줬다. 프록시와 연관관계쪽에서는 JPA가 지연로딩을 위해서 Proxy패턴을 사용하는 경우가 많다는 정보를 알게 되었다. 허클베리 핀의 모험 다 읽었다. 결국 핀은 톰을 만나고, 짐은 왓슨 아줌마의 유언대로 자유로워지며 이야기의 결말이 난다. 역시 오디세이아 같은 엔딩을 맞이하였다. 클리셰였지만 나는 재미있었다. 원래 다양한 인물 나오는거 안 좋아하는데 허클베리 핀의 모험에서는 인물들에 집중하고 입체적으로 보여줘서 실체감 있게 읽을 수 있었다.

TIL 2022.10.26

2022/10/24 TIL

자바 표준 ORM 프레임워크 JPA 프로그래밍 252페이지까지 읽었다. 연관관계 매핑과 고급매핑 내용을 읽었다. 기억에 남는 것은 복합키를 사용하기 위해서는 클래스를 새로 만들어서 사용해줘야한다는 점과 테이블간의 상속을 한가지 이상의 전략으로 풀어나갈 수 있다는 점이다. 이점을 보고 TypeOrm도 여러 테이블 전략을 지원해주나? 했는데, TypeOrm에서는 클래스를 상속받아서 사용하는 table per class를 구현해서 사용하는 방법과 싱글테이블 전략을 지원해주는 것을 알게 되었다. 사실 table per class는 typeorm이 아니라 Typescript의 상속을 받아 구현한 것이지만, 이렇게 사용할 수 있게 된 것을 알아서 좋다. 그리고 복합키를 위한 클래스라면 복합키간의 순서는 어떻게 정하..

TIL 2022.10.25

2022/10/23 TIL

자바 표준 ORM 프레임워크 JPA 프로그래밍 JPA를 깊게 파야할 필요가 생겨서 읽기 시작했다. 201페이지까지 읽었다. 세팅과 소개파트는 저자의 다른 강의를 통해서 배웠기 때문에 훑어보면서 넘길 수 있었다. 다른 내용들은 사실 ORM에서 다 마주치는 내용이었고, 영속성 컨텍스트가 기억에 남는 부분이었다. 영속성 컨텍스트가 1차캐시를 이용하기 때문에 데이터베이스와 통신하지 않아도 컨텍스트에서 관리되고 있는 것을 빠르게 조회할 수 있다는 점. 그리고 쓰기지연 SQL 저장소를 이용해서 성능 개선을 한다는 점. 엔티티의 생명주기에 4가지 상태가 존재하고, 이는 비영속, 준영속, 영속, 삭제 이렇게 4가지가 있는 것, 그리고 생명주기가 변경되는 조건등을 배웠다. 생명주기가 변경되는 조건은 책의 목차를 떠올려보..

TIL 2022.10.24