GitHub

https://github.com/Choidongjun0830

Spring 72

[Spring boot& JPA 1] 도메인 분석 설계

도메인 모델과 테이블 설계회원, 주문, 상품의 관계회원은 여러 상품을 주문 가능하고, 한 번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계이다. 하지만, 다대다 관계는 거의 사용하지 않아서 주문 상품이라는 엔티티를 추가해서 다대다 관계를 일대다, 다대일 관계로 풀어낸다.회원 엔티티 분석Member이름과 임베디드 타입인 Address, 주문을 리스트로 가진다.Order한 번 주문시 여러 Item을 담을 수 있어서 주문(Order)과 주문 상품(OrderItem)은 일대다 관계를 가진다.상품을 주문한 회원, 배송 정보, 주문 날짜, 주문 상태를 가짐.주문 상태는 열거형으로 ORDER, CANCEL을 표현할 수 있음.OrderItem주문한 상품 정보와 주문 금액과 주문 수량을 가지고 있..

Spring 2024.04.28

[Spring DB2] 스프링 트랜잭션 전파2 - 활용

예제 프로젝트 시작 //Member.java @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String username; public Member() { //JPA 스펙상 있어야함. } public Member(String username) { this.username = username; } } //Log.java @Entity @Getter @Setter public class Log { @Id @GeneratedValue private Long id; private String message; public Log() { } public Log(String message) { this...

Spring 2024.03.31

[Spring DB2] 스프링 트랜잭션 전파1 - 기본

트랜잭션이 둘 이상있을 때 어떻게 동작하는지, 스프링이 제공하는 트랜잭션 전파라는 개념 알아보기. 트랜잭션 두번 사용 - 트랜잭션1이 완전히 끝나고 트랜잭션2가 시작 //트랜잭션 두번 사용 //트랜잭션1이 완전히 끝나고 트랜잭션2 시작 @Test void double_commit() { log.info("트랜잭션1 시작"); TransactionStatus tx1 = txManager.getTransaction(new DefaultTransactionAttribute()); log.info("트랜잭션1 커밋"); txManager.commit(tx1); log.info("트랜잭션2 시작"); TransactionStatus tx2 = txManager.getTransaction(new DefaultTra..

Spring 2024.03.31

[Spring DB2] 스프링 트랜잭션 이해 - 2

트랜잭션 옵션 value, transactionManager 트랜잭션을 사용하려면 먼저 스프링 빈에 등록된 어떤 트랜잭션 매니저를 사용할 지 알아야 한다. 코드로 직접 트랜잭션을 사용할 때 트랜잭션 매니저를 주입 받아서 사용했다. @Transactional에서도 트랜잭션 프록시가 사용할 트랜잭션 매니저를 지정해주어야 한다. value와 transactionManager 둘 중 하나에 스프링 빈 이름을 적어주면 트랜잭션 매니저가 지정되는데, 이 값을 생략하면 기본으로 등록된 트랜잭션 매니저를 사용한다. 그래서 대부분 생략한다. 트랜잭션 매니저가 둘 이상이면 적어준다. rollbackFor 예외 발생 시 스프링 트랜잭션의 기본 정책은 언체크 예외인 'RuntimeException', 'Error'와 이 하위..

Spring 2024.03.28

[Spring DB2] 스프링 트랜잭션 이해 - 1

데이터 베이스 접근 기술마다 트랜잭션을 처리하는 방식이 다르다. 그래서 기술을 바꾸면 트랜잭션을 사용하는 코드도 모두 바꿔야 한다. 스프링은 'PlatformTransactionManager'라는 인터페이스를 통해 트랜잭션 추상화를 제공해주고, 그러면 다른 기술도 동일한 방식으로 사용할 수 있게 된다. 게다가 각 데이터 접근 기술에 대한 트랜잭션 매니저의 구현체도 제공한다. 그래서 개발자가 구현할 일은 없이 잘 가져가다 쓰기만 하면 된다. 또, 스프링 부트는 어떤 데이터 접근 기술을 사용하는지를 자동으로 인식해서 적절한 트랜잭션 매니저를 선택하여 스프링 빈에 등록해준다. 트랜잭션 사용방식 선언적 트랜잭션 관리 @Transactional 이름 그대로 해당 로직에 트랜잭션을 적용하겠다라고 선언하기만 하면 트..

Spring 2024.03.27

[Spring DB2] 데이터 접근 기술 - 활용 방안

스프링 데이터 JPA 예제와 트레이드 오프 스프링 데이터 JPA 예제 클래스 의존 관계 ItemSerive가 ItemRepository 인터페이스에 의존 ItemRepository를 JpaItemRepositoryV2가 구현 JpaItemRepositoryV2가 SpringDataJpaItemRepository에 의존 SpringDataJpaItemRepository 인터페이스는 JpaRepository 인터페이스를 상속 SpringDataJpaItem 프록시 리포지토리가 SpringDataJpaItemRepository를 구현 중간에서 JpaItemRepository가 어댑터 역할을 해준 덕분에 itemService가 사용하는 itemRepository 인터페이스를 그대로 사용할 수 있고, 클라이언트인..

Spring 2024.03.26
728x90