목록전체 글 (155)
Rootable의 개발일기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zwGMi/btsqYQcX0my/q30KitxoBwNe3yv7Bkbwq1/img.png)
📌 ORM(Object-relational mapping) 기술 객체는 객체대로 관계형 DB는 관계형 DB대로 설계하고, ORM 프레임워크가 중간에서 매핑해 주는 식으로 동작하는 객체와 관계형 DB를 매핑해 주는 기술이다. JPA는 애플리케이션과 JDBC 사이에서 동작하며, 객체를 다루듯이 DB 리소스를 다룰 수 있도록 한다. 🔎 예제 JPA에서 하나의 테이블을 Entity 객체라고 하며, 아래와 같이 자바 코드를 통해 하나의 테이블을 설계할 수 있다. @Entity @Data public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @Column(name = "USERNAME") private String..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/x4tg9/btsqXVExENx/naiW6R82K2MKWFaKKWBdj0/img.png)
📌 SQL 중심적인 개발의 문제점 반복적인 SQL 작성DBMS에 종속적객체와 관계형 DB의 패러다임 불일치 📌 객체 vs 관계형 DB 패러다임 불일치> 🔎 상속 관계형 DB는 위와 같은 상속 관계에 있을 때 데이터 저장과 조회가 다음과 같다. //저장INSERT INTO ITEM ...INSERT INTO ALBUM ... # 조회- 각각의 테이블에 따른 조인 SQL- 상속 관계이므로 부모 객체를 통해 조회- 각각의 객체 생성... 이처럼 저장과 조회 때마다 부모와 자식은 한 몸처럼 따라다니기 때문에 관계형 DB에서는 상속 관계를 사용하지 않는다. 반면, 자바에서는 컬렉션 객체를 사용하여 다형성을 활용하면 부모 타입으로 쉽게 조회 가능하다. list.add(album); //저장Item item ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EncrZ/btsqwWdXNzZ/ycLfVpwxk0b8BQhkk3qDT0/img.png)
📌 목적 서비스 계층이 다른 계층에 의해 변경 영향을 받지 않도록 하기 위함 🔎 트랜잭션 추상화 ✔ 문제점들 예를 들어 서비스 계층에서 계좌이체라는 비즈니스 로직을 수행한다면 반드시 필요한 두 메서드는 조회와 변경이다. 두 메서드 모두 DB에 접근을 해야만 결과를 내줄 수 있다. 하지만, 서비스 계층에서 트랜잭션 관련 로직인 트랜잭션 획득, 커밋, 롤백 등을 포함하면 순수 Java 로직과 데이터 접근 로직이 섞여 유지보수나 테스트에 불리하다. 그리고 가장 큰 문제는 데이터 접근 기술을 교체할 수 없다는 것이다. 그 이유는 서비스 계층에서 구체적인 접근 기술에 의존하기 때문이다. ✔ 해결책 서비스 계층이 인터페이스에 의존하도록 하자 스프링은 트랜잭션의 주요 기능을 추상화한 PlatformTransactio..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rJghl/btsqrEqYzY3/r5i3eAUFx2DDhvm6V9EyU1/img.jpg)
작가 rawpixel.com 출처 Freepik 📌 개요 트랜잭션은 ATM이나 데이터베이스 등의 시스템에서 더 이상 나눌 수 없는 업무 처리의 단위로, 하나 이상의 SQL문으로 구성된다. 여기서 나눌 수 없다는 것은 나눌 경우 시스템이나 데이터베이스에 심각한 오류를 초래할 수 있다는 의미이다. 이러한 개념의 기능을 데이터베이스에서 제공하는 것을 트랜잭션이라고 한다. 📌 트랜잭션 관리 트랜잭션은 하나의 논리적 작업 단위를 구성하는 하나 이상의 SQL문으로 구성되며, 모든 트랜잭션은 두 가지 상황으로 종료된다. 실행한 논리적 작업 단위 전체가 성공적으로 종료되면 그 트랜잭션은 영구적으로 데이터베이스에 저장된다. 이를 COMMIT이라 한다. 반면, SQL 실행 중 하나라도 정상적으로 종료되지 않으면 논리적인 ..