JPA 활용 - 주문 기능 테스트
·
Back-End/JPA
이전글 2023.02.24 - [Back-End/JPA] - JPA 활용 - 주문 도메인 개발 JPA 활용 - 주문 도메인 개발 이전글 2023.02.23 - [Back-End/JPA] - JPA 활용 - 상품 도메인 개발 주문 도메인 개발 구현 기능 상품 주문 주문 내역 조회 주문 취소 순서 주문 엔티티, 주문상품 엔티티 개발 주문 리포지토리 개발 주문 scoring.tistory.com 💡 이 글의 테스트 코드는 JUnit5로 작성되었습니다. (인프런 강의는 JUnit4) 주문 기능 테스트 테스트 요구사항 상품 주문이 성공해야 한다. 상품을 주문할 때 재고 수량을 초과하면 안 된다. 주문 취소가 성공해야 한다. 상품 주문 테스트 @SpringBootTest @Transactional class Ord..
스프링 시큐리티(1) - 프로젝트 구성 및 의존성 추가
·
Back-End/Spring Security
프로젝트 생성 이번 시큐리티를 학습하기 위해서 프로젝트를 생성 합니다. 자바 버전 - 11 의존성 - 스프링 부트 웹 프로젝트를 생성 한 후, 컨트롤러를 하나 생성해 줍니다. package io.security.basicsecurity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class SecurityController { @GetMapping("/") public String index(){ return "home"; } } 그 후에 서버를 실행시켜 확인해보면, localhost:808..
JPA 활용 - 주문 도메인 개발
·
Back-End/JPA
이전글 2023.02.23 - [Back-End/JPA] - JPA 활용 - 상품 도메인 개발 주문 도메인 개발 구현 기능 상품 주문 주문 내역 조회 주문 취소 순서 주문 엔티티, 주문상품 엔티티 개발 주문 리포지토리 개발 주문 서비스 개발 주문 검색 기능 개발 주문 기능 테스트 주문, 주문상품 엔티티 개발 주문 엔티티 코드 package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "order..
JPA 활용 - 상품 도메인 개발
·
Back-End/JPA
이전글 2023.02.21 - [Back-End/JPA] - JPA 활용 - 회원 도메인 개발 및 테스트코드 작성 JPA 활용 - 회원 도메인 개발 및 테스트코드 작성 회원 도메인 개발하기 개발 순서 : 엔티티 설계 → 리포지토리, 서비스 개발 → 테스트 케이스 작성 및 검증 → 웹 계층 적용 앞에서는 엔티티 작성을 마쳤고, 이를 통해 애플리케이션 구현을 위 scoring.tistory.com 상품 도메인 개발 구현 기능 상품 등록 상품 목록 조회 상품 수정 순서 상품 엔티티 개발(비즈니스 로직 추가) 상품 리포지토리 개발 상품 서비스 개발 상품 기능 테스트 상품 엔티티 개발 기존의 상품 엔티티 코드에 비즈니스 로직을 추가한다. package jpabook.jpashop.domain.item; impor..
JPA 활용 - 회원 도메인 개발 및 테스트코드 작성
·
Back-End/JPA
회원 도메인 개발하기 개발 순서 : 엔티티 설계 → 리포지토리, 서비스 개발 → 테스트 케이스 작성 및 검증 → 웹 계층 적용 앞에서는 엔티티 작성을 마쳤고, 이를 통해 애플리케이션 구현을 위한 리포지토리와, 서비스를 작성할 것이다. 이번 애플리케이션 구조는 계층형 구조를 사용한다. controller, web : 웹 계층 service : 비즈니스 로직, 트랜잭션 처리 repository : JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain : 엔티티가 모여 있는 계층, 모든 계층에서 사용 회원 리포지토리 생성 @Repository public class MemberRepository { @PersistenceContext private EntityManager em; public void..
JPA - 양방향 연관관계와 연관관계의 주인, 양방향 매핑 정리
·
Back-End/JPA
이 글은 이전글인 JPA - 연관관계 매핑(조인 방법), 단방향 연관 관계 및 매핑 과 이어집니다. JPA - 연관관계 매핑(조인 방법), 단방향 연관 관계 및 매핑 JPA에서의 연관관계를 알아볼때 목표 객체지향적인 패러다임과 관계형 DB가 지향하는 패러다임의 차이를 이해해야 한다. 객체의 참조와 테이블의 외래 키를 매핑 용어 방향(Direction) : 단방향, 양 scoring.tistory.com 양방향 매핑 방법 Member와 Team 테이블의 연관 관계로 설명 Member.java @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME")..
JPA - 연관관계 매핑(조인 방법), 단방향 연관 관계 및 매핑
·
Back-End/JPA
JPA에서의 연관관계를 알아볼때 목표 객체지향적인 패러다임과 관계형 DB가 지향하는 패러다임의 차이를 이해해야 한다. 객체의 참조와 테이블의 외래 키를 매핑 용어 방향(Direction) : 단방향, 양방향 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 연관관계의 주인(Owner) : 객체 양방향 연관관계는 관리 주인이 필요하다. 객체와 테이블 연관관계 사이의 차이 테이블의 경우 select * from member m join team t on m.team_id = 1 두개의 테이블을 조인하는 경우에는 join 쿼리문 하나로 간단하게 할 수 있다. 객체의 경우 Team team = new Team(); team.setName("TeamA"); ..
JPA - Primary Key 매핑
·
Back-End/JPA
기본 키 매핑 어노테이션 @Id 와 @GeneratedValue 직접 할당 : @Id만 사용 자동생성(@GeneratedValue) IDENTITY : 데이터베이스에 위임, MYSQL SEQUENCE : 데이터베이스 시퀸스 오브젝트 사용, ORACLE → @SequenceGenerator 필요 TABLE : 키 생성용 테이블 사용, 모든 DB에서 사용 → @TableGenerator 사용 AUTO : 방언에 따라 자동 지정, 기본값 IDENTITY 기본 키 생성을 데이터베이스에 위임 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사용 JPA는 트랜잭션 커밋 시점에 INSERT SQL 실행 하지만, AUTO_INCREMENT는 데이터베이스에 INSERT SQL을 실행한 이후에 ID..
JPA - 매핑 어노테이션 정리
·
Back-End/JPA
JPA - 필드와 매핑 어노테이션 정리 매핑 어노테이션 @Column : 컬럼 매핑 @Temporal : 날짜 타입 매핑 @Enumerated : enum 타입 매핑 @Lob : BLOB, CLOB 매핑 @Transient : 특정 필드를 컬럼에 매핑하지 않음 @Entity public class Member { @Id private Long id; @Column(name = "name") private String username; private Integer age; @Enumerated(EnumType.STRING) private RoleType roleType; @Temporal(TemporalType.TIMESTAMP) private Date createdDate; @Temporal(Tempor..
JPA - 스키마 자동생성 옵션 및 DDL 생성 기능
·
Back-End/JPA
JPA - 스키마 자동생성 옵션 및 DDL 생성 기능 데이터 베이스 스키마 자동 생성 DDL을 애플리케이션 실행 시점에 자동 생성 개발할때 객체에 매핑을 해놓으면 필요한 테이블을 자동 생성해준다. DB 방언을 활용해서 데이터 베이스에 맞는 적절한 DDL 생성(h2 인경우 varchar로 생성, Oracle인 경우 varchar2 로 생성을 자동으로 해준다) 생성된 DDL은 개발 장비에서만 사용 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용 스키마 자동생성 속성 hibernate.hbm2ddl.auto 속성에 값을 지정 스키마 자동생성 주의할점 운영 장비에는 절대 create, create-drop, update 사용하면 안된다. 개발 초기 단계는 create 또는 update 사..