분류 전체보기

·Study
1️⃣ 오픈소스 레포지토리 ForkFork를 통해 다른 사용자(또는 조직)의 레포지토리를 내 레포지토리로 복제한다.GitHub의 Fork와 Clone은 모두 레포지토리를 가져오지만 단순히 원격 저장소의 내용을 로컬 작업 환경으로 가져오는 Clone과는 달리 Fork는 변경사항을 원본 저장소에 반영할지 여부를 선택할 수 있어 주로 오픈 소스 프로젝트에 기여할 때 사용된다. 2️⃣Fork 한 레포지토리 Clone Fork를 통해 복사된 내 레포지토리를 IDE로 Clone 해 로컬 개발 환경에서 작업하기 위한 준비를 한다. 3️⃣ 소스코드 수정 및 commit, push오픈 소스에서 수정할 코드 및 문서를 찾아 수정한다. 나의 경우 Spring Boot 코드를 읽으며 수정할 내용을 찾았다.오픈 소스들은 보통 ..
·Back-end
🫧 @SQLDelete JPA에서 기본적인 삭제는 Hard Delete로 되어 있다. 이 삭제 방식을 @SQLDelete를 통해 쿼리를 작성해두면, delete가 호출될 때 데이터를 실제로 삭제하지 않고 미리 정의해둔 쿼리를 실행하도록 방식 변경이 가능하다. Hard Delete 물리 삭제라고도 하며, 데이터베이스에 Delete Query를 날려 해당 데이터를 실제로 삭제한다. Soft Delete 논리 삭제라고도 하며, 데이터베이스에 Update Query를 날려 해당 데이터가 삭제된 것을 하나의 컬럼을 이용하여 구분한다. @SQLDelete는 논리 삭제를 위한 기능인 것이다. 🫧 문제 발견 테스트 코드를 작성하다가 발견하게 된 문제.. @Test @DisplayName("회원을 논리 삭제한다") vo..
·Back-end
이전 포스트에서 다루었던 CascadeType.REMOVE 와 orphanRemoval = true 옵션이 각각 고아객체를 어떻게 처리하는지 알아보고자 한다. 🤔 고아객체 부모 엔티티와 연관관계가 끊어진 자식 엔티티 - 부모가 제거될 때, 부모와 연관되어 있는 모든 자식 엔티티들은 고아객체가 된다. - 부모 엔티티와 자식 엔티티 사이의 연관관계를 삭제할 때, 해당 자식 엔티티는 고아객체가 된다. 공통 예제 코드 CascadeType.REMOVE 와 orphanRemoval = true 옵션이 각각 고아객체를 어떻게 처리하는지 알아보기 위하여, Review 와 ReviewImage 엔티티를 바탕으로 예제 코드를 작성해 보았다. 먼저 두 옵션에 대한 차이점을 제외하고, 공통되는 사항은 아래와 같다. Revi..
·Back-end
🌱 Entity의 상태 (생명 주기) JPA에서 엔티티는 크게 4가지 상태를 가진다. 1. Transient (비영속) 엔티티 객체가 Java 메모리에서만 존재하고, 영속성 컨텍스트와 아무 관련 없는 상태 Person person = new Person(); 2. Persistent (영속) 엔티티 객체가 영속성 컨텍스트에 관리된 상태 영속 상태라고 바로 데이터베이스에 쿼리가 날라가는 것은 아니고 주로 트랜잭션이 commit 되거나 flush 메서드 실행 시 데이터베이스에 반영 된다. entityManger.persist(person); 3. Detached (준영속) 엔티티 객체가 영속성 컨텍스트에 저장되었다가 분리된 상태 더이상 영속성 컨텍스트에 의해 관리되지 않기 때문에 1차 캐시 등에서 모든 정보..
·Back-end
🌱 Entity의 상태 (생명 주기)JPA에서 엔티티는 크게 4가지 상태를 가지며, 상태를 전환시키는 기능을 EntityManager가 제공한다.1. Transient(비영속): 엔티티 객체가 Java 메모리에서만 존재하고, 영속성 컨텍스트와 아무 관련 없는 상태2. Persistent(영속): 엔티티 객체가 영속성 컨텍스트에 관리된 상태(영속 상태라고 바로 DB에 쿼리가 날라가는 것 X)3. Detached(준영속): 엔티티 객체가 영속성 컨텍스트에 저장되었다가 분리된 상태4. Removed(삭제): 실제 DB 삭제를 요청한 상태 🌱 Hibernate JPA EntityManager 핵심 기능1️⃣ Persistpersist는 엔티티의 새로운 인스턴스를 영속성 컨텍스트에 저장할 때 사용된다.Pers..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net [풀이] 약간.. 구현문제에 DFS 살짝 추가한 정도의 문제 같다. 그냥 7가지 경우의 수에 따라 파이프의 한쪽 끝이 원하는 위치에 도달할 때까지 깊이 우선 탐색을 진행한다. 아래 5가지에 유의하면서 풀었다. 1. 파이프 끝점을 기준으로 한다. 2. 파이프 주위 꼭 빈칸이어야 하는 곳에 벽이 있을 경우 파이프를 이동할 수 없다. 3. 파이프가 가로일 경우, 가로로..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net [풀이] 민식이의 최소 이동 횟수를 구해야 하기 때문에 BFS 문제라고 유추할 수 있다. 하지만 일반 BFS 문제와는 다른 점이 크게 두 가지 있는데 1. 열쇠 정보값에 따라 방문할 수 있는 미로가 다르기 때문에 획득하는 열쇠 값을 저장해야 한다. 2. 다른 BFS 문제와는 달리 이미 방문했던 곳을 다시 방문해야 되는 경우가 발생한다. 📌 열쇠 정보 저장하기..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net [풀이] 문제에서 중요한 조건은 1. 초기 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 2. if (아기 상어 크기 ≥ 물고기 크기) 아기 상어가 지나갈 수 있다. 3. if (아기 상어 크기 > 물고기 크기) 아기 상어가 물고기를 먹을 수 있다. 4. 먹을 수 있는 물고기가 1마리라면 그 물고기를 먹으러 가고, 5. 먹을 수 있는 물고기가..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/14003 14003번: 가장 긴 증가하는 부분 수열 5 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net [풀이] [Java] BOJ/백준 12738번 가장 긴 증가하는 부분 수열 3 [문제] https://www.acmicpc.net/problem/12738 12738번: 가장 긴 증가하는 부분 수열 3 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,00..
서채리
'분류 전체보기' 카테고리의 글 목록 (3 Page)