본문 바로가기

분류 전체보기160

JPA 회원, 상품 도메인 개발 애플리케이션 아키텍처 계층형 구조 사용 controller, web: 웹 계층 service: 비즈니스 로직, 트랜잭션 처리 repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain: 엔티티가 모여 있는 계층, 모든 계층에서 사용 개발 순서: 서비스, 리포지토리 계층을 개발하고, 테스트 케이스를 작성해서 검증, 마지막에 웹 계층 적용 회원 도메인 개발 1. 회원 리포지토리 개발 @PersistenceContext -> JPA가 제공하는 표준 어노테이션 스프링이 EntityManager em을 만들어서 주입해준다. (@PersistenceUnit을 사용하면 Factory를 직접 주입받을수 있다 -> 사용할일은 거의 없다..) public List findAll() { return.. 2022. 4. 19.
JPA 도메인 분석 설계 도메인 모델과 테이블 설계 회원, 주문, 상품의 관계: 회원은 여러 상품을 주문할 수 있다. 그리고 한 번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계다. 하지만 이런 다대다 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 않는다. 따라서 그림처럼 주문 상품이라는 엔티티를 추가해서 다대다 관계를 일대 다, 다대일 관계로 풀어내야 한다. 회원 엔티티 분석 실무에서 다대다 관계는 쓰면 안된다. 가급적이면 양방향 관계를 쓰지 말고 단방향 관계를 써야 한다. (위의 사진은 예제기때문에 적용) 회원 테이블 분석 (기본편을 듣지않고 활용편을 들어서 요점정리만 했음 -> 모르는 부분 많음) ITEM은 싱글 테이블 전략을 사용한 것 관계형 데이터베이스는 다대다 관계 지원이 안되.. 2022. 4. 19.
JPA 프로젝트 환경설정 프로젝트 생성 롬복 적용 1. Prefrences plugin lombok 검색 실행 (재시작) 2. Prefrences Annotation Processors 검색 Enable annotation processing 체크 (재시작) 3. 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인 IntelliJ Gradle 대신에 자바 직접 실행 최근 IntelliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다. 다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠르다. Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle Build and run using: Gradle -> .. 2022. 4. 17.
JPA 활용 1편을 들어가며. 이전에 스프링 입문, 기본, MVC 1편을 들으며 스프링에 대한 기초와 기본을 익혀보았다. 이제 자바의 ORM 표준 JPA 대해 공부할것인데 나는 아직 JPA에 대해서 잘 모른다. 그리고 나는 그동안 학자형 타입A 였던 것 같다. 학교 공부만 하였고 교수님이 가르치는 것만 하고 책만 열심히 보고 이론만 열심히 익히는.. 지금 되돌아보면 정말 내 실력 향상에는 큰 도움이 되지않았던 것 같다. 영한님이 말하기에 본인도 학자형이었으나 야생형으로 바꾸는 편이 좋았다고 하였고 신입 주니어 개발자들이 야생형이 잘하는 사람이 많다고 한다. 나도 따라서 내 타입을 야생형으로 바꾸고 싶어졌다. JPA의 기본에 대해 자세히 모르지만 활용1편을 듣고 기술과 서비스 개발의 감을 익히고 기본편을 들어서 JPA 기본을 학습후에 .. 2022. 4. 16.
스프링 MVC - 웹페이지 만들기(3) 상품 등록 처리 - @ModelAttribute 상품 등록 폼은 다음 방식으로 서버에 데이터를 전달한다. POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 itemName=itemA&price=10000&quantity=10 예) 회원 가입, 상품 주문, HTML Form 사용 V1은 요청 파라미터 형식을 처리해야 하므로 @RequestParam 을 사용하자 addItemV1 - BasicItemController에 추가 (@RequestParam) 먼저 @RequestParam String itemName : itemName 요청 파라미터 데이터를 해당 변수에 받는다. Item 객체를 생성하고 .. 2022. 4. 16.
스프링 MVC - 웹페이지 만들기(2) 상품 서비스 HTML 부트스트랩 참고로 HTML을 편리하게 개발하기 위해 부트스트랩 사용했다. 상품 목록 HTML 상품 상세 HTML 상품 등록 폼 HTML 상품 수정 폼 HTML 핵심 비즈니스 로직을 개발하는 동안, 웹 퍼블리셔는 HTML 마크업을 완료했다. 상품 목록 - 타임리프 타임리프 타임리프 사용 선언 속성 변경 - th:href th:href="@{/css/bootstrap.min.css}" href="value1" 을 th:href="value2" 의 값으로 변경한다. 타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx 값으로 변경한다. 만약 값이 없다면 새로 생성한다. HTML을 그대로 볼 때는 href 속성이 사용되고, 뷰 템플릿을 거치면 th:href 의 값이 href 로 대체되면.. 2022. 4. 16.