JPA 활용 - 지연 로딩과 조회 성능 최적화
·
Back-End/JPA
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의 스프링 부트와 JPA를 활용해서 API를 개발합니다. 그리고 JPA 극한의 성능 최적화 방법을 학습할 수 있습니다., 스프링 부트, 실무에서 잘 쓰고 싶다면? 복잡한 문제까지 해결하는 힘을 길러보세요 www.inflearn.com 간단한 주문 조회 V1 - 엔티티 직접 노출 @GetMapping("/api/v1/simple-orders") public List ordersV1() { List all = orderRepository.findAllByString(new OrderSearch()); return all; } 문제점 - 무한루..
프로그래머스 Level2 - 삼각달팽이
·
알고리즘
문제 풀이1 - 2차원 배열에 값을 담기 해당 문제에서는 삼각형을 표현 해야하는데, 이는 n x n의 2차원 배열로 표현할 수 있습니다. 달팽이 형태를 채우는것은 2차원 배열에서 아래 → 오른쪽 → 왼쪽으로 진행하면서 값을 채워나가게 됩니다. 문제풀이 흐름 n x n 2차원 배열을 선언한다. 현재 위치 (0,0) 에서부터 방향에 따라 이동할 수 없을 때까지 숫자를 채운다. 아래로 이동 → 오른쪽으로 이동 → 왼쪽위로 이동 채워진 숫자를 차례대로 1차원 배열에 옮겨서 반환한다. 1. n x n 2차원 배열 선언 int[][] triangle = new int[n][n]; int v = 1; v변수는 채워넣은 값으로 1씩 증가할 값입니다. 2. 현재위치를 (0, 0)으로 초기화 int x = 0; int y..
프로그래머스 Level2 자바 - 교점에 별 만들기
·
알고리즘
문제 https://school.programmers.co.kr/learn/courses/30/lessons/87377?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드작성 해당 문제는 좌표를 표현해야 하므로 좌표를 나타내는 클래스를 우선 생성해 줍니다. private static class Point{ public final long x, y; private Point(long x, long y){ this.x = x; this.y = y; }; } x,y 좌표는 데이터를 나타내 주므로 final을 이용해서 불변성을 갖게 하고..
JPA - 즉시 로딩과 지연 로딩
·
Back-End/JPA
지연 로딩과 즉시 로딩 즉시 로딩 엔티티를 조회할 때, 연관된 엔티티도 같이 조회 → 가능하면 조인 쿼리를 사용해서 쿼리한번만 사용 em.find(Member.class, “member1”) 호출시, 회원 엔티티와 연관된 팀 엔티티도 함께 호출됨 설정 방법 : @ManyToOne(fetch = FetchType.EAGER) 지연 로딩 연관된 엔티티를 실제 사용할 때 조회 → 프록시 객체 사용 member.getTeam().getName() 처럼 조회한 팀 엔티티를 실제 사용하는 시점에 SQL이 호출되어 팀 엔티티를 조회 설정 방법 : @ManyToOne(fetch = FetchType.LAZY) 지연로딩을 이용한 프록시 조회 지연 로딩 설정 @Entity public class Member @Id @Ge..
JPA - 프록시란?
·
Back-End/JPA
JPA에서의 프록시 JPA에서 엔티티를 조회할 때, EntityManager.find() 를 이용해서 조회하게 되는데, 만약 해당 엔티티가 영속성 컨텍스트에 존재하지 않으면, 데이터베이스에 조회를 요청하게 된다. 엔티티를 실제로 사용하는 시점까지 데이터베이스 조회를 미루고 싶다면, EntityManager.getReference() 메소드를 사용하면 된다. 해당 메서드는 DB를 조회하지않고, 실제 엔티티 객체를 생성하지도 않는데, 데이터 베이스 접근을 위한 프록시 객체를 반환해준다. 프록시의 사용 프록시 클래스는 실제 클래스를 상속 받아서 만들어지므로 진짜 객체인지, 프록시 객체인지 구분하지 않고 사용하면 된다. 프록시 객체는 실제 객체의 참조(target)을 보관 프록시객체는 실제 객체의 메소드를 호출..
JPA - @MappedSuperclass, BaseEntity란?
·
Back-End/JPA
@MappedSuperclass 공통 매핑 정보가 필요할 때 사용한다. 주로 사용하는 컬럼인 id, name, 작성일, 등록자 등의 정보를 담은 공통으로 사용하는 정보를 모아서 작성하여야하는 코드를 줄여준다. 특징 상속관계 매핑X 엔티티X, 테이블과 매핑X 부모 클래스를 상속 받는 자식클래스에 매핑 정보만 제공 조회, 검색 불가(em.find(BaseEntity) 불가) 직접 생성해서 사용할 일이 없으므로 추상 클래스를 권장 구현 코드 @MappedSuperclass @Getter @Setter public abstract class BaseEntity { private String createBy; private LocalDateTime createDate; private String lastModif..
JPA - 상속관계 매핑
·
Back-End/JPA
참고 해당 글은 김영한님의 자바 ORM 표준 JPA 프로그래밍을 공부하며 작성한 글입니다. https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 상속관계 매핑 자바 객체에는 상속 관계가 존재하지만, 관계형 데이터베이스에서는 상속 관계가 없다. 데이터적으로 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속과 유사하여 객체의 상속관계 매핑에 사용한다. 상속 관계..
JPA - 다대일, 일대다, 다대다 매핑
·
Back-End/JPA
참고 해당 글은 김영한님의 자바 ORM 표준 JPA를 공부하며 작성한 글입니다. https://www.inflearn.com/course/ORM-JPA-Basic/dashboard 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 다대일[N:1] 다대일 단방향 가장 많이 사용하는 연관관계 다대일 양방향 ‘다(many)’ 쪽에 외래 키가 가게되고, 연관관계의 주인이 된다. 양쪽을 서로 참조하도록 개발한다. 일대다[1:N] 일대다 단방향 테이블 일대다 관계는 ..
아이오닉 capacitor의 사용방법
·
Front-End/아이오닉
Ionic capacitor란? 하나의 코드로 iOS, Android 웹 앱을 설치가능한 앱으로 만들 수 있도록 해주는 크로스 플랩폼 앱런타임입니다. 기존에는 이러한 하이브리드 앱 기능을 위해서 cordova를 사용해 왔는데, cordova에는 몇가지 한계점이 드러나게 되면서, capacitor가 등장 하였습니다. capacitor는 iOS, Android, Web가릴것 없이 거의 동일한 UI를 적용이 가능하게 하며, 일관된 웹 API 세트를 제공하게 됩니다. capacitor의 설치 1-1 새 capacitor 프로젝트를 생성 npm init @capacitor/app 1-2 기존 앱(프로젝트)에 설치 npm i @capacitor/core npm i -D @capacitor/cli 2 캐패시터 초기화..
유클리드 호제법 - 최대공약수 구하기 : 백준 13241번으로 알아보기
·
알고리즘
유클리드 호제법이란? 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘이다. 호제법이라는 것은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 말한다. 예시 12345 와 2445의 최대공약수를 구해보면, 다음과 같게 풀 수 있다. 12345 = 2445 x 5 + 125 2445 = 125 x 19 + 70 125 = 70 x 1 + 55 70 = 55 x 1 + 15 55 = 15 x 3 + 10 15 = 10 x 1 + 5 10 = 5 x 2 이에 따라 최대공약수는 5가 나오게 된다. 최소공배수 구하기 최소 공배수는 두 정수가 공통적으로 가지는 배수 중 가장 작은 값을 의미합니다. 정수 a와 b의 최대공약수 G에 대해서 아래의 식을 만족하는 정수 x와y가 존재할때, a =..