DB 78

[과목 II 1장 2절] SELECT 문

1. SELECT사용자가 입력한 데이터는 언제라도 조회할 수 있음앞에서 입력한 자료들을 조회해 보는 SQL문은 다음과 같음  1.1 에스터리스크 (*) 사용하기입력한 정보들을 보기 위해 테이블을 보고 싶은 정보들이 있는 칼럼들을 선택해 조회할 수 있음해당 테이블의 모든 칼럼 정보를 보고 싶을 경우에는 에스터리스크 (*)를 사용해 조회함  1.2 ALIAS 부여하기조회된 결과에 일종의 별명 (ALIAS, ALIASES)을부여해 칼럼 레이블을 변경할 수 있음칼럼 별명 (ALIAS)에 대한 사항을 정리하면 다음과 같음칼럼명 바로 뒤에 옴칼럼명과 ALIAS 사이에 AS, as 키워드를 사용할 수 있지만 옵션이므로 사용하지 않아도 됨 (가독성 측면에서 AS를 사용하는 편이 바람직)이중 인용부호 (Double Qu..

[과목 II 1장 1절] 관계형 데이터베이스 개요

1. 데이터베이스일반적으로 데이터베이스라고 말할 때는 특정 기업이나 조직, 개인이 필요에 따라 데이터를 일정한 형태로 저장해 놓은 것을 의미i.g. 학교에서는 학생 관리를 목적으로 학생 개개인의 정보를 모으고 기업에서는 직원들을 관리하기 위해 직원들의 이름, 부서, 월급 등의 정보를 모아둠 관리 대상이 되는 데이터의 양이 점점 많아지고 같은 데이터를 여러 사람이 동시에 다양한 용도로 사용하게 되면 단순히 엑셀 같은 개인이 관리하는 소프트웨어만으로는 한계가 따름개인의 사소한 부주의로 인해 기업의 사활이 걸린 중요한 데이터가 손상되거나 유실되는 상황까지 발생할 수 있음 따라서 많은 사용자들은 더 효율적인 데이터 관리뿐 아니라 예기치 못한 사건으로 인한 데이터 손상을 피하고, 필요한 데이터를 복구하기 위한 강..

[16장] 트랜잭션과 락

트랜잭션과 락 1. 트랜잭션과 격리 수준트랜잭션은 ACID라 하는 원자성, 일관성, 격리성 그리고 지속성을 보장해야 함원자성 (Atomicity): 트랜잭션 낸 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하든가 모두 실패해야 함일관성 (Consistency): 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 함 i.g. DB에서 정한 무결성 제약 조건을 항상 만족해야 함격리성 (Isolation): 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리해야 함, 격리성은 동시성과 관련된 성능 이슈로 인해 격리 수준을 선택할 수 있음지속성 (Durability): 트랜잭션을 성공적으로 끝내면 해당 결과가 항상 기록되어 있어야 함, 중간에 시스템 문제가 발생하더라도 DB 로그 등을..

[15장] 고급 주제와 성능 최적화

예외 처리 1. JPA 표준 예외 정리JPA 표준 예외들은 javax.persistence.PersistenceException의 자식 클래스이며 해당 예외 클래스는 RuntimeException의 자식따라서 JPA 예외는 모두 UncheckedException JPA는 표준 예외는 크게 두 가지로 나눌 수 있음트랜잭션 롤백을 표시하는 예외트랜잭션 롤백을 표시하지 않는 예외 트랜잭션 롤백을 표시하는 예외는 심각한 예외이므로 복구해서는 안됨해당 예외가 발생하면 트랜잭션을 강제로 커밋해도 트랜잭션이 커밋되지 않고 대신 javax.persistence.RollbackException 예외가 발생함  반면, 트랜잭션 롤백을 표시하지 않는 예외는 심각한 예외가 아님따라서 개발자가 트랜잭션을 커밋할지 롤백할지 판단..

[14장] 컬렉션과 부가 기능

컬렉션JPA는 자바에서 기본으로 제공하는 Collection, List, Set, Map 컬렉션을 지원하고 다음 경우에 해당 컬렉션을 사용할 수 있음@OneToMany, @ManyToMany를 사용해서 일대다나 다대다 엔티티 관계를 매핑할 때@ElementCollection을 사용해서 값 타입을 하나 이상 보관할 때 자바 컬렉션 인터페이스의 특징은 다음과 같음Collection: 자바가 제공하는 최상위 컬렉션, 하이버네이트는 중복을 허용하고 순서를 보장하지 않는다고 가정Set: 중복을 허용하지 않는 컬렉션, 순서를 보장하지 않음List: 순서가 있는 컬렉션이며 순서를 보장하고 중복을 허용Map: Key, Value 구조로 되어 있는 특수한 컬렉션  1. JPA와 컬렉션하이버네이트는 엔티티를 영속 상태로 ..

[13장] 웹 애플리케이션과 영속성 관리

트랜잭션 범위의 영속성 컨텍스트순수 J2SE 환경에서 JPA를 사용하면 개발자가 직접 엔티티 매니저를 생성하고 트랜잭션도 관리해야 하지만스프링이나 J2EE 컨테이너 환경에서 JPA를 사용하면 컨테이너가 제공하는 전략을 따라야 함 1. 스프링 컨테이너의 기본 전략스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 디폴트로 사용해당 전략은 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다는 뜻트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료같은 트랜잭션 안에서는 항상 같은 영속성 컨텍스트에 접근  스프링 프레임워크를 사용하면 보통 비즈니스 로직을 시작하는 서비스 계층에 @Transactional 어노테이션을 선언해서 트랜잭션을 시작함외부에서는 단순히 서비스 ..

[과목 I 2장 5절] 본질식별자 vs. 인조식별자

본질식별자 vs 인조식별자엔티티는 반드시 데이터를 식별할 수 있는 속성이 존재해야 하며 이를 식별자라고 지칭식별자는 대체 여부에 따라 본질식별자와 인조식별자로 분류 가능본질식별자: 업무에 의해 만들어진 식별자인조식별자: 업무적으로 만들어지지는 않지만 본질식별자가 복잡한 구성을 갖고 있으므로 인위적으로 만든 식별자 가. 본질 식별자  [그림 I-2-21] 주문상품 모델의 식별자가 본질식별자주문상품 모델은 주문 시 구매한 상품 정보를 관리 아래 표는 하나의 주문에 세 개의 상품을 구매한 것을 데이터로 표현했으며 이러한 데이터로 개발을 진행하여 주문상품 모델에 값을 Insert 하는 경우 다음과 같이 SQL로 표현 가능  주문번호상품번호주문수량11000112341110001156651100012342 나. 인..

[과목 I 2장 4절] Null 속성의 이해

1. Null 값의 연산은 언제나 Null이다Null 값은 `공백이나 숫자 0`과는 전혀 다른 의미`아직 정의되지 않은 미지의 값` 또는 `현재 데이터를 입력하지 못하는 경우`를 의미즉 Null은 값이 존재하지 않음을 말함 주문번호주문금액주문취소금액1100001100,00020,000110000215,000   위 주문 모델에 들어 있는 데이터를 바탕으로 SQL을 실행하면 다음과 같은 결과를 얻습니다.COL1, COL2, COL3는 최종 주문금액을 구하는 산식최종 주문금액은 각 주문의 주문금액에서 취소된 주문금액을 제외한 결과[표 I-2-8] 결과를 보면 Null 값이 포함되었을 경우 COL1, COL2, 그리고 COL3의 결과가 모두 다르게 출력하는 것을 알 수 있는데 이는 Null 연산은 언제나 Nu..

[과목 I 2장 3절] 모델이 표현하는 트랜잭션의 이해

트랜잭션트랜잭션은 데이터베이스의 논리적 연산단위계좌이체를 통해 트랜잭션을 설명할 수 있음돈을 보내는 사람의 계좌에서 이체금액을 차감하고, 돈을 받는 사람의 계좌에 이체금액을 가산계좌이체라는 업무는 위와 같은 두 가지 단계로 진행되며, 데이터 정합성을 위해 위 작업은 전부 실행되든지 아니면 전부 취소되든지 해야 함즉, 하나의 업무 단위로 묶여서 처리돼야 한다는 것이고 이러한 업무 단위를 트랜잭션이라고 함 부연 설명계좌이체를 하기 위해서는 먼저 A 고객의 잔고에서 이체금액을 차감하고, B 고객의 잔고에 이체금액을 가산해야 함중요한 것은 잔고를 차감하고 가산하는 단계가 모두 완료된 후에 커밋을 수행하는 것잔고 차감/가산 단계가 모두 성공해야지만 커밋이 수행되어 정상적인 데이터를 반영할 수 있음 데이터 모델링의..

[과목 I 2장 2절] 관계와 조인의 이해

1. 조인아래 모델은 고객과 주문 엔티티가 관계를 맺고 있는 모습고객 엔티티의 입장에서는 `한 명의 고객은 여러 번 주문할 수 있음`주문 엔티티 입장에서는 `각각의 주문은 반드시 한 명의 고객에 의해 발생됨`관계를 맺음으로써 생기는 현상은 고객 엔티티의 식별자인 고객번호를 주문 엔티티에 상속시킨 것즉, 관계를 맺는다는 것은 식별자를 상속시키고 해당 식별자를 매핑 키로 활용해 데이터를 결합하여 보겠다는 것 고객번호고객명100정우진101한형식102황영은 주문번호고객번호주문상태코드1100001100주문완료1100002101주문완료1100003101취소요청1100004102환불요청1100005100교환완료 주문 데이터의 [고객] 데이터에서 고객번호를 상속시킨 것을 볼 수 있음주문번호가 1100001인 주문의 고..