목록분류 전체보기 (146)
It's easy, if you try
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
명심 API를 만들때는 엔티티를 반환하면 안된다 ! (정보유출, API 스펙 변화) 홈 화면 html 파일 : jsp의 include 와 같다. fragments 폴더 내의 header.html 파일 내의 th:fragment="header"를 가져다 include 한다. 타임리프 기본설정 spring: thymeleaf: prefix: classpath:/templates/ suffix: .html 반환한 문자( home )과 스프링부트 설정 prefix , suffix 정보를 사용해서 렌더링할 뷰( html )를 찾는다. 타임리프 layout 스타일 Include-style layouts Hierarchical-style layouts 타임리프 문법 ?를 붙이면 null을 무시한다. Controlle..
주문 도메인 개발 주문 엔티티 개발 생성 메서드 및 비즈니스 로직 작성 @NoArgsConstructor(access = AccessLevel.PROTECTED) : 외부에서 set 할 수 없도록 하는 옵션 주문 검색 기능 개발 (아래 참고) 주문 리포지토리 개발 주문 서비스 개발 new Order(); 등의 각각의 set은 지양하고 createOrder 함수를 생성하는것이 유지보수 측면에서 용이하다. 주문 기능 테스트 참고 : 주문 서비스의 주문과 주문 취소 메서드를 보면 비즈니스 로직 대부분이 엔티티에 있다. 서비스 계층은 단순히 엔티티에 필요한 요청을 위임하는 역할을 한다. 이처럼 엔티티가 비즈니스 로직을 가지고 객체 지향의 특성을 적극 활용하는 것을 도메인 모델 패턴(https://martinfo..
1) 어플리케이션 아키텍처 계층형 구조 사용 controller, web: 웹 계층 (컨트롤러는 repository에 접근가능, 단방향) service: 비즈니스 로직, 트랜잭션 처리 repository: JPA를 직접 사용, 엔티티 매니저 사용 domain: 엔티티가 모여있는 계층, 모든 계층에서 사용 패키지 구조 domain exception repository service web 개발순서 서비스, 리포지토리 계층 개발 테스트 케이스 작성 웹계층 적용 도메인 개발 엔티티 개발 (엔티티 클래스 작성은 섹션 2 참고 (https://sohee-dev.tistory.com/152)) 리포지토리 개발 서비스 개발 기능 테스트 웹계층 개발 타임리프로 화면 개발 화면과 기능 연결 API 개발 ajax 통신 ,..
도메인 분석 설계 1) 요구사항 분석 실제 동작하는 화면을 보며 기능을 설계한다 2) 도메인 모델과 테이블 설계 RDB는 다대다 관계를 가질 수 없어서 매핑테이블을 가져야함. (1:N / N:1) 공통속성을 가진경우 상속 구조로 표현 엔티티 분석 (엔티티가 가지는 속성을 작성) 이때, Address 는 임베디드 타입 - 회원과 배송에서 사용됨. 테이블 분석 (테이블에 맞는 형태로 작성 - PK/ FK 지정, 네이밍 등) 외래 키가 있는 곳을 연관관계의 주인으로 정해라 일대다 관계에서는 다 쪽에 외래키를 지정 @ManyToMany 는 사용 지양 중간 테이블( CATEGORY_ITEM )에 컬럼을 추가할 수 없고, 세밀하게 쿼리를 실행하기 어렵기 때문에 실무에서 사용하기에는 한계가 있다. @ManyToMan..
웰컴페이지 우선순위 우선 스프링 컨테이너에서 관련 컨트롤러를 찾고, 없으면 static에서 찾기 때문에 @GetMapping("/") static 내의 웰컴페이지로 설정한 파일 html 이름 action url로 controller의 @PostMapping으로 매핑된다. thymeleaf # 이름 th: 로 시작하는게 타임리프 문법 스프링 DB 접근 기술 1. H2 DB를 이용한 스프링 데이터 엑세스 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 2. JDBC 과거에 사용하던 방식 스프링 통합 테스트 @SpringBootTest: 스프링 컨테이너와 테스트를 함께 실행한다. @Transactional : 테스트 시작 전에 트랜잭션을 시작하고, 테스트가 끝나면 rollback 해준다. (다음 테..
비즈니스 요구사항 정리 일반적인 웹 어플리케이션 계층 구조 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨. 데이터 저장소가 선정되지 않았을땐, 우선 Repository를 인터페이스로 생성하여 추후에 구현 클래스를 변경할 수 있도록 설계한다. 1. 도메인 , 리포지토리 작성 ⭐️ Optional Java8에 도입됨. null 처리하는 방법 중 하나. 사용방법 예시) Optional member : Optional 객체 선언 Optional.ofNullable(store.get(id)); : null이어도 감싸서 반환 ..
프로젝트 초기셋팅 (springboot) build.gradle > repositories - mavenCentral : 메이븐 공개 사이트에서 관련 레포지토리를 다운로드 받아라. .gitignore : 기본적으로 셋팅 되어있음 라이브러리 스프링부트는 tomcat 서버 설치 안해도 된당 실무에서는 system.out.println 대신 log 사용해야한다 !! (로그 레벨별로 관리하기 위해) 테스트 관련 java에서 테스트 코드 작성시 주로 junit을 이용한다. (최근에 junit5가 나옴) - 테스트 프레임워크 assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리 spring-test: 스프링 통합 테스트 지원 View 환경설정 src>resources>static> index.h..