실행환경 Ubuntu 22.04 Docker 설치방법 1. 우분투 시스템 패키지 업데이트 sudo apt update 2. 필요한 패키지 설치 sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 3. Docker의 공식 GPG키 추가 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 4. DOcker의 공식 apt 저장소를 추가 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_rel..
데이터베이스를 잘못 설계하면 여러 부작용이 생기고 이것을 이상현상이라고 합니다. 이런 이상 현상을 제거하고 데이터베이스를 올바르게 설계하는 것을 정규화라고 합니다. 이상현상의 종류 1. 삽입 이상 데이터를 삽입할 때 불필요한 데이터를 삽입해야 하는 무제 2. 갱신 이상 데이터를 갱신할 때 중복된 튜플도 갱신해야 해서 여러 튜플을 갱신하는 문제 3. 삭제 이상 튜플 삭제시 삭제되지 말아야 하는 데이터도 삭제되는 문제 함수적 종속 속성중 x 에 대해 y의 값이 단 하나만 존재하면 x는 y를 함수적으로 결정한다, 또는 y는 x에 함수적으로 종속적이다. 라고 할 수 있다. x는 결정자, y는 종속자라고 부른다. 완전 함수 종속 기본키를 제외한 나머지 속성들이 기본키 전체에 종속되는 것을 의미한다. 부분 함수 종..
엔티티 매니저는 CRUD작업을 수행하는 관리자 역할을 수행하고, 엔티티를 저장하는 일련의 가상 데이터베이스라고 한다. 엔티티란 엔티티는 관계형 데이터베이스에 매핑한 객체를 말한다. 엔티티 생명주기 비영속 : 엔티티가 영속성 컨텍스트와 연관이 없는 상태를 의미합니다. Member member = new Member 객체만 생성된 상태 영속 : 엔티티가 영속성 컨텍스트에 저장된 상태입니다. `em.persist(member) 준영속 : 엔티티가 영속성 컨텍스트에 있다가 분리된 상태입니다. em.detach(member), em.clear(), em.close() 삭제 : 엔티티가 영속성 컨텍스트와 데이터베이스에서 삭제된 상태입니다. em.remove(member) 엔티티 팩토리 && 엔티티 매니저 엔티티 팩..
1. 반복 및 생산성 저하 기존에 JPA를 사용하기 전에는 개발자가 SQL문을 직접 작성하고 JDBC Api를 통해 SQL을 실행시킨 뒤 해당 결과를 객체에 매핑하는 역할을 수행했습니다. 이런 일련의 과정을 통해 기능 개발을 위해 추가적인 작업이 많은 단점이 있습니다. 또한, 기능이 추가될 때 마다 아래와 같은 코드를 반복해서 추가 작업해야합니다. 예시 // sql 작성 String sql = SELECT MEMBER_ID, NAME FROM MEMBER M WHERER MEMBER_ID = ?; // sql 실행 ResultSet rs = stmt.executeQuery(sql); // 조회 결과 객체에 맵핑 String memberId = rs.getString("MEMBER_ID"); String ..
Elasticsearch의 저장속도 및 조회속도가 거의 실시간으로 빠르다고 하기에 RDBMS에 비하면 얼마나 빠를까 궁금해서 데이터 만개를 생성해서 저장하고 조회해보겠습니다. 데이터 저장 테스트 데이터 저장을 위한 2개의 컨트롤러를 생성했습니다. /api/register1은 elasticsearch에 저장하는 api, api/register2는 MySQL에 저장하는 api입니다. @PostMapping("/api/register1") public String register1(){ List list = new ArrayList(); for(int i =1; i