6. 스프링 데이터 JPA 분석
·
Spring/Spring Data Jpa
1. persist 와 merge save : 엔티티를 새로 저장하거나 변경 사항을 업데이트 한다. persist : 새로운 엔티티 객체를 영속성 컨텍스트에 추가한다. merge : 준영속 상태(detached)의 엔티티 객체를 받아 영속 상태로 전환한다. 여기서 준영속 상태는 엔티티가 현재 세션의 영속성 컨텍스트에 속하지 않는 상태를 의미한다. 즉, 데이터베이스에는 존재하지만 현재 세션에서는 관리되지 않는 상태이다. 2. Spring Data JPA에서의 동작 방식 Entity ID(식별자) 생성 전략 1) @GenerateValue : 호출 시점에 식별자가 없으므로 새로운 엔티티로 인식해서 persist가 정상 동작한다. 2) 직접할당 : 이미 식별자 값이 있는 상태로, merge가 호출된다. DB에..
[백준] 1717번 집합의 표현 _ Python
·
Algorithms/Union Find
https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작 www.acmicpc.net 1. Preview 시간 복잡도: O(M*a(N)) M : 연산 갯수 a(N) : 경로 압축한 find()의 시간 복잡도 공간 복잡도: O(N) 참고 : https://dheldh77.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%9C%A0%EB%8B%88%EC%98%A8%ED%8C%8C%EC%9D%B..
5. 확장 기능
·
Spring/Spring Data Jpa
1. 사용자 정의 Repository 구현 [사용자 정의 인터페이스] public interface MemberRepositoryCustom { List findMemberCustom(); } [구현 클래스] - 규칙 : 사용자 정의 인터페이스 이름 + "Impl" @RequiredArgsConstructor public class MemberRepositoryCustomImpl implements MemberRepositoryCustom { private final EntityManager em; @Override public List findMemberCustom() { return em.createQuery("select m from Member m").getResultList(); } } [사용자..
[백준] 1647번 도시 분할 계획 _ Python
·
Algorithms/Mst
https://www.acmicpc.net/problem/1647 1647번: 도시 분할 계획 첫째 줄에 집의 개수 N, 길의 개수 M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 www.acmicpc.net 1. Preview 시간 복잡도: O(M*logM) 공간 복잡도: O(M) 참고 : - 유형: MST 2. 초기 접근 방법 MST(Minimum Spanning Tree) 알고리즘 그래프 내의 모든 정점을 포함하는 트리를 구성하는데, 구성 간선들의 가중치 합의 최소를 목표로 한다. 프림 알고리즘 : 방문한 노드의 미방문 노드 간선들 중 최소 간선을 선택 - ..
[백준] 1707번 이분 그래프 _ Python
·
Algorithms/Graph
https://www.acmicpc.net/problem/1707 1707번: 이분 그래프입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에www.acmicpc.net   1. Preview시간 복잡도: O(V+E) 공간 복잡도: O(V or E) 참고 : https://ji-gwang.tistory.com/293 유형: dfs, bfs   2. 초기 접근 방법이분 그래프: 인접한 정점끼리 서로 다른색으로 칠해서 모든 정점을 2가지 색으로만 칠할 수 있는 그래프   2개의 집합을 두고, 인접 노드를 번갈아 저장하는 이상한 방식으로 문제를 접근해 관련 내용 정리는 생..
[백준] 2206번 벽 부수고 이동하기 _ Python
·
Algorithms/Graph
https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 1. Preview 시간 복잡도: O(2N^2) 공간 복잡도: O(2N^2) 참고 : https://hongcoding.tistory.com/18 (최적화) 유형: bfs 2. 초기 접근 방법 1개의 벽을 부술 수 있는 "item"이 있다고 생각하자. 기존의 visited 배열에서는 item 사용 유무를 판단할 수 없으므로 visited[i][j] → visited[i][..