예제 소스코드(Google Drive)https://drive.google.com/file/d/1YrsS9-sjHM4QSLhe-5GZsvcfVlvMI_Z9/view?usp=sharingapplication.property 파일 수정해서 DB 연결해서 테스트해 보실 수 있습니다. (소스코드에서는 xxx처리) JPQL을 이용해서 DTO를 반환??? JPA를 이용하는 경우, 특정 상황에서 Entity 전체가 아닌 일부 컬럼만을 가져오고 싶을 때, @Query 어노테이션 내에 작성하는 JPQL에서 Java 객체를 생성하는 코드를 추가하는 방법을 사용할 수 있다. Spring-data-jpa가 제공하는 JpaRepository 인터페이스를 이용할 것이고, 회원과 주문으로 구성된 간단한 예제이다.회원(MemberE..
예제에 쓰이는 'DUAL'테이블은 SQL 쿼리를 작성할 때 특정 데이터를 검색할 필요 없이, 오로지 표현식의 값을 계산하거나 데이터베이스 함수를 실행하기 위해 사용하는 가상 테이블이라고 합니다.하나의 더미 행만을 포함하고 있어서, 테스트 목적이나, DB에서 직접 계산식을 수행해야 할 때 사용한다고 합니다. 문자 관련 함수CHARACTER(ASCII 코드) : 아스키코드 -> 문자 변환select CHARACTER(65) from dual;LOWER / UPPER : 대/소문자 변환select LOWER('Hello'), UPPER('Hello') from DUAL; TRIM : 공백 제거LTRIM : 왼쪽 공백 제거select LTRIM(' Hello') from DUAL;RTRIM(문자열) : 오..
SQLD를 준비하며 개인적으로 조금 외워두면 좋을 것 같은 것들만 적어보았습니다.참고한 책은 "2024 유선배 SQL개발자(SQLD) 과외노트"입니다. 01 데이터 모델의 이해모델링의 특징추상화단순화명확화상세화모델링의 3가지 관점데이터 관점프로세스 관점데이터와 프로세스의 상관 관점 : 관계 위주데이터의 품질 보장을 위해 유의해야 할 점중복 : 중복 x비유연성 : 유연하게 설계비일관성 : 일관성 있게 설계모델링의 3가지 단계개념적 데이터 모델링 : 추상화 수준이 가장 높음논리적 데이터 모델링 : 재사용성이 가장 높음 - key, 속성, 관계 등 모두 표현하는 단계물리적 데이터 모델링 : 실제 DB에 구현할 수 있도록 물리적인 성격을 고려3단계 스키마 구조..
트랜잭션? 트랜잭션은 하나의 데이터 교환 또는 변경을 안전하게 처리하도록 보장해 주는 것을 의미한다. 한 번의 애플리케이션 로직으로 인해 두 개 이상의 데이터가 영향을 받는 경우, 각각의 데이터에 대한 변경이 완전하게 끝난 후 데이터베이스에 정상적으로 반영하는 것이다. 만약 데이터 처리 중 문제가 발생 시 로직 실행 전으로 되돌리는 기능을 지원한다. 트랜잭션에 대해 모르신다면 아래 글을 읽어보시길 바랍니다. 📁[Database] 트랜잭션의 동작 원리와 ACID 속성 트랜잭션 격리성 ( Transaction Isolation ) 트랜잭션의 격리성은 트랜잭션의 여러 특징들 중 하나이다. 격리성은 실행 중인 트랜잭션의 중간에 다른 트랜잭션이 접근할 수 없도록 하는 것을 뜻한다. 이런 격리성의 수준을 조절할 수..
[JDBC] 트랜잭션 적용 - Connection 직접 이용 JDBC 코드를 직접 짤 때 트랜잭션을 이용하는 방법이다. 비즈니스 로직을 실행할 때, 하나의 커넥션 내에서 동작해야 하므로 메서드 사용 시 connection을 파라미터로 넘겨야 한다. 따라서 서비스 계층, 데이터접근 계층에 모두 Connection을 파라미터로 받아서 이용해야 한다. public void loadLotsOfData(DataList dataList) { String sql = "insert into table values ( /* ... */)"; Connection conn = null; PreparedStatement pstmt = null; try { conn = getConnection(); pstmt = conn.pr..
DB Lock (락) DB Lock(락)은 하나의 데이터를 다른 세션에서 수정하는 것을 방지하는 것이다. 만약 세션 A에서 데이터를 수정하기 위해 트랜잭션을 진행 중이고 아직 커밋 또는 롤백을 수행하지 않았는데, 다른 세션 B에서 동시에 같은 데이터를 수정하게 된다면 여러 가지 문제가 발생할 것이다. 트랜잭션의 원자성이 깨지는 것이다. DB Lock은 이런 문제를 방지하기 위해 트랜잭션을 시작하고 해당 트랜잭션(세션)이 종료되기 전까지 다른 세션에서 해당 데이터를 수정할 수 없도록 막아주는 역할을 한다. 락을 고려한 트랜잭션 과정 락(Lock)은 해당 데이터 수정에 대한 권한 같은 것으로 생각하면 된다. 트랜잭션을 시작하고 쿼리를 실행함과 동시에 락을 획득한다. 획득한 락은 트랜잭션 종료(커밋/롤백) 시..
트랜잭션(Transaction)이란? 트랜잭션은 하나의 데이터 교환 또는 변경을 안전하게 처리하도록 보장해 주는 것을 의미한다. 한 번의 애플리케이션 로직으로 인해 두 개 이상의 데이터가 영향을 받는 경우, 각각의 데이터에 대한 변경이 완전하게 끝난 후 데이터베이스에 정상적으로 반영하는 것이다. 만약 데이터 처리 중 문제가 발생 시 로직 실행 전으로 되돌리는 기능을 지원한다. 데이터베이스에 정상적으로 반영하는 것을 커밋(Commit) , 되돌리는 것을 롤백(Rollback)이라고 한다. 트랜잭션 ACID 속성 ACID는 트랜잭션을 정의하는 4가지 중대한 속성을 가리키는 약어입니다. 즉 원자성, 일관성, 신뢰성, 격리 그리고 영속성을 의미합니다. 원자성(Atomicity) 트랜잭션 내에서 실행한 작업들은 ..