코멘토 - JAVA & SPRING 클린아키텍처

코멘토 실무PT 후기 챌린지 3주차 - ORM/JPA와 트랜잭션

간다12 2023. 5. 28. 13:38

1. ORM(Object Relational Mapping)

1) ORM이란

 - ORM(Object Relational Mapping), 객체 관계 맵핑

 - 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 준다.

 - 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용하므로 모델간 불일치가 존재한다. ORM을 통해 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결함.

2) 장점

 - 코드에 가독성을 높이고 직관적으로 비즈니스 로직에 집중하게 한다.

 - 객체지향적인 접근이 가능하다

 - 재사용 및 유지보수의 편리성이 증가된다.

 - DBMS에 대한 종속성이 줄어든다.

 - 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 RDBMS의 데이터 구조와 jAVA의 객체지향 모델 사이의 간격을 좁힐 수 있다.

 

2. JPA(Java Persisitence API)

 1) JPA이란 

  - ORM의 표준 인터페이스

JPA 동작원리

JPA는 Application과 JDBC 사이에서 동작하며 개발자가 JPA에 접근하면 JPA 내부에서 JDBC API를 사용하여 SQL을 호추하여 DB와 통신한다.

 

장점

 - 매우 간편한 CRUD(Persist, Merge, Find, Remove)

 - SQL 쿼리가 JPA가 처리하여 매우 간편하다

 

3. @Transational

Transaction : DB에서 상태변화의 한 주기를 의미.

@Transational 어노테이션은 해당 어노테이션이 적용되는 메소드를 하나의 트랜잭션으로 묶어주는 역할

트랜잭션 어노테이션 예제

예제에서 buyer.send()가 실행된 후 seller.receive()가 실행되는데 receive메소드에서 에러가 발생시 send메소드만 실행되어 db에 접근하여 send의 메소드만 db 데이터변경이 일어난다.

이경우에 @Transaction 어노테이션을 걸어서 send() 또한 Rollback되게하여 원상복구 시켜주어야 한다.

 

코멘토 링크 : https://comento.kr/

반응형