영속성(Persistence)이란? 데이터들이 프로그램이 종료되어도 사라지지 않고 어떤 곳에 저장되는 개념을 영속성(Persistence) 이라고 한다. 자바는 데이터의 영속성을 위해 JDBC 를 지원하는데 이는 매핑 작업을 개발자가 일일히 해야하는 불편함이 존재한다. 따라서 개발자가 이러한 JDBC 프로그래밍을 하지 않도록 도와주는 프레임워크를 영속성 프레임워크(Persistence Framework) 라고 하며 대표적으로 ORM 과 Query Mapping(SQL Mapping) 방식이 존재한다. 즉, 둘 다 JDBC 가 불편해서 나온 기술!! Query Mapping 이란? 객체와 쿼리 수행 결과를 매핑시키는 기술 SQL 문을 직접 작성하고 쿼리 수행 결과를 어떠한 객체에 매핑할 지 바인딩하는 방법..
데이터베이스에서의 트랜잭션 이란? ➡️ 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 이 때, 하나의 논리적 기능을 수행하기 위해서는 여러 개의 질의(쿼리)가 필요할 수 있음 트랜잭션은 묶여있는 여러 질의들을 모두 완료해야 정상적으로 종료됨 만약 트랜잭션에 속해있는 질의 중 하나라도 실패하면 그 트랜잭션은 실패한 것임 EX) 인터넷 뱅킹으로 10000 원을 송금하는 상황 A 가 B 에게 10000 원을 송금하는 경우 A 의 계좌에서 10000 원을 차감하고, B 의 계좌에서 10000 원을 증가시킴 START TRANSACTION; UPDATE Account SET balance = balance - 10000 WHERE account_id = 'A'; UPDATE Account SET..
QueryDSL란 ? Query Domain Specific Language SQL, JPQL 등을 코드로 작성할 수 있도록 해주는 빌더 오픈소스 💡 JPQL이란 ? JPA에서 지원하는 다양한 쿼리 방법 중 가장 단순한 조회 방법으로, SQL의 경우에는 DB 테이블을 대상으로 쿼리를 질의하지만, JPQL은 엔티티 객체를 대상으로 쿼리를 질의 JPQL String username = "java"; String jpql = "select m from Member m where m.username = :username"; List result = em.createQuery(query, Member.class).getResultList(); QueryDSL String username = "java"; List..
용어 뜻 컨테이너 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술 컨테이너 런타임 컨테이너를 다루는 도구 도커 컨테이너를 다루는 도구 중 하나 쿠버네티스 컨테이너 런타임을 통해 컨테이너를 오케스트레이션 하는 도구 오케스트레이션 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위 Pod 파드(Pod)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위 쿠버네티스 ≠ 도커 관리 툴 정확하게는 도커를 관리하는 도구가 아니라, 컨테이너를 관리하는 도구 쿠버네티스란 ? 컨테이너화 된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 시스템 단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 플랫폼을 지향 컨테이너로 이루어진 것들을 손쉽게 담고 관..
Virtual Machine(가상머신) Host OS : 가상머신이 구동되는 PC 의 운영체제 Guest OS : 각 가상머신 내에서 구동되는 별도의 운영체제 하이퍼바이저(Hypervisor) : 가상머신을 생성하고 구동하는 소프트웨어 위 그림처럼 가상머신은 애플리케이션과 OS 가 함께 가상화 된 것이다. 따라서 각 가상머신의 Guest OS 는 다른 가상머신들의 Guest OS 와 완전히 독립된 공간과 시스템 자원을 할당받고 사용한다. 즉 하이퍼바이저는 애플리케이션과 OS 를 같이 가상화하여 각 가상머신을 격리시킨다. 따라서 각 가상머신은 Guest OS 로 인해 Host OS 에게 많은 리소스를 요구하며 실행 시 부팅이 필요하다. Container(컨테이너) Docker Engine : 컨테이너를 구..
정의 Redis 와 Memcached 는 대표적인 오픈소스 기반의 인메모리 데이터 저장소이다. 둘 다 사용하기 쉽고 고성능을 자랑하지만, 꽤나 많은 차이점이 존재한다. 결론적으로는 Redis 가 거의 모든 면에서 우수하다. 주요 특징 비교 항목 Memcached Redis 데이터 분할 O O 다양한 데이터 타입 X O 멀티 스레드 지원 O X 데이터 저장(영속성) X O 데이터 복제 X O 트랜잭션 지원 X O pub/sub 구조 지원 X O 공통점 오픈소스이며, 인메모리 데이터 저장소이다. NoSQL 을 사용하여 key-value 형태로 데이터를 저장한다. 데이터를 분할하여 저장할 수 있다. 차이점 확장성 Memcached - scale up 방식 사용 사양을 업그레이드해서 확장하는 방식 Memcach..
https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 1 초 256 MB 72264 30188 22120 41.591% 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나..
TDD 란? TDD 란 Test Driven Development 의 약자로 '테스트 주도 개발' 이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 실제 코드에 추가하는 단계를 반복하여 기능을 구현한다. TDD 의 적용 방법 예를 들어 클라이언트에게 제공한 프로그램에 “태어난 년도를 입력하면 현재 나이가 출력” 되는 기능이 있는데, 클라이언트가 “95년생을 입력하니까 31살이라는 잘못된 결과가 나옵니다(95년생 = 29살)” 라는 요청을 했다고 가정해보자. 이 문제를 TDD 방식으로 해결해보는 시나리오이다. 일반적으로 TDD 는 총 3단계의 테스트를 통해 하나의 이슈를 처리한다. assert(A, B) 메서드 A == B 이면 succe..