본문 바로가기
728x90

전체 글125

OSIV 해결하기 문제점 Constroller에서 Lazy Loading이 실패하고 no Session 에러 발생 문제진단 현재 open in view 옵션은 기본값인 true이다 즉, 원래라면 open in view가 동작하는 것이 맞다 하지만 실제로 영속석 컨텍스트가 열리는 곳은 @Transactional 어노테이션이 붙은 곳 부터 시작한다 1. 컨트롤러 시작 2. 영속성 컨텍스트(=세션) 오픈 3. 트랜잭션 시작 4. 서비스 진입 5. 서비스 반환 전 6. 영속성 컨텍스트(=세션) 닫음 7. 컨트롤러 재진입 a.a.b.d.conversion.InspectionFeedbackController [findByInspector] - =====>> 검수 컨트롤러 시작 org.hibernate.internal.SessionI.. 2022. 1. 26.
자바스크립트로 만들어 보는 리액트 프레임워크 - 3. hook을 이용한 상태처리 이번 시간에는 hook을 이용하여 컴포넌트의 상태를 관리해보도록 하겠습니다. 자바스크립트로 만들어 보는 리액트 프레임워크 - 1. 기본 컨셉 자바스크립트로 만들어 보는 리액트 프레임워크 - 2. jsx 자바스크립트로 만들어 보는 리액트 프레임워크 - 3. hook 자바스크립트로 만들어 보는 리액트 프레임워크 - 4. redux 자바스크립트로 만들어 보는 리액트 프레임워크 - 5. thunk 모든 소스 코드는 github를 참고해주시기 바랍니다 hook hook은 함수형 컴포넌트에서 상태관리나 라이프사이클을 제어하도록 리액트에서 제공하는 함수입니다. 예를들어 useState의 경우 함수형 컴포넌트 내에서 컴포넌트의 상태를 변경시킬 수 있습니다 function App() { const [name, setNa.. 2021. 6. 21.
자바스크립트로 만들어 보는 리액트 프레임워크 - 2. jsx로 화면 렌더링 이제 jsx를 이용하여 리액트와 비슷한 형태의 프레임워크를 만들어 보겠습니다. 자바스크립트로 만들어 보는 리액트 프레임워크 - 1. 기본 컨셉 자바스크립트로 만들어 보는 리액트 프레임워크 - 2. jsx 자바스크립트로 만들어 보는 리액트 프레임워크 - 3. hook 자바스크립트로 만들어 보는 리액트 프레임워크 - 4. redux 자바스크립트로 만들어 보는 리액트 프레임워크 - 5. thunk 모든 소스 코드는 github를 참고해주시기 바랍니다 jsx jsx는 Javascript XML의 약자로 자바스크립트로 html 태그와 같은 마크업 형태를 표현할 수 있습니다. function App() { return ( 안녕하세요 ) } 하지만 우리는 앞서 element만을 이용하여 충분히 화면에 잘 표현을 할 .. 2021. 6. 21.
자바스크립트로 만들어 보는 리액트 프레임워크 - 1. 기본 컨셉 자바스크립트로 리액트 프레임워크를 만들어 보는 시간을 가졌습니다. 실제 리액트 프레임워크 동작과정에서 많은 부분이 생략되어 있습니다. 프레임워크의 동작 과정의 큰 그림만 봐주시기 바랍니다. 자바스크립트로 만들어 보는 리액트 프레임워크 - 1. 기본 컨셉 자바스크립트로 만들어 보는 리액트 프레임워크 - 2. jsx 자바스크립트로 만들어 보는 리액트 프레임워크 - 3. hook 자바스크립트로 만들어 보는 리액트 프레임워크 - 4. redux 자바스크립트로 만들어 보는 리액트 프레임워크 - 5. thunk 모든 소스 코드는 github를 참고해주시기 바랍니다 element 리액트는 element라는 단위로 dom을 생성합니다. element를 간단히 설명하면 태그의 정보를 담은 객체입니다. 리액트는 eleme.. 2021. 6. 20.
MySQL의 Like 조회 MySQL에서 like 조회는 성능 때문에 잘 사용하지 않는다 현재 개발중인 토이 프로젝트에서 MVP 개발을 위해 검색 API는 추상화하기로 했다. 나중에 시간이 되면 Elasticsearch를 사용하여 검색 API를 마이그레이션 하도록 하고 현재는 간단하게 MySQL의 조회 기능만 사용하도록 할 예정이다. Like의 성능 다시 본론으로 돌아가서 왜 like 조회는 성능이 잘 나오지 않는다고 주변에서 말할까? 그것은 바로 %(wild card)가 단어 앞에 붙었을 때 full table scan을 하기 때문이다 MySQL은 단어의 첫번째 문자열로 인덱싱을 하게 된다. B-Tree 인덱스를 활용한 검색은 100% 일치 혹은 값의 *앞부분만 일치하는 경우에 사용할 수 있다. 예를들어 WINAND라는 단어를 .. 2021. 4. 30.
[Elasticsearch] 조회 성능 개선 팁 최근에 quadkey를 기반으로 한 poi 조회 API의 응답 속도가 느려져 elasticsearch의 조회 성능을 개선하면서 느낀 몇가지 팁을 공유해볼까 합니다. timeout QueryDsl로 데이터를 조회할 경우 timeout이라는 옵션을 요청에서 보낼 수 있습니다. timeout을 3초로 설정했을 때, 결과를 받는 시간이 3초가 넘어버리면 해당 결과를 받을 수 없게됩니다. 이는 쿼리의 병목현상을 막을 수가 있습니다. Search latency가 느려지는 경우 성능에 영향을 미칠 수 있기 때문입니다. Search Latency 일라스틱 서치의 클러스터에 전송된 요청은 큐에 쌓이게 됩니다. 이 때, 큐에 요청이 쌓여 지연이 발생하는 것을 Latency라고 부릅니다 대기 시간이 길어질 수록 검색 처리 .. 2021. 4. 7.
728x90