JPA(Java Persistent API)란? JPA는 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 뜻한다. ORM 기술이란? ORM 기술은 말 그대로 객체와 관계형 데이터 베이스를 매핑해 주는 기술이다. 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고, ORM 프레임워크가 중간에서 매핑을 해준다. 더 자세한 내용은 다음을 참고) SQL Mapper 와 ORM 기술의 차이 Persistence Framework란? SQL Mapper와 ORM 기술에 대해 알아보기 전에 Persistence Framework에 대해 알아보자. 영속성(Persistence)은 프로그램이 종료되어도 데이터가 사라지지 않는 특성을 뜻한다. [그림 1]에서..
추상클래스(Abstract Class)란? 추상 클래스(Abstract Class)는 추상 메서드를 선언해 놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도하는 클래스이다. 이러한 특성 탓에 미완성 설계도라고 표현하기도 한다. 추상클래스는 상속을 위한 클래스이기 때문에 따로 인스턴스를 생성할 수 없다. abstract class 클래스{ ... public abstract void 메서드(); } class 앞에 "abstract" 예약어를 붙여 해당 클래스가 추상 클래스임을 나타낸다. 또한 메서드도 abstract 예약어를 붙여 추상 메서드를 선언할 수 있다. 추상 클래스는 추상 메서드를 가지지 않아도 괜찮다. 다만, 추상 메서드를 하나라도 가진다면 그 클래스는 추상 클래스가 된다. 추상 메서..
CES 2023 행사 개요 CES는 독일 IFA, 스페인 MWC와 함께 세계 3대 IT 전시회이다. CES 2023은 코로나 이전 대비 70-80% 수준 규모를 회복하며 팬데믹 발생 이후 최대 규모로 진행되었다. CES 2023 행사의 간략한 개요는 다음과 같다. 일시 : 2023년 1월 5일~8일 장소 : 미국 라스베이거스 컨벤션 센터 참가국 : 174개국 (미국 이외 국가의 등록객 비중 35%) 참가 기업 : 약 3200 기업, Fortune Global 500대 기업 중 323개 기업 참여, Interbrand 100대 기업 중 85개 기업 참여 참관객 수 : 약 12만명 주요 테마 : 웹 3.0/메타버스, 모빌리티, 디지털 헬스, 지속가능성, 인간안보 주요 테마 요약 1. 웹 3.0과 메타버스 웹..
꾸준한 성장 내가 기술 블로그를 처음 시작한 것은 2021년 7월부터다. 처음엔 하루 10명도 안 되는 방문자에 기뻐하곤 했는데 어느새 하루 평균 천 명이 넘는 방문자가 방문해주기 시작했다. 2022년에는 내 블로그에 317,901명이 방문해주었다. 꾸준히 방문자가 늘었으며 기타 유입도 크게 증가하였다. 기타 유입은 주로 현재 글에서 연관 있는 글들을 링크로 달아놓은 것들에서 발생했다. 블로그의 콘텐츠가 늘어감에 따라 방문자수도 유의미하게 증가한 해였다. 블로그 광고 수익 사실 구글에 "티스토리 일일 방문자 1000명 수익"을 검색해봐도 블로그마다 결과는 천차만별이다. 이는 CPC, CTR등이 다르기 때문이다. CPC는 Cost Per Click의 줄임말로, 광고 클릭에 대해 광고주가 지불하는 평균 금액..
프레임워크(Framework)란? 프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 개본 개념 구조이다. -위키백과- 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한다. 개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수 있다. 프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있다. 쉽게 말해 프레임워크는 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다. 예를 들어 Java 개발에서 사용되는 Spring 프레임워크나 Python 개발에 사용되는 Django, 안드로이드 앱개발에 사용되는 Androi..
이 책을 읽게 된 이유 나는 프로젝트 경험이 부족하여 대규모 시스템을 직접 설계해 본 경험이 없다. 백엔드 개발자라면 대규모 시스템이 어떻게 이루어져 있는지, 어떻게 설계하는지 알아야 할 것 같아 이 책을 읽게 되었다. 책 소개 IT 경력자라도 느닷없이 대규모 시스템을 설계하려고 하면 막막하다고 느낄 수 있다. 특히나 면접을 보는 상황이라면 더욱 눈앞이 캄캄해질 것이다. 복잡한 시스템을 설계할 때는 어디서부터 어떻게 시작해야 할까? 이 책은 16가지 실제 시스템 설계 면접 문제와 상세한 답안을 제시한다. 시스템 동작 원리를 시각적으로 보여 주는 188개의 도해로 설명하면서 4단계 접근법으로 면접 문제를 풀 수 있도록 돕는다. 이 책을 통해 면접관이 평가하려는 항목과 그 이유를 내부자 관점에서 들을 수 있..
CAP 정리란? 브루어의 정리란? CAP 정리 또는 브루어(Brewer)의 정리는 다음과 같은 세 가지 조건을 모두 만족하는 분산 컴퓨터 시스템은 존재하지 않음을 증명한 정리이다. 일관성(Consistency) : 모든 노드가 같은 순간에 같은 데이터를 볼 수 있다. 가용성(Availability) : 모든 요청이 성공 또는 실패 등의 결과를 반환활 수 있다. 파티션 허용(Partition tolerance) : 메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 계속 동작할 수 있다. 위의 세 가지 조건의 첫 글자를 따서 CAP정리라고 부른다. 여기서 분산 시스템은 동시에 둘 이상의 노드(물리적 또는 가상머신)에 데이터를 저장하는 네트워크를 뜻한다. 세 가지 조건에 대해 더 자세히 알아보자면 다음..
AWS Cloud Practitioner 자격증이란? AWS는 다양한 자격증을 취득할 수 있다. 그중 AWS Cloud Practitioner는 가장 기본인 자격증이다. 이후엔 Architect, Operations, Developer 등 분야를 나누어 Associate 등급, Professional 등급 등을 취득할 수 있다. Cloud Practitioner 자격증은 AWS의 클라우드 기술의 개념과 보안, 운영 비용 등 AWS 클라우드 서비스를 사용하는 데 가장 기초적인 지식을 테스트하는 문제들이 출제된다. 응시 계기현재 재직 중인 회사에서 온-프레미스에서 클라우드로의 전환을 계획하고 있다. 앞으로 많은 회사들이 클라우드 체계로 넘어갈 것이라고 생각했다. 평소에도 관심이 많던 클라우드 서비스에 ..
Index란?Index는 테이블에서 데이터의 위치를 가리키는 자료구조이다. Index가 없다면 원하는 데이터를 찾기 위해서 테이블 전체를 뒤져야 할 것이다. 이러한 Index는 크게 Clustered Index와 Non-Clustered Index 두 가지로 나눌 수 있다. 참고) [DB] 인덱스(index)란? 인덱스 자료구조인덱스(index)란? 인덱스란 데이터베이스 테이블의 검색 속도를 향상하기 위한 자료구조라고 할 수 있다. 책의 색인(index)을 보면 해당 내용이 어디에 있는지 알 수 있듯이 데이터의 인덱스를 참조code-lab1.tistory.com Clustered Index란?clustered Index는 row의 물리적 정렬 순서를 설정하는 index 유형이다. clustered In..
오버로딩(Overloading)이란?오버로딩은 같은 클래스 내에 여러 개의 같은 이름의 메서드를 정의하는 것이다. 이때 메서드의 이름은 같지만 매개변수(parameter)의 개수나 타입이 달라야 한다. return 값만 다른 것은 오버로딩이라고 볼 수 없다. 예를 들어 아래와 같이 Food 클래스 내에 여러 가지의 eat 메서드를 정의할 수 있다.public class Food{ void eat(Noodle noodle){ System.out.println("후루룩"); } void eat(Pizza pizza){ System.out.prinln("냠냠"); } void eat(Noodle noodle, Ramen ramen){ System..
NamedParameterJdbcTemplate이란? JdbcTemplate은 파라미터를 순서대로 바인딩한다. String sql = "update item set item_name=?, price=?, quantity=? where id=?"; template.update(sql, itemName, price, quantity, itemId); 예를 들어 위와 같은 코드가 있다면, sql의 ?에 itemName, price, quantity, itemId 파라미터가 순서대로 바인딩된다. 이렇게 순서를 제대로 지킨다면 문제가 없는 코드이다. 하지만 모종의 이유로 위의 SQL 코드를 변경하게 된다고 생각해보자. 실무에서 수십 개의 파라미터를 사용한다고 했을 때 순서에 맞춰 파라미터를 바인딩 하기는 쉽지 않..
JdbcTemplate이란? JdbcTemplate은 JDBC 코어 패키지의 중앙 클래스로 JDBC의 사용을 단순화하고 일반적인 오류를 방지하는데 도움이 된다. 개발자가 JDBC를 직접 사용할 때 발생하는 다음과 같은 반복 작업을 대신 처리해준다. 커넥션 획득 statement를 준비하고 실행 결과를 반복하도록 루프를 실행 커넥션 종료, statement 및 resultset 종료 트랜잭션을 다루기 위한 커넥션 동기화 예외 발생 시 스프링 예외 변환기 실행 쉽게 말해 JdbcTemplate은 개발자가 JDBC 기술을 쉽게 사용할 수 있도록 도와주는 클래스이다. 참고) [Spring] JDBC(Java Database Connectivity)란? JDBC 드라이버란? [Spring] JDBC(Java Da..