JPQL과 영속성 컨텍스트의 관계
📌 개요 JPQL 은 일반적으로 영속성 컨텍스트를 고려하지 않고 데이터베이스에 접근하여 작업을 수행한다. 영속성 컨텍스트와 어떠한 상호작용을 하는지는 JPQL이 어떤 쿼리인지에 따라 다르다. 📌 JPQL - SELECT 쿼리 JPQL은 실행하기 전 flush() 를 수행하여 데이터 일관성을 맞춘다. 이는 SELECT 쿼리에만 국한된 것이 아니며,...
📌 개요 JPQL 은 일반적으로 영속성 컨텍스트를 고려하지 않고 데이터베이스에 접근하여 작업을 수행한다. 영속성 컨텍스트와 어떠한 상호작용을 하는지는 JPQL이 어떤 쿼리인지에 따라 다르다. 📌 JPQL - SELECT 쿼리 JPQL은 실행하기 전 flush() 를 수행하여 데이터 일관성을 맞춘다. 이는 SELECT 쿼리에만 국한된 것이 아니며,...
📌 개요 백엔드 엔지니어라면 한 번 쯤 서비스를 배포한 경험이 있을 것이다. 배포에 필요한 AWS EC2와 RDS 등을 생성하기 위해 AWS 콘솔에 접속하여 관리하는 것은 정말 귀찮다. 리소스를 사용하지 않는다면 반드시 해제해야 과금이 발생하지 않는데, 자꾸 까먹어서 날린 돈만 얼마인지 모르겠다. 콘솔에 매번 접속해서 리소스를 관리하지 않고 AWS ...
📌 문제 https://www.acmicpc.net/problem/1103 📌 설명 전형적인 그래프 탐색 문제이지만, 사이클이 발생한 경우를 탐지해야 하므로 BFS 대신 DFS를 사용하는 것이 효율적이다. 그러나 단순히 DFS를 수행하며 동전이 움직일 수 있는 최대 횟수를 구하려고 하면 시간 초과가 발생하게 된다. 이미 방문한 지점인 경우, 추...
📌 문제 https://www.acmicpc.net/problem/10800 📌 설명 공이 다른 공을 사로잡을 수 있다. 사로잡기 위한 조건은 색이 다르거나, 크기가 더 작을때이다. 공에 대한 정보를 배열에 저장하고 브루트포스로 일일히 계산하게 되면 $O(N^2)$로 시간 초과가 발생하게 된다. 정렬과 누적 합 개념을 사용해야 한다. 공에...
📌 문제 https://www.acmicpc.net/problem/7453 📌 설명 이분 탐색을 통해 해결하였다. 주어진 네 배열을 두 배열 간 합을 통해 두 개의 배열로 축소시킨다. 정렬 후 이분탐색을 진행하면 된다. 주의해야 할 점은 가능한 답의 가짓수가 4000^4이라는 점이다. 따라서 long long 자료형을 사용해야 한다. 또한 중복...
📌 문제 https://www.acmicpc.net/problem/16566 📌 설명 철수가 내는 카드보다 민수가 내는 카드의 번호가 더 크도록 해야 한다. 즉, M개의 주어진 카드에서 철수가 낸 카드의 번호보다 큰 최소의 번호를 내야 한다. 이 부분에서 이분 탐색으로 해결해야 함을 알 수 있다. set을 통해 M개의 카드를 관리하고 upper...
📌 문제 https://www.acmicpc.net/problem/1509 📌 설명 처음부터 끝까지 문자열을 순회하면서 팰린드롬을 찾고, 계속하여 최솟값을 갱신해야 한다. dp[i]를 i번 째 문자까지의 최소 분할 횟수라고 하자. 현재, 문자열의 i번 째 인덱스를 가리킨다고 할 때, i번 째 문자를 마지막으로 하는 팰린드롬이 있는지 확인한다. ...
📌 문제 https://www.acmicpc.net/problem/1753 📌 설명 가장 대표적인 다익스트라 문제이다. 우선순위 큐를 통해 구현하였다. 📌 코드 #include <iostream> #include <queue> #include <vector> #define INF 300001 using na...
📌 QueryDSL이란? QueryDSL은 HQL(Hibernate Query Language)를 타입에 안전하게(type-safe) 생성 및 관리하는 프레임워크이다. 정적 타입을 통해 SQL이나 JPQL 쿼리를 자바 코드로 작성할 수 있다. 정적 타입이란 컴파일 시점에 변수나 객체의 데이터 타입이 미리 결정되는 것을 말한다. ‘type...
📌 문제 https://www.acmicpc.net/problem/1562 📌 설명 비트필드를 통한 DP를 통해 해결하였다. 3차원 DP 배열을 선언한 후, 길이가 1인 경우에 대하여 초기화를 진행했다. n이 100 이하이고, 비트필드의 최댓값은 1023이므로 삼중 for문을 통해 충분히 해결 가능하다. for문을 순회하며 값이 존재하는 경우 계...