반응형

2025/06 13

상품 도메인 개발

구현 기능- 상품 등록- 상품 목록 조회- 상품 수정 순서- 상품 엔티티 개발(비즈니스 로직 추가)- 상품 리포지토리 개발- 상품 서비스 개발, 상품 기능 테스트 상품 엔티티 개발(비즈니스 로직 추가)@Entity@Getter@Setter@Inheritance(strategy = InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name = "dtype")public abstract class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; private String name; private int price; private int stockQuanti..

공부/JPA 2025.06.30

애플리케이션 구현 준비

회원 도메인 개발구현 기능- 회원 등록- 회원 목록 조회 순서- 회원 엔티티 코드 다시 보기- 회원 리포지토리 개발- 회원 서비스 개발- 회원 기능 테스트 회원 리포지토리 개발@Repositorypublic class MemberRepository { @PersistenceContext private EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id); } public List findAll() { return em.createQu..

공부/JPA 2025.06.30

애플리케이션 구현 준비

- 회원 기능 - 회원 등록 - 회원 조회- 상품 기능 - 상품 등록 - 상품 수정 - 상품 조회- 주문 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소 예제를 단순화 하기 위해 다음 기능은 구현하지 않는다.- 로그인과 권한 관리 X- 파라미터 검증과 예외 처리 X- 상품은 도서만 사용- 카테고리는 사용 X- 배송 정보는 사용 X 계층형 구조 사용- controller, web : 웹 계층- service : 비즈니스 로직, 트랜잭션 처리- repository : JPA를 직접 사용하는 계층, 엔티티 매니저 사용- domain : 엔티티가 모여있는 계층, 모든 계층에서 사용 패키지 구조- jpabook.jpashop - domain - exce..

공부/JPA 2025.06.27

도메인 분석 설계

요구사항 분석기능 목록은 다음과 같다.- 회원 기능 - 회원 등록 - 회원 조회- 상품 기능 - 상품 등록 - 상품 수정 - 상품 조회- 주문 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소- 기타 요구사항 - 상품은 재고 관리가 필요하다. - 상품의 종류는 도서, 음반 영화가 있다. - 상품을 카테고리로 구분할 수 있다. - 상품 주문 시 배송 정보를 입력할 수 있다. 도메인 모델과 테이블 설계 회원, 주문, 상품의 관계 : 회원은 여러 상품을 주문할 수 있다. 그리고 한번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계이다. 하지만 이런 다대다 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 ..

공부/JPA 2025.06.26

스프링 트랜잭션 전파 2 - 활용

트랜잭션 전파 활용 1 - 예제 프로젝트 비즈니스 요구사항- 회원을 등록하고 조회한다.- 회원에 대한 변경 이력을 추적할 수 있도록 회원 데이터가 변경될 때 변경 이력을 DB LOG 테이블에 남겨야 한다.@Entity@Getter@Setterpublic class Member { @Id @GeneratedValue private Long id; private String username; public Member() { } public Member(String username) { this.username = username; }}- JPA를 통해 관리하는 회원 엔티티이다. @Slf4j@Repository@RequiredArgsConstructorp..

공부/Spring 2025.06.23

스프링 트랜잭션 전파 1 - 커밋, 롤백

스프링 트랜잭션 전파 1 - 커밋 롤백트랜잭션이 둘 이상 있을 때 어떻게 동작하는지 자세히 알아보고, 스프링이 제공하는 트랜잭션 전파(propagation)라는 개념도 알아보자.트랜잭션 전파를 이해하는 과정을 통해서 스프링 트랜잭션의 동작 원리도 더 깊이있게 이해할 수 있다. 우선 간단한 예제 코드로 스프링 트랜잭션을 실행해보자.@Slf4j@SpringBootTestpublic class BasicTxTest { @Autowired PlatformTransactionManager txManager; @TestConfiguration static class Config { @Bean public PlatformTransactionManager transacti..

공부/Spring 2025.06.18

스프링 트랜잭션 이해

스프링 트랜잭션 소개https://surrealcode.tistory.com/145스프링 트랜잭션에 대해서는 위의 링크를 참고하도록 하자. 스프링 트랜잭션 추상화각각의 데이터 접근 기술들은 트랜잭션을 처리하는 방식에 차이가 있다. 예를 들어 JDBC기술과 JPA 기술은 트랜잭션을 사용하는 코드 자체가 다르다. JDBC 트랜잭션 코드 예시public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConnection(); try { con.setAutoCommit(false); //트랜잭션 시작 //비즈니스 로직..

공부/Spring 2025.06.16

데이터 접근 기술 - 활용 방안

스프링 데이터 JPA 예제와 트레이드 오프스프링 데이터 JPA 예제를 다시 한번 돌아보자.- 중간에서 JpaItemRepositoryV2가 어댑터 역할을 해준 덕분에 ItemService가 사용하는 ItemRepository 인터페이스를 그대로 유지할 수 있고, 클라이언트인 ItemService의 코드를 변경하지 않아도 되는 장점이 있다. 고민- 구조를 맞추기 위해서, 중간에 어댑터가 들어가면서 전체 구조가 너무 복잡해지고 사용하는 클래스도 많아지는 단점이 생겼다.- 실제 이 코드를 구현해야 하는 개발자 입장에서 보면 중간에 어댑터도 만들고, 실제 코드까지 만들어야 하는 불편함이 생긴다.- 유지보수 관점에서 ItemService를 변경하지 않고, ItemRepository의 구현체를 변경할 수 있는 장점..

공부/Spring 2025.06.10

데이터 접근 기술 - Querydsl

Querydsl 설정우선 Querydsl을 설정해보자. 스프링 2.x대의 설정과 3.x대의 설정이 다르므로 잘 확인해보자. 2.x 버전 설정//Querydsl 추가implementation 'com.querydsl:querydsl-jpa'annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"annotationProcessor "jakarta.annotation:jakarta.annotation-api"annotationProcessor "jakarta.persistence:jakarta.persistence-api" 3.x 버전 설정//Querydsl 추가..

공부/Spring 2025.06.09

데이터 접근 기술 - 스프링 데이터 JPA

스프링 데이터 JPA 주요 기능스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리이다.수 많은 편리한 기능을 제공하지만 가장 대표적인 기능은 다음과 같다. - 공통 인터페이스 기능- 쿼리 메서드 기능 공통 인터페이스 기능- JpaRepository 인터페이스를 통해서 기본적인 CRUD 기능을 제공한다.- 공통화 가능한 기능이 거의 모두 포함되어 있다.- CurdRepository에서 findOne -> findById()로 변경되었다. JpaRepository 사용법public interface ItemRepository extends JpaRepository {}- JpaRepository 인터페이스를 인터페이스 상속받고, 제네릭에 관리할 를 주면 된다.- 그러면 JpaRep..

공부/Spring 2025.06.05
반응형