목록2023/08 (17)
Rootable의 개발일기
📌 SQL 중심적인 개발의 문제점 반복적인 SQL 작성DBMS에 종속적객체와 관계형 DB의 패러다임 불일치 📌 객체 vs 관계형 DB 패러다임 불일치> 🔎 상속 관계형 DB는 위와 같은 상속 관계에 있을 때 데이터 저장과 조회가 다음과 같다. //저장INSERT INTO ITEM ...INSERT INTO ALBUM ... # 조회- 각각의 테이블에 따른 조인 SQL- 상속 관계이므로 부모 객체를 통해 조회- 각각의 객체 생성... 이처럼 저장과 조회 때마다 부모와 자식은 한 몸처럼 따라다니기 때문에 관계형 DB에서는 상속 관계를 사용하지 않는다. 반면, 자바에서는 컬렉션 객체를 사용하여 다형성을 활용하면 부모 타입으로 쉽게 조회 가능하다. list.add(album); //저장Item item ..
📌 목적 서비스 계층이 다른 계층에 의해 변경 영향을 받지 않도록 하기 위함 🔎 트랜잭션 추상화 ✔ 문제점들 예를 들어 서비스 계층에서 계좌이체라는 비즈니스 로직을 수행한다면 반드시 필요한 두 메서드는 조회와 변경이다. 두 메서드 모두 DB에 접근을 해야만 결과를 내줄 수 있다. 하지만, 서비스 계층에서 트랜잭션 관련 로직인 트랜잭션 획득, 커밋, 롤백 등을 포함하면 순수 Java 로직과 데이터 접근 로직이 섞여 유지보수나 테스트에 불리하다. 그리고 가장 큰 문제는 데이터 접근 기술을 교체할 수 없다는 것이다. 그 이유는 서비스 계층에서 구체적인 접근 기술에 의존하기 때문이다. ✔ 해결책 서비스 계층이 인터페이스에 의존하도록 하자 스프링은 트랜잭션의 주요 기능을 추상화한 PlatformTransactio..
작가 rawpixel.com 출처 Freepik 📌 개요 트랜잭션은 ATM이나 데이터베이스 등의 시스템에서 더 이상 나눌 수 없는 업무 처리의 단위로, 하나 이상의 SQL문으로 구성된다. 여기서 나눌 수 없다는 것은 나눌 경우 시스템이나 데이터베이스에 심각한 오류를 초래할 수 있다는 의미이다. 이러한 개념의 기능을 데이터베이스에서 제공하는 것을 트랜잭션이라고 한다. 📌 트랜잭션 관리 트랜잭션은 하나의 논리적 작업 단위를 구성하는 하나 이상의 SQL문으로 구성되며, 모든 트랜잭션은 두 가지 상황으로 종료된다. 실행한 논리적 작업 단위 전체가 성공적으로 종료되면 그 트랜잭션은 영구적으로 데이터베이스에 저장된다. 이를 COMMIT이라 한다. 반면, SQL 실행 중 하나라도 정상적으로 종료되지 않으면 논리적인 ..
📌 HTML 폼 전송 방식 🔎 application/x-www-form-urlencoded 방식 HTML 폼 데이터를 서버에 전송하는 가장 기본적인 방법이다. Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 요청 HTTP 메시지의 헤더에 Content-Type으로 application/x-www-form-urlencoded를 추가한다. 폼에 입력한 전송할 항목을 HTTP body에 문자로 "username=kim&age=20"과 같이 &로 구분해서 전송한다. ✔ 문제점 파일은 문자가 아니라 Binary 데이터를 전송해야 하므로, 해당 방식으로는 전송이 어렵다. 또한, 보통 폼을 전송할 때 파일뿐만 아니라 다른 데이터도 함께 전달한다. 따라서, Binary 데이터와 문자 데이터를 동시에 ..