데이터 모델링의 개념데이터베이스 생명주기데이터베이스 생명 주기는 데이터베이스 생성과 운영에 관련된 특징을 의미하고, 아래의 5단계로 구성됩니다.요구사항 수집 및 분석설계구현운영감시 및 개선 요구수항 수집 및 분석의 단계에서는 사용자들의 요구사항을 듣고 분석하여 데이터베이스를 어느 정도의 크기로 구축할지 범위를 정합니다.설계 단계에서는 분석된 요구사항을 기반으로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계) 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계)합니다. 즉, 설계 단계에서 개념적 모델링을 하여 ERD를 도출하고 이를 이용하여 관계 스키마 모델을 도출하고 이를 물리적 모델링을 통해 관계 스키마를 도출합니다.구현 단계에서는 설계 단계에서 생..
실무에서는 우리가 흔히 사용하는 System.out.println()과 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하거나 디버깅하지 않고, 별도의 logging 라이브러리를 사용하여 디버깅이나 타임스탬프 등 정해진 양식에 맞추어 화면 상이나 파일 로그를 남길 목적으로 사용합니다.그럼, 본격적으로 logging에 대해 알아보겠습니다.logging의 종류logging 관련 프레임워크는 대표적으로 log4j, logback, log4j2 그리고 그것을 통합하여 인터페이스로 제공하는 SLF4J 라이브러리가 있습니다. log4j → logback → log4j2 순으로 등장하였으며, logback과 log4j2는 둘다 log4j를 기반으로 하고 있기 때문에 설정이나 사용 방법이 유사합니다. log4j는 20..
데이터베이스 프로그래밍의 개념데이터베이스 프로그래밍프로그래밍: 프로그램을 설계하고 소스코드를 작성하여 디버깅하는 과정데이터베이스 프로그래밍: DBMS에 데이터를 정의하고 저장된 데이터를 읽어와 데이터를 변경하는 프로그램을 작성하는 과정입니다. 일반 프로그래밍과는 데이터베이스 언어인 SQL을 포함한다는 점이 다릅니다.데이터베이스 프로그래밍 중에서도 SQL Interface와 Embedded Programming을 사용하는 경우가 있습니다. 데이터베이스 프로그래밍 방법SQL 전용 언어를 사용하는 방법일반 프로그래밍 언어에 SQL을 삽입하여 사용하는 방법웹 프로그래밍 언어에 SQL을 삽입하여 사용하는 방법4gl (4th Generation Language)일반적으로 기계어를 1세대, 어셈블리 언어를 2세대..
RequstBody, RequestParam, ModelAttribute란?@RequestParam@RequestParam은 1개의 HTTP 요청을 받기 위해 사용합니다. @RequestParam은 필수 여부가 true이기 때문에 반드시 파라미터가 전송되어야 합니다. 파라미터가 전송되지 않을 시 400 Error가 발생합니다. 반드시 필요한 값이 아니라면 required 옵션을 false로 지정하면 되고 defaultValue 옵션을 사용하면 기본 값을 지정할 수 있습니다. @RequestBody@RequestBody는 클라이언트가 전송하는 JSON 형태의 HTTP Body를 Java 객체로 변환시켜 주는 역할을 합니다. @RequestBody로 받는 데이터는 Spring에서 관리하는 Message C..
DAO(Data Access Object)DAO는 실제로 DB의 Data에 접근하기 위한 객체입니다.실제로 DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행합니다.Service와 DB를 연결하는 고리 역할을 합니다.Repository package가 바로 DAO입니다.@Repository@RequiredArgsConstructorpublic class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(..
Spring의 Lombok 라이브러리는 불필요한 코드와 작업을 줄여주는 좋은 라이브러리이지만, 무턱대고 사용할 경우 코드를 이해하는데 어려울 수 있습니다. Lombok 라이브러리에는 생성자를 자동으로 생성해주는 어노테이션이 3가지 있습니다.@NoArgsConstructor: Default 생성자를 생성합니다.@AllArgsConstructor: 모든 필드 값을 파라미터로 받는 생성자를 생성합니다.@RequiredArgsConstructor: final이나 @NonNull로 선언된 필드만을 파라미터로 받는 생성자를 생성합니다. @NoArgsConstructor@NoArgsConstructor 어노테이션을 사용하면 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있습니다.public cla..
내장 함수내장 함수SQL에서는 함수의 개념을 사용합니다. 함수란 특정 값을 입력받아 그 값을 계산하여 결과 값을 돌려주는 것을 의미합니다.함수는 DBMS가 제공하는 내장 함수(built-in function)와 사용자가 필요에 따라 직접 정의하는 사용자 정의 함수(user-defined function)로 나누어집니다.SQL 내장 함수는 상수나 속성 이름을 입력 값으로 받아 단일 값을 결과로 반환합니다.모든 내장 함수는 최초에 선언될 때 유효한 입력 값을 받아야 합니다. 숫자 함수 문자 함수 날짜 및 시간 함수 NULL 값 처리NULL은 아직 지정되지 않은 값으로 0 또는 " (빈문자), ' ' (공백) 과는 다른 특별한 값입니다.NULL 값은 비교 연산자로 비교가 불가능합니다.NULL 값의 산술 연산..
내장 함수내장 함수내장 함수는 DBMS에서 제공하는 기본적인 함수들로 데이터 처리 및 쿼리 작업을 수행하는데 사용됩니다.내장 함수는 크게 2가지로 나뉘어 집니다.단일 행 함수: 문자형 함수, 숫자형 함수, 날짜형 함수, 형 변환 함수, NULL 관련 함수다중 행 함수: 집계 함수, 그룹 함수, 윈도우 함수 단일 행 함수단일 행 함수에는 문자형 함수, 숫자형 함수, 날짜형 함수, 형 변환 함수, NULL 관련 함수가 있습니다.1. 문자형 함수문자형 함수는 문자 또는 문자열을 입력받아 처리하는 함수로, SELECT, WHERE, ORDER BY 절에서 사용할 수 있습니다.함수 설명LOWER(문자열)문자열을 소문자로 변환합니다.UPPER(문자열)문자열을 대문자로 변환합니다.INITCAP(문자열)문자열의 첫 ..
JPA란?JPA는 Java Persistence API의 약자로, 자바 객체를 관계형 데이터베이스에 영속적으로 저장하고 조회할 수 있는 ORM 기술에 대한 표준 명세를 의미합니다. JPA를 통해 개발자는 SQL 쿼리를 작성하지 않고도 객체를 통해 데이터베이스를 조작할 수 있으며, 객체 지향적인 코드 작성과 유지 보수성이 향상됩니다.Spring Data JPA인터페이스인 JPA를 사용하기 위해선 구현체가 필요합니다. 대표적으로 Hibernate, Eclipse Link 등이 있습니다. 하지만, Spring에서는 JPA를 사용할 때 이 구현체들을 직접 다루지 않고, 구현체들을 좀 더 쉽게 사용하고자 추상화 시킨 Spring Data JPA라는 모듈을 이용하여 JPA 기술을 다룹니다.JPA → Hiberna..
Spring JPA의 엔티티 대부분은 @Id 어노테이션을 1개 씩만 갖는 단일 키 구조를 띄고 있습니다.하지만, 필요에 따라 단일키가 아닌 복합키로 기본 키를 설정해야 할 때가 있습니다. 이번에는 JPA를 통해 복합키를 지정하는 방법을 알아보겠습니다.Spring JPA에서 복합키를 지정하는 방법에는 2가지가 있습니다.@EmbeddedId을 사용하는 방식 (→ 객체 지향 방식에 가깝습니다.)@IdClass을 사용하는 방식 (→ DB방식에 가깝습니다.?) @EmbeddedId다음과 같이 기본키가 (emp_name, emp_no)의 복합키로 이루어진 emp 테이블이 있습니다.create table emp ( emp_name varchar(255) not null, emp_no integer not ..
- Total
- Today
- Yesterday