BACKEND 68

[Oracle SQL] DML - SELECT 기본, 조건절 사용

SELECT 데이터 베이스에서 저장된 데이터를 조회하는, 가져오는 명령문 개발자가 가장 많이 사용하고 가장 중요한 명령문으로 다양한 상황이나 조건에 맞는 데이터를 빠르고 쉽게 가져올 수 있도록 지원하고 있다. SQL 명령문을 작성할 때는 항상 키워드를 먼저 작성하고 테이블명을 먼저 작성한뒤 컬럼을 적어주는게 좋다. 모든 컬럼 조회 -- DEPT 테이블의 모든 컬럼에 대한 모든 데이터가 조회 SELECT * FROM DEPT; 특정 컬럼 조회 select 컬럼명1, 컬럼명2 from 테이블명; -- 사원의 이름, 사원번호 select ename, empno from emp; -- 사원의 이름, 사원번호, 직무번호, 급여를 가져온다 SELECT ename, empno, job, sal FROM emp; --..

BACKEND/DATABASE 2023.11.10

[Oracle SQL] SQL 명령문의 종류와 이해

SQL Structured Query Language 의 약어로 관계형 데이터베이스 관리 시스템에서 데이터를 관리하기 위한 표준 프로그래밍 언어를 뜻한다. SQL 문은 표준 언어와 비 표준언어로 나뉘며 표준 언어는 모든 RDBMS 제품군들이 지원하고 비 표준 언어는 특정 RDBMS 에서만 지원되는 언어이다. 데이터를 관리하기 위한 명령문의 분류는 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL), 트랙잭션 제어 언어(TCL) 로 나눌 수 있다. 데이터 정의 언어 (Data Definition Language, DDL) DDL은 데이터베이스 구조를 만들고 수정하고 삭제하는 명령어를 뜻한다. 테이블과 인덱스의 구조를 관리하는 언어 CREATE 새로운 데이터 베이스 구조를 만..

BACKEND/DATABASE 2023.11.09

[Oracle SQL] 데이터 딕셔너리

데이터 딕셔너리 데이터 딕셔너리는 데이터베이스 관리 시스템(DBMS)의 구조를 설명하는 시스템 테이블 + 뷰 들의 집합 데이터 베이스 스키마, 테이블, 뷰, 인덱스, 사용자, 권한 등에 관한 것이며, 데이터 베이스의 메타데이터라고도 볼 수 있다. 데이터 딕셔너리는 읽기 전용으로 DBMS만이 추가, 수정, 삭제가 가능하며 사용자는 저장된 정보 조회만 가능하다. 주요 구성 요소 테이블 메타데이터 테이블의 이름, 테이블에 있는 필드(컬럼), 각 필드의 데이터아입, 필드의 제약 조건(예: 기본키, 외래키)에 대한 정보를 포함한다. 뷰 메타데이터 뷰는 하나 이상의 테이블에서 유도된 가상 테이블로 데이터 딕셔너리는 뷰의 정의와 관련된 정보를 포함합니다. 데이터 딕셔너리 뷰는 데이터 딕셔너리에 저장된 메타데이터를 사..

BACKEND/DATABASE 2023.11.08

스프링부트 유효성 검사와 예외처리 - 예외 처리

예외 처리 애플리케이션 개발 과정에서 다양한 오류와 예외 상황에 직면하게 됩니다. 이를 처리하기 위해 자바는 try/catch 및 throw 구문을 제공합니다. 스프링 부트는 이보다 진화된 예외 처리 메커니즘을 제공하여 개발자에게 더 편리하게 예외 처리를 도와줍니다. 예외 (Exception) 애플리케이션의 정상적인 동작을 방해하는 상황을 나타냅니다. 예를 들면, 잘못된 입력값, 유효하지 않은 참조 값 등이 있습니다. 예외는 개발자가 코드 내에서 직접 처리할 수 있으므로, 적절한 코드 설계와 로직을 통해 미리 예상하고 처리할 수 있습니다. 에러 (Error) 에러는 예외와 비슷한 개념으로 여겨지는 경우가 많지만, 실제로는 근본적으로 다른 현상입니다. 에러는 주로 자바의 가상머신 (JVM)에서 발생하며, ..

BACKEND/SPRING 2023.08.27

스프링부트 유효성 검사와 예외처리 - 유효성 검사

애플리케이션의 유효성 검사(validation)는 중요한 부분입니다. 사용자로부터 입력받은 데이터의 유효성을 검사하여 데이터의 정확성, 안정성, 및 신뢰성을 보장하려고 합니다. 스프링 부트(Spring Boot)에서도 유효성 검사를 위한 다양한 기능과 라이브러리(예: JSR 380: Bean Validation 2.0)를 제공합니다. 일반적인 애플리케이션 유효성 검사의 문제점. 데이터 검증 로직의 문제점 분산된 로직: 계층별로 유효성 검사를 진행하면 검증 로직이 각 클래스별로 분산되어 있어 관리하기 어렵습니다. 중복된 코드: 검증 로직에는 의외로 중복이 많이 발생하여, 여러 곳에서 유사한 기능의 코드가 반복적으로 나타날 수 있습니다. 검증 코드의 길이: 검증해야 할 값이 많아지면, 검증 로직이 길어져 코..

BACKEND/SPRING 2023.08.27

연관관계 매핑 - 연관관계 매핑 종류와 방향

"연관관계 매핑"은 객체 지향 프로그래밍과 관계형 데이터베이스 사이에서 관계를 매핑할 때 사용되는 개념입니다. 주로 ORM (Object-Relational Mapping) 프레임워크, Java의 JPA (Java Persistence API) 또는 Python의 SQLAlchemy에서 자주 사용됩니다. 연관관계 매핑 종류와 방향 연관관계를 맺는 두 엔티티 간에 생성할 수 있는 연관관계의 종류 일대일 (OneToOne): 한 엔티티가 다른 엔티티를 하나만 참조할 수 있습니다. 일대다 (OneToMany): 한 엔티티가 여러 개의 다른 엔티티를 참조할 수 있습니다. 다대일 (ManyToOne): 여러 엔티티가 한 개의 다른 엔티티를 참조할 수 있습니다. 다대다 (ManyToMany): 여러 엔티티가 여러 ..

BACKEND/SPRING 2023.08.20

Spring Data JPA 활용 - JPA Auditing 적용

Spring Data JPA의 Auditing 기능은 엔터티의 변경시점에 언제, 누가 엔터티를 생성, 변경했는지에 대한 정보를 자동으로 등록할 수 있게 도와줍니다. JPA Auditing의 주요 기능 @CreatedBy, @LastModifiedBy: 엔터티가 생성 또는 수정될 때의 수정자 정보를 기록 @CreatedDate, @LastModifiedDate: 엔터티가 생성 또는 수정된 시간을 기록 @EnableJpaAuditing: Spring Data JPA의 Auditing 기능을 활성화 JPA Auditing 적용 방법 Auditing을 활성화 메인 애플리케이션 클래스 또는 설정 클래스에 @EnableJpaAuditing 애노테이션을 추가합니다. @SpringBootApplication @Enab..

BACKEND/SPRING 2023.08.13

Spring Data JPA 활용 - @Query 어노테이션과 QueryDSL

Spring Data JPA는 쿼리 메서드의 이름을 기반으로 자동으로 쿼리를 생성할 수 있지만, 때로는 개발자가 정확한 쿼리를 작성해야 할 필요가 있습니다. 이때 사용하는 것이 @Query 어노테이션입니다. QueryDSL은 타입-세이프한 방식으로 쿼리를 작성하는 프레임워크로, 복잡한 쿼리의 작성과 재사용을 도와줍니다. @Query 어노테이션 Spring Data JPA는 @Query 어노테이션을 통해 JPQL 또는 SQL을 직접 사용하여 데이터베이스 쿼리를 지정할 수 있게 합니다. 이는 기본 제공되는 메서드 이름 기반 쿼리로 해결하기 어려운 복잡한 쿼리 요구 사항을 처리하는 데 유용합니다. JPQL 지원: Java Persistence Query Language를 사용하여 객체 지향 쿼리를 작성할 수 ..

BACKEND/SPRING 2023.08.13

Spring Data JPA 활용 - 정렬과 페이징 처리

Spring Data JPA는 정렬과 페이징 처리를 간단하게 지원합니다. PagingAndSortingRepository를 상속받으면 기본적인 페이징과 정렬 기능을 사용할 수 있습니다. 정렬 처리하기 일반적인 쿼리문에서 정렬을 사용할 때는 ORDER BY 구문을 사용합니다. 쿼리 메서드로 정렬 기능에 동일한 키워드가 사용됩니다. public interface UserRepository extends JpaRepository { List findByNameOrderByNumberAsc(String name); List findByNameOrderByNumberDesc(String name); } // 서비스나 컨트롤러에서 사용 예시 userRepository.findByName("John"); Spring..

BACKEND/SPRING 2023.08.13

Spring Data JPA 활용 - JPQL과 쿼리 메서드

Spring Data JPA를 사용하면 데이터 접근 코드를 간소화하고 개발 생산성을 향상시킬 수 있습다. JPQL (Java Persistence Query Language)는 엔터티 객체를 중심으로 데이터를 쿼리하기 위한 언어입니다. 동적 쿼리 Spring Data JPA는 메소드 이름을 기반으로 쿼리를 생성하는 기능을 제공합니다. 이때 사용되는 메서드 이름의 주제 키워드를 이용하면 쿼리를 자동으로 생성할 수 있습니다. 쿼리 메서드의 생성 쿼리 메서드는 크게 동작을 결정하는 주제와 서술어로 구분하며 키워드로 쿼리의 주제를 정하먀 By는 서술어의 시작을 나타내는 구분자 역할을 합니다. // (리턴타입) + (주제 + 서술어(속성)) 구조의 메서드 List findByName(String name); 쿼리..

BACKEND/SPRING 2023.08.13