Back-End 108

[Mac M2] UTM위에 우분투 설치

다운로드 사이트 https://mac.getutm.app/ UTM Securely run operating systems on your Mac mac.getutm.app https://ubuntu.com/download/server/arm Ubuntu for ARM | Download | Ubuntu Download Ubuntu Server for ARM with support for the very latest ARM-based server systems powered by certified 64-bit processors. ubuntu.com 1. 먼저 다운로드를 클릭한다. 2. 드래그 하여 UTM을 Applications 폴더에 넣는다. 3. 우분투를 설치한다. 4. UTM 새로운 가상머신 생성 버..

Back-End/Study 2022.09.25

[JPA 활용 - 웹 애플리케이션 개발] 웹 계층 개발

회원 등록 회원 등록 폼 객체 public class MemberForm{ @NotEmpty(message = "회원 이름은 필수입니다.") private String name; private String city; private String street; private String zipcode; } 폼 객체를 사용해서 화면 계층과 서비스 계층을 명확하게 분리한다. 회원 목록 조회 회원 목록 컨트롤러 @GetMapping(value = "/members") public String list(Model model){ List members = memberService.findMembers(); model.addAttribute("members",members); return "members/member..

[JPA 활용 - 웹 애플리케이션 개발] 주문 도메인 개발

주문 엔티티 개발 기능 설명 생성 메서드(createOrder()) : 주문 엔티티를 생성할 때 사용한다. 주문 회원, 배송 정보, 주문 상품의 정보를 받아서 실제 주문 엔티티를 생성한다. 주문 취소(cancel()) : 주문 취소 시 사용한다. 주문 상태를 취소로 변경하고, 주문 상품에 주문 취소를 알린다. 만약 이미 배송을 완료한 상품이면 주문을 취소하지 못하도록 예외를 발생시킨다. 전체 주문 가격 조회 : 주문 시 사용한 전체 주문 가격을 조회한다. 전체 주문 가격을 알려면 각각의 주문 상품 가격을 알아야 한다. 로직을 보면 연관된 주문 상품들의 가격을 조회해서 더한 값을 반환한다. (실무에서는 주로 전체 주문 가격 필드를 주고 역정 규화) public static Order createOrder(..

[JPA 활용 - 웹 애플리케이션 개발] 상품 도메인 개발

상품 엔티티 개발(비즈니스 로직 추가) 비즈니스 로직 분석 addStock() 메서드는 파라미터로 넘어온 수만큼 재고를 늘린다. 이 메서드는 재고가 증가하거나 상품 주문을 취소해서 재고를 다시 늘려야 할 때 사용한다. removeStock() 메서드는 파라미터로 넘어온 수만큼 재고를 줄인다. 만약 재고가 부족하면 예외가 발생한다. 주로 상품을 주문할 때 사용한다. 상품 리포지토리 개발 기능 설명 save() id가 없으면 신규로 보고 persist() 실행 id가 있으면 이미 데이터베이스에 저장된 엔티티를 수정한다고 보고, merge()를 실행 상품 서비스 개발 상품 서비스는 상품 리포지토리에 단순히 위임만 하는 클래스 참고 강의 : https://www.inflearn.com/course/%EC%8A%..

[JPA 활용 - 웹 애플리케이션 개발] 회원 도메인 개발

회원 리포지토리 개발 기술 설명 @Repository : 스프링 빈으로 등록, JPA 예외를 스프링 기반 예외로 예외 변환 @PersistenceContext : 엔티티 매니저(EntityManger) 주입 @PersistenceUnit : 엔티티 매니저 팩토리(EntityManagerFactory) 주입 기능 설명 save() findOne() findAll() findByName() 회원 서비스 개발 기술 설명 @Service @Transactional : 트랜잭션, 영속성 컨텍스트 readOnly=true : 데이터의 변경이 없는 읽기 전용 메서드에 사용, 영속성 컨텍스트를 플러시 하지 않으므로 약간의 성능 향상(읽기 전용에는 다 적용) 데이터베이스 드라이버가 지원하면 DB에서 성능 향상 @Auto..

[JPA 활용 - 웹 애플리케이션 개발] 도메인 분석 설계

도메인 모델과 테이블 회원, 주문, 상품의 관계 : 회원은 여러 상품을 주문할 수 있다. 그리고 한 번 주문할 때, 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계다. 하지만 이런 다대다 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 않는다. 따라서 그림처럼 주문 상품이라는 엔티티를 추가해서 다대다 관계를 일대다, 다대일 관계로 풀어냈다. 상품 분류 : 상품은 도서, 음반, 영화로 구분되는데 상품이라는 공통 속성을 사용하므로 상속 구조로 표현했다. 회원 엔티티 분석 회원(Member) : 이름과 임베디드 타입인 주소(Address), 그리고 주문(orders) 리스트를 가진다. 주문(Order) : 한 번 주문시 여러 상품을 주문할 수 있으므로 주문과 주문 상품(OrderIt..

[자바 ORM 표준 JPA 프로그래밍 - 기본편] 객체지향 쿼리 언어2 - 중급 문법

JPQL - 경로 표현식 .(점)을 찍어 객체 그래프를 탐색하는 것 경로 표현식 용어 정리 상태 필드(state field) : 단순히 값을 저장하기 위한 필드(ex: m.username) 연관 필드(association field) : 연관관계를 위한 필드 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티(ex: m.team) 컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션(ex: m.orders) 경로 표현식 특징 상태 필드(state field) : 경로 탐색의 끝, 탐색 x 단일 값 연관 경로 : 묵시적 내부 조인(inner join) 발생, 탐색 o 컬렉션 값 연관 경로 : 묵시적 내부 조인 발생, 탐색 x FROM절에서 명시적 조..