현대 개발자들은 Swagger나 Spring docs를 사용해 RestFul API를 문서화 한다. 그렇다면 왜 문서화를 할까? API 문서화가 필요한 경우 혼자 개발하는 경우엔 필요없는 기능일지도 모르지만, 같이 개발한다고 가정해보자 프론트엔드 개발자는 RestAPI 호출되는 방식을 알아야 한다. 하지만 문서 없이 말로만 설명 한다면 계속 까먹을 때마다 설명해야하는 번거로움도 존재할 수 있고 의사전달이 잘못될 수도 있는 문제가 발생한다. 어찌보면 이는 당연한 일이다. 누군가와 같이 일을 하는데 문서 없이 그저 말로만 하는 경우는 있을 수 없는 일이다! 그렇다면 대표적인 문서 자동화 도구인 Swagger와 RestDocs에 대해서 살펴보도록 하자 Spring REST Docs Restful 서비스의 문서..
InnoDB의 엔진 아키텍처는 다음과 같다. 하나하나 살펴보도록하자!! 프라이머리 키에 의한 클러스터링 InnoDB의 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링 되어 저장된다. 즉, 프라이머리 키 값의 순서대로 디스크에 저장된다는 뜻이며, 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키의 값을 논리적인 주소로 사용한다. 프라이머리 키가 클러스터링 인덱스이기 때문에 프라이머리키를 이용한 레인지 스캔은 상당히 빨리 처리될 수 있다. 하지만 이 기능은 MyISAM에서는 지원하지 않는다. 그래서 프라이머리 키와 세컨더리 인덱스는 구조적으로 아무 차이가 없다. 외래 키 지원 외래 키에 대한 지원은 InnoDB 스토리지 엔진 레벨에서 지원하는 기능으로 MyISAM이나 MEMORY 테이블에..
1. MySQL 엔지 아키텍처 MySQL 전체구조 MySQL은 일반 상용 RDBMS와 같이 대부분의 프로그래밍 언어로부터 접근 방법을 모두 지원한다. MySQL 고유의 C API부터 시작해 JDBC나 ODBC 등응 모든 언어로 MySQL 서버에서 쿼리를 사용할 수 있게 지원한다. MySQL서버는 크게 엔진과 스토리지 엔진으로 구분할 수 있다. 그러면 한 번 살펴보자. MySQL 엔진 MySQL 엔진은 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 sQL 파서 및 전처리기, 퀴리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 또한 MySQL은 표준 SQL(ANSI SQL) 문법을 지원하기 때문에 표준 문법에 따라 작성된 쿼리는 타 DBMS와 호환되어 실행될 수 있다. 스토리지 엔진 ..
finally 블록 finally 블록은 보통 예외의 발생 여부와 상관없이 꼭 실행되어야 할 코드를 이 블록에 넣어 마지막에 출력하도록 처리한다. try { // 예외 처리가 발생할 가능성이 있는 로직 작성 } catch (Exception e) { // 예외 발생시 실행되는 로직 보통 에러 메시지를 출력 } finally { // 예외 발생 여부와는 상관없이 수행되는 로직 // finally 블럭은 try-catch문 마지막에 위치해야 함 } 예외 발생 시 try -> catch -> finally 순, 예외가 발생하지 않았을 땐 try -> finally 순으로 실행된다. 예제를 살펴보자 package exception; public class FinallyEx1 { public static void..
예외 클래스의 계층 구조 자바에서는 실행시 발생할 수 있는 오류를 클래스로 정의하여 Exception과 Error클래스가 있다. 위와 같이 최상위 클래스는 Exception 클래스이며 그 밑으로 IOException, RuntimeException 등이 자리하고 있다. 앞으로 그렇다면 RuntimeException 클래스와 그 서브 클래스들을 RuntimeException 클래스들 이라고 하고 그 외 클래스들을 Exception 클래스들로 구분해보자. 그렇다면 Exception과 RuntimeException에 대해 알아보자 실행 중에 발생하는 RuntimeException 실행 중에 발생하며 시스템 환경적으로나 input 값이 잘못된 경우 또는 프로그래머가 의도적으로 잡아내기 위한 조건 등에 부합할 때..
JPA는 자바 진영의 ORM 기술 표준이다. JPA는 밑에 그림처럼 애플리케이션과 JDBC 사이에서 동작한다. ORM 이란? 그렇다면 ORM이란 무엇일까? ORM은 Object - Relational Mapping의 앞글자를 따온 이름으로 객체의 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임 워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 예를 들어 객체를 데이터베이스에 INSERT SQL을 직접 장성하는 것이 아닌 객체를 마치 자바 Collection에 저장하듯이 ORM 프레임 워크에 저장하면 된다. JPA를 사용해서 객체를 저장하는 코드는 다음과 같다. jpa.persist(member); // 저장 조회할 때도 JPA를 통해 객체를 직접 조회하면 된다. J..
JPA를 왜 사용하는가? 필자는 블로그 프로젝트와 팀원들과 토이 프로젝트를 진행하며 JPA를 사용해 왔다. 과거에 JPA를 사용하면서 "SQL쿼리를 직접 작성하지 않는다"는 이점만 보고 JPA를 무작정 사용했던 것 같았다. 하지만 JPA는 우리가 생각하는 것 만큼 간단하지 않다. 복잡하지 않은 일반 개인 프로젝트에서는 무난히 사용했을 지 몰라도 복잡한 연관 관계를 갖고 있는 테이블이 있다고 가정해보자 우리는 이를 JPA로 간단하게 처리할 수 있는가? 그렇다면 JPA를 왜 사용하는지 JPA를 사용했을 때의 이점을 정확히 파악하고 우리는 그것을 남들에게 설명할 수 있어야 한다. 그 이유에 대해 먼저 알아보자 SQL을 직접 다룰 때 발생하는 문제점 RDBMS는 가장 대중적이고 신뢰할 만한 안전한 데이터 저장소..
- Total
- Today
- Yesterday
- swarm
- 취업
- 면접 준비
- 인터뷰
- DB
- 게시판
- 코딩
- Spring
- JPA
- 백엔드
- docker
- thread
- DevOps
- 개발자
- Kotlin
- MySQL
- 면접
- Redis
- 프로그래밍
- 프로젝트
- 취업준비
- 자바
- IT
- java
- CS
- 개발
- 코드
- 면접준비
- 동시성
- 취준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |