목록Computer Science/Database (6)
Kim Jinung
https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=5&mod=list SQL – DATA ON-AIR dataonair.or.kr
JPA Cache 1st Cache: 트랜잭션 단위 2nd Cache: 앱 내에서 공유하는 캐시 Why need default constructor? JPA는 동적으로 객체를 생성하기 위해서 자바 리플렉션 기능 등을 사용한다. 이를 위해서 기본으로 제공해주어야 한다. Undirectional Mapping vs Bidirectional Mapping 양방향 매핑은 2개의 단방향 매핑이다. 디비 테이블은 외래키 조인을 통해 양방향 관계가 성립된다. 반면 객체는 단뱡향 2개로 양방향 참조를 구현해주어야 한다. 일반적으로 FK를 가지고 있는 객체가 연관 관계의 주인이 되고, 반대편 객체는 읽기 전용으로만 사용한다. mappedBy 파라미터의 역할이 여기에 해당한다. 즉 JPA는 mappedBy로 지정된 필드는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YdDlP/btsf2mfTBHu/ZBKz3JfuSkraoEMonRrLSK/img.png)
Overview DBMS는 통상 다음과 같은 레이어로 구성된다. (DBMS마다 구조가 천차만별이지만, 일반적으로는 다음과 같다.) Transport subsystem: 클라이언트의 요청을 받는다. DB 클러스터 노드 간 통신에도 사용한다. Query Processor: 쿼리를 해석, 분석 검증, 최적화하고 실행 계획을 선택한다. Execution Engine: 선택한 실행 계획을 실행한다. 스토리지 엔진의 인터페이스에 해당한다. Storage Engine: 실질적인 데이터 쓰기, 읽기 작업을 담당하는 컴포넌트다. Transport DBMS는 클라이언트/서버 모델에 기반한다. DB를 사용할 때 특정 주소로 연결을 요청하고, 커넥션 풀에서 커넥션을 받아오고, 해당 커넥션을 이용해서 쿼리를 날리는 과정이 익숙..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/svGgY/btsbjiJpwNK/lLf38C5BzyrHcA9j7HkfDk/img.png)
1. JPA(Java Persistence API) JPA는 자바 진영의 표준 ORM 기술이다. 자바 진영이 늘 그렇듯이 그 자체로 구현체를 제공하지 않고 인터페이스를 제공하고 다양한 구현체가 존재한다. 대표적으로 Hibernate가 있다. 2. JPA architecture JPA는 생각보다 아키텍처에 대한 자료를 찾아보기가 힘들다. 클래스 레벨 아키텍처에서 중요한 클래스들은 Persistence, EntityManagerFactory, EntityManager, EntityTransaction, Query가 존재한다. 내부 코드를 뜯어보면 Persistence 클래스가 EntityManagerFactory 객체를 생성하고, EntityManagerFactory 클래스가 EntityManager를 팩토..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PuXJg/btsaUkg1Kcq/luHDe6xefT6YjrcMnzFxLK/img.png)
1. JDBC(Java Database Connectivity) JDBC는 자바 애플리케이션에서 데이터베이스에 액세스 하는 방법을 명세하는 인터페이스다. 데이터베이스 제품군은 연결 방법이 제각각이다. 따라서 각 데이터베이스에 연결하기 위해서 개발자는 각각의 데이터베이스에 모두 대응해야 한다. 자바 진영에서는 해당 문제를 의존성을 역전 시키는 방법으로 해결했다. 애플리케이션의 비지니스 로직이 데이터베이스 제품군에 의존하는 게 아니라 인터페이스에 의존하도록 했다. 해당 인터페이스가 바로 JDBC다. 자바는 Java Standard Edition에 JDBC 인터페이스를 제공하고, 각 데이터베이스 개발사는 해당 인터페이스를 구현한 DB Driver를 배포한다. 따라서 개발자는 DB 제품군이 변경되더라도 코드를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/G6QFM/btrRn6ALQrD/LLrZIdNU26eKLN4QAjrwxK/img.png)
Reference - Flyway docs Goal 1. flyway가 무엇인지 파악한다. 2. "가 왜 등장했는지 파악한다. 3. "를 어떻게 사용하는지 파악한다. 선행 조건 - Docker Flyway 공식 문서에서 flyway를 데이터베이스 마이그레이션 툴로 소개하고 있다. 그렇다면 데이터베이스 마이그레이션은 왜 필요할까? 오늘날 소프트웨어 개발에서 우리는 위와 같은 개발 프로세스를 흔하게 접할 수 있다. Axel과 Christian이 별도로 기능을 개발하고 하나로 합친다. 그리고 지속적으로 통합(Continuous Integration)한다. 해당 버전은 다시 Test를 거치면서 수정되고 최종적으로 Production 스테이지에서 서비스 한다. 그리고 어떠한 기능에 대한 니즈가 생기는 경우가 발생..