Backend

Backend/Database

JPA VS Mybatis

JPA VS MybatisJPA와 MyBatis는 데이터베이스와의 상호작용을 위한 두 가지 주요 프레임워크로, 서로 다른 철학과 사용 방식을 가지고 있다. JPA (Java Persistence Api)자바 ORM (Object-Relational Mapping)을 구현하는 표준 스펙. OOP 언어에서 사용하는 객체 모델과 RDB 테이블 간의 매핑을 자동으로 처리해준다.특징ORM: JPA는 객체와 데이터베이스 테이블 간의 매핑을 자동으로 처리. SQL을 직접 작성하지 않아도, 엔터티 클래스와 데이터베이스 테이블 간의 매핑 규칙을 기반으로 데이터를 저장하고 조회한다추상화: SQL 대신 JPQL(Java Persistence Query Language)을 사용하여 객체를 기반으로 쿼리를 작성한다자동 관리: ..

Backend/Docker

클라우드(Cloud), IaaS, PaaS, SaaS, 온프레미스

클라우드란?전 세계에 분산된 서버 네트워크를 통해 컴퓨팅 리소스를 이용할 수 있는 IT 환경클라우드를 이용하면, 인터넷을 통해 언제 어디서나 필요한 데이터, 애플리케이션, 컴퓨팅 리소스에 접속할 수 있다.클라우드 VS 클라우드 컴퓨팅 VS 클라우드 서비스클라우드 컴퓨팅(Cloud Computing): 클라우드를 이용하여 컴퓨팅 자원을 사용하는 기술적인 방법. 이는 서버, 스토리지, 네트워크 등의 자원을 가상화하여 사용자에게 제공하며, 필요에 따라 이를 확장하거나 축소할 수 있다.클라우드 서비스(Cloud Service): 클라우드 컴퓨팅을 기반으로 제공되는 서비스. 이는 다양한 형태로 제공될 수 있으며, 대표적으로는 SaaS(Software as a Service, 소프트웨어 기반 서비스), PaaS(P..

Backend/Django

django 설치 및 프로젝트 생성

가상환경 생성 및 활성화 virtualenv 설치 프로젝트 폴더 하나 생성 후 $ pip install virtualenv 가상환경 만들기 // python 3.7 이상 $ python -m venv myenv // python 3.7 이하 $ virtualenv myenv 가상 환경 활성화 $ source myenv/Scripts/activate 하면 하단에 (myenv)가 에코되면서 가상 환경 활성화가 완료된다. VSCode 인터프리터 선택 (반드시 가상 환경이 활성화된 상태에서 진행) ctrl+shift+p → python interpreter → ‘myenv’: venv 후에 터미널 창 (git bash) 열면 자동으로 가상 환경이 활성화된다. django 설치 $ pip install djang..

Backend/Database

[MySQL] Group by, Having, Having과 Where의 차이

Group by ~ Having 절 Group by: 특정 열을 기준으로 데이터를 그룹화. group by의 기준은 여러개가 될 수도 있다. Having: 집계 함수(예: COUNT, SUM, AVG)를 사용하여 그룹화된 데이터를 필터링. Having과 Where의 차이 HAVING Clause WHERE Clause The HAVING clause checks the condition on a group of rows. (한 그룹 내에서 조건을 확인 한다) The WHERE clause checks the condition on each individual row. (모든 행에 대해 각각 조건을 확인한다) The HAVING is used with aggregate functions. (집계 함수와 함..

Backend/Database

[MySQL] Date 관련 함수 정리

Date 타입 원하는 형식으로 출력하기 date_format(date, format) 날짜 %Y 4자리 년도 (1999, 2023) %y 2자리 년도 (99, 23) %M 영문 월 (January, Feburary, ..., December) %b 짧은 영문 월 (Jan, Feb, ..., Dec) %m 월 (01, 02, 03, ..., 12) %c 월 (1, 2, 3, ..., 12) %d 일 (01, 02, 03, ..., 31) %e 일 (1, 2, 3, ..., 31) %W 영문 요일 (Sunday, ..., Saturday) %a 짧은 영문 요일 (Sun, ..., Sat) %w 일주일의 몇번째 요일인가 (0: 일, 1: 월, ..., 6: 토) 시간 %k 24시 형식의 시간 (00, 01, ..

Backend/JPA

[JPA] 상속 관계 매핑

상속 관계 매핑 전략 상속 관계 매핑이란 객체의 상속 구조와 DB의 슈퍼-서브타입 관계(아이템-영화/책/앨범 관계)를 매핑하는 것. 객체는 상속관계가 존재하지만 대부분의 RDB는 상속 관계가 없다. 이것을 슈퍼-서브타입 관계라는 모델링 기법으로 나타내 주는 것. 슈퍼-서브타입 자세히 DB모델링 - 관계 (슈퍼-서브타입) 논리 모델 → 물리 모델 구현 세가지 @Inheritance(strategy=InheritanceType.XXX) stategy 설정 JOINED SINGLE_TABLE(=default) : 단일 테이블 전략 TABLE_PER_CLASS @DiscriminatorColumn(name="DTYPE") 부모 클래스에 선언. 하위 클래스를 구분하는 용도의 컬럼을 생성함. (DTYPE 컬럼에 영..

Backend/JPA

[JPA] 연관 관계 매핑

연관 관계 정의 규칙 1. 방향 (단방향, 양방향) DB 테이블은 외래 키 하나로 양 쪽 테이블 조인이 가능하기 때문에 단방향, 양방향 나눌 필요가 없다. 그러나 객체는 참조용 필드가 있는 객체만 다른 객체를 참조할 수 있다. 그래서 두 객체 사이에 하나의 객체만 참조용 필드를 갖고 있으면 단방향, 두 객체 모두가 각각 참조용 필드를 갖고 참조하면 양방향 관계라고 한다. 무조건적인 양방향 매핑은 복잡성을 증가시키고 유지 보수도 어렵게 만들기 때문에 기본적으로 단방향 매핑을 사용하되 역방향 객체 탐색이 반드시 필요한 경우에 추가하는 것이 바람직하다. 고객(Member) 객체와 주문(Order) 객체가 있을 때, 고객이 주문한 내역을 모두 확인하기 위해서는 고객 객체에 주문을 참조할 수 있는 필드가 필요하다..

Backend/Testing

SpringBoot + JUnit으로 JPA 테스트하기 (mysql, mongodb)

1. build.gradle 설정 dependencies { ... // Junit5 testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' } test { useJUnitPlatform { includeTags 'fast' excludeTags 'slow' } } build.gradle의 dependencies와 test에 위의 코드를 추가한다. 2. application.yml 설정 원하는 DB를 연결하면 된다. 나는 MySQL과 Mongo..

Backend/Testing

JUnit이란?

Junit5란? Patform: JVM에서 테스트 프레임 워크를 실행시키기 위한 기반. TestEngine API 제공 Jupiter: JUnit5를 지원하는 TestEngine API 구현체 Vintage: Junit4와 3을 지원하는 TestEngin 구현체 단위테스트란? 응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트이다. Junit4와 Junit5의 차이점 JUnit4는 하나의 Jar파일로 dependency가 추가되어, Junit이 참조하는 다른 라이브러리가 있는 형태인데 JUnit5부터는 그 자체로 여러 모듈화가 된다. 어노테이션 @Test: 테스트 메서드임 @BeforeAll: 해당 클래스에 위치한 모든 테스트 메서드 실행 전에 딱 한 번 ..

Backend

[WebSocket] spring-websocket-chat 분석

갓갓 소스 코드 출처: https://daddyprogrammer.org/post/series/spring-websocket-chat-server/ 웹소켓(websocket)으로 채팅서버 만들기 웹소켓(websocket)으로 채팅서버 만들기 daddyprogrammer.org 대충 stomp 로직 분석한 내 노션 글.. https://fringe-paneer-bfc.notion.site/Socket-Chat-8d123b31ef964a719778f5f38e8a920c Socket Chat 채팅방 fringe-paneer-bfc.notion.site

얌얌념념
'Backend' 카테고리의 글 목록