JPA 심화, 알고리즘

우정·2023년 2월 3일
0

[내일배움캠프] TIL

목록 보기
48/50

프로그래머스

삼각형의 완성조건(1)

  • Java
import java.util.Arrays; 

class Solution {
    public int solution(int[] sides) {
        Arrays.sort(sides);
        int answer = 0;
        if (sides[0] + sides[1] > sides[2]) {
            answer = 1;
        } else answer = 2;
        return answer;
    }
}
  • 다른 사람의 풀이
import java.util.Arrays;
class Solution {
    public int solution(int[] sides) {
        Arrays.sort(sides);
        return sides[2] >= sides[0]+sides[1] ? 2 : 1;
        // return (sides[0]+sides[1] > sides[2])? 1 : 2;
    }
}
  • Python
def solution(sides):
    sides.sort()
    answer = 0
    if sides[0] + sides[1] > sides[2]:
        answer = 1
    else :
        answer = 2
    return answer
  • 다른 사람의 풀이
def solution(sides):
    return 1 if max(sides) < (sum(sides) - max(sides)) else 2
def solution(sides):
    sides.sort()
    return 1 if sides[0] + sides[1] > sides[2] else 2
def solution(sides):
    sides = sorted(sides)
    if sum(sides[:2]) > sides[-1]:
        return 1
    else:
        return 2

JPA 심화

Raw JPA 기타 기능

  • Cascade (영속성 전이)

    • 사용 위치
      • 연관 관계의 주인 반대편 - 부모 엔티티('다대일'에서 '일')
    • 사용 조건
      • 양쪽 엔티티의 라이프 사이클이 동일하거나 비슷해야 함
      • 대상 엔티티로의 영속성 전이는 현재 엔티티에서만 전이되어야 함
    • 옵션 종류
      • ALL : 전체 상태 전이
      • PERSIST : 저장 상태 전이
      • REMOVE : 삭제 상태 전이
      • MERGE : 업데이트 상태 전이
      • REFERESH : 갱신 상태 전이
      • DETACH : 비영속성 상태 전이
  • orphanRemoval (고아 객체 제거)

    • 사용 위치
      • 부모 엔티티
    • 사용법
      • Cascade.REMOVE와 비슷한 용도로, 삭제를 전파하는데 쓰임
      • 부모 객체에서 리스트 요소 삭제를 했을 경우, 해당 자식 객체는 매핑 정보가 없어지므로 대신 삭제해줌
    • 옵션 종류
      • true
      • false
  • Cascade.REMOVE vs orphanRemoval

    • Cascade.REMOVE : '일'에 해당하는 부모 엔티티를 em.remove를 통해 직접 삭제할 때, 그 아래에 있는 자식 엔티티들이 삭제되는 것
    • orphanRemoval=true : 위 케이스를 포함하고, '일'에 해당하는 부모 엔티티의 리스트에서 요소를 삭제하기만 해도 자식 엔티티가 삭제되는 기능까지 포함하고 있음

    => orphanRemoval=true는 리스트 요소로써의 영속성 전이도 해줌

  • Fetch (조회시점)

    • 사용 위치
      • Entity에 FetchType으로 설정할 수 있음
      • Query 수행 시 fetch join을 통해 LAZY인 경우도 즉시 불러올 수 있음
    • 사용법
      • 기본 LAZY를 설정한 후 필요할 때만 fetch join을 수행함
      • 항상 같이 쓰이는 연관 관계일 경우에만 EAGER를 설정함
    • 옵션 (FetchType)
    • EAGER : 즉시 로딩 (부모 엔티티 조회 시 자식 엔티티도 같이 조회)
    • LAZY : 지연 로딩 (부모 엔티티 조회 시 자식은 필요할 때 따로 조회)

0개의 댓글

관련 채용 정보