목차 개요 JPA에서 중요한 주제 중 하나인 FetchType에 대해 이야기해보려고 한다. FetchType은 데이터베이스에서 엔티티를 조회할 때 연관된 엔티티를 언제 로드할 것인지 결정하는 로딩 전략으로 EAGER와 LAZY라는 두 가지 전략이 있는데 각 전략에 대해서 예시를 통해 어떤 환경에 쓰여야하는지 확인해보자 FetchType.EAGER EAGER 로딩 전략은 한 엔티티가 로드될 때 관련된 모든 엔티티를 함께 로드하는 방식 사용자의 역할(User Role)과 같이 사용자 정보를 불러올 때마다 빈번하게 사용하는 정보의 경우 유용하게 사용됩니다. 예를 들어, 대부분의 웹 서비스에서는 일반 사용자와 관리자의 권한 차이로 인해 사용자가 수행할 수 있는 동작이 달라진다. 이런 경우, 사용자가 로그인하거나..
목차 개요 본격적으로 코드 작성을 해보자 Entity - 유저 클래스 카피를 위한 코드링크 GitHub - Apptive2022-1/apptive-18th-team4-backend: Customized services with the information & schedules and Finding nearest empt Customized services with the information & schedules and Finding nearest empty office location to user - GitHub - Apptive2022-1/apptive-18th-team4-backend: Customized services with the informat... github.com 정보전달만의 기능을..
목차 개요 프로젝트를 진행하던 도중 JPA를 사용하여 Java 엔티티 클래스를 구성하고 있었는데 그중 @Column 애노테이션을 이용하여 기본값(default value) 설정을 진행하였지만 새 인스턴스를 생성하고 DB 내부를 확인해보니 설정하였던 디폴트값이 적용되지 않았기에 글을 써보게 되었다. 문제 상세분석 'FavoriteDepartment' 라는 클래스에서 회원들이 즐겨찾기한 기관 및 학과를 저장할때 저장 시에 팝업알림의 유무를 특정 필드isAlert을 통해 구현하고자 했다. 따라서 애너테이션을 이용해 기본값으로 `true`를 갖도록 설정하려고 했다. 이러한 설정을 통해 기대했던 동작은 FavoriteDepartment 인스턴스를 생성하면서 isAlert 필드가 자동적으로 true로 설정되는 것이..
목차 개요 카카오테크캠퍼스 백엔드 과정 주차 관련 공부내용 멀티스레딩 환경 정의 하나의 프로세스 내에서 여러 개의 스레드가 동시에 작동하는 시스템을 의미한다. 각 스레드는 독립적인 작업을 수행하며, 동일한 메모리 공간을 공유한다. 이를 통해 다양한 작업을 동시에 처리하고, 전체적인 시스템의 효율성을 향상시킬 수 있다. 동시성 ; 하나의 코드가 여러번 실행될 수 있다. 예를 들어, 여러 스레드가 동일한 함수에 액세스하고 실행할 수 있다. 이때, 각 스레드는 해당 함수를 독립적으로 실행하며, 서로에게 영향을 주지 않는다. 동시성환경 이슈 비결정적인 행동 스레드 스케줄링은 동일한 환경과 조건에서도 다른 결과가 발생할 수 있다. 테스트의 어려움 동시성 문제는 일반적으로 멀티스레드 환경에서만 발생하기 때문에, 로..
목차 개요 카카오테크캠퍼스 백엔드 과정 주차 관련 공부내용 인덱싱을 하는이유? 데이터베이스에서 데이터를 빠르게 조회하기 위해서이다. 인덱스는 테이블의 특정 열에 대한 포인터 목록이며, 이 목록을 사용하여 데이터베이스는 특정 값을 가진 행을 효과적으로 찾을 수있기 때문이다. 결국 이 효과적으로 찾을수 있다는 건 데이터 탐색 범위를 최소화하여 검색 성능을 향상시키는 것이라고 볼수 있다. 인덱싱의 장점 속도 향상 - 인덱스를 사용하면 특정 행을 찾기 위해 테이블의 모든 행을 스캔할 필요가 없기 때문에 데이터 검색 속도가 향상된다. 쿼리 최적화 - 인덱스가 있으면 DBMS 시스템들은 대부분의 쿼리를 더 빠르게 처리할 수 있게 된다. 정렬된 데이터 접근 - 인덱스는 일반적으로 특정 열의 값에 따라 정렬되므로, 정..
목차 개요 카카오테크캠퍼스 백엔드 과정 주차 관련 공부내용 MySQL에서 제공하는 버퍼풀 래퍼런스를 참고하여 작성하였다. MySQL :: MySQL 8.0 Reference Manual :: 15.5.1 Buffer Pool MySQL :: MySQL 8.0 Reference Manual :: 15.5.1 Buffer Pool The buffer pool is an area in main memory where InnoDB caches table and index data as it is accessed. The buffer pool permits frequently used data to be accessed directly from memory, which speeds up processing. On..