본문 바로가기

분류 전체보기85

[JPA] batchsize JPA을 사용할때 n+1문제를 극복하고자 지연로딩(FetchType.LAZY)를 사용하는데 이 역시 프록시를 초기화 실제 엔티티로 초기화 해야 하는 상황이라면 n+1문제가 발생하는건 마찬가지이다. n+1문제 해결과 조회 성능 향상의 목적으로 사용하는 것이 BatchSize이다 일반적으로 어노테이션, 외부설정파일을 통해 설정하며 연관관계의 초기화 대상 엔티티의 개수만큼 조회 쿼리가 발생하는 상황에 설정한 일정량의 데이터를 한 번에 로딩한다.@Entity @Table("member")@Getter @Setter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Member { @Id @Column(name = "member_id".. 2024. 5. 1.
GCP 프리티어(무료) 사용 CI/CD, 서버공부, 사이드프로젝트 배포 등 여러 가지 이유로 서버가 필요했습니다. AWS에서 1년간 프리티어 서버를 제공한다고 해서 알아보다 보니 진정한 무료 서버라기 보단 무료로 사용하려면 많은 제약조건이 있어 구글 클라우드 플랫폼(GCP)에서 제공하는 프리티어 서버를 사용하기로 했습니다. GCP도 최초 가입 시에 300$의 크레딧을 제공하고 1년 이내에 해당 크레딧을 사용하여 자원들을 사용가능했습니다. 저는 이미 사용이력이 있어 바로 프리티어 서버를 제공받기로 했습니다. 무료서버 조건 구글 클라우드 문서를 보면 무료로 사용할 수 있는 조건을 확인할 수 있습니다. AWS / EC2 == GCP / Compute Engine 입니다. https://cloud.google.com/free/docs/fr.. 2023. 9. 4.
[SPRING] @Async 동작하지 않는 상황 스프링에서 편리하게 비동기 기능을 사용하기 위해 @Async 애노테이션을 사용합니다. 이전에 기능변경으로 비동기 코드를 추가 했으나 적용이 되지 않았던 상황이 있었고 원인은 @Async의 동작방식을 정확히 알지 못하고 사용해서 발생한 상황이였습니다. 상황 예시 @Slf4j @Component public class AsyncClass { @Async public void outerMethod() { log.info("outerMethod START"); innerMethod(); log.info("outerMethod END"); } @Async public void innerMethod() { log.info("innerMethod START"); log.info("innerMethod END"); }.. 2023. 8. 25.
[JAVA] Comparable vs Comparator Comparable, Comparator는 정렬 인터페이스로 List의 정렬이나 클래스의 정렬조건을 설정할 때 등 정렬과 관련된 기능을 수행할때 사용할 수 있습니다. 둘은 정렬기준을 설정한다는 공통점이 있고 사용법에는 차이가 있는데 Comparable, Comparator의 차이점과 사용방법에 대해 작성해 볼까 합니다. 시작하기에 앞서 의문점이 하나 있었는데요 @FunctionalInterface 두 인터페이스 모두 함수형 인터페이스로 알고 있었는데 어째서 인지 Comparable에는 @FunctionalInterface 애노테이션이 보이지 않습니다. Comparable은 compareTo()추상메소드 오직 하나만을 가지고 있는데 말입니다. 그렇다면 @FunctionalInterface 애노테이션이 없으.. 2023. 7. 31.