본문 바로가기

김영한59

JPA 엔티티 매핑 엔티티 매핑 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinmColumn @Entity 기본 생성자 필수 final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X 데이터베이스 스키마 자동 생성 hibernate.hbm2ddl.auto 옵션 create, create-drop, update, validate, none 데이터베이스 스키마 자동 생성 - 주의 운영 장비에는 절대 create, create-drop, update 사용하면 안됨 개발 초기 단계는 create 또는 update 테스트 서버는 update 또는 validate 스테이.. 2022. 5. 11.
HelloJPA와 영속성 관리 - 내부 동작 방식 HelloJPA @Entity : JPA가 관리할 객체 @Id : 데이터베이스 PK와 매핑 JPA에서는 트랜잭션이라는 단위가 매우 중요하다. 그래서 데이터를 변경하는 모든 작업은 JPA의 트랜잭션 안에서 작업해야 한다. 저장 -> em.persist() 조회 -> em.find() : 한 객체 조회할때 삭제 -> em.remove() 수정 -> em.setOOO() 수정 부분에서는 따로 em.persist()를 안해도 된다. jpa가 자동으로 update 쿼리를 날려준다. 그 이유는 jpa를 통해서 entity를 가져오면 이 entity는 jpa가 관리를 한다. 그리고 jpa가 트랜잭션을 커밋하는 시점에 변경을 감지하여 업데이트 쿼리를 날린다. 주의 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전.. 2022. 5. 10.
JPA 웹 계층 개발 - 홈 화면과 레이아웃 홈 화면과 레이아웃 lombok의 @Slf4j 를 사용하면 기존의 Logger, LoggerFactory의 기능을 그대로 사용할 수 있다. 참고: Hierarchical-style layouts 예제에서는 뷰 템플릿을 최대한 간단하게 설명하려고, header , footer 같은 템플릿 파일을 반복해서 포함한다. 다음 링크의 Hierarchical-style layouts을 참고하면 이런 부분도 중복을 제거할 수 있다. https://www.thymeleaf.org/doc/articles/layouts.html 현재는 Include-style layouts이지만 (예제에서 간단하게 하기 위해서) Hiearachical-style layout(계층 스타일 레이아웃)을 적용하면 코드중복 없이 깔끔하게 코딩할.. 2022. 4. 22.
JPA 주문 도메인 개발 주문 도메인 개발 1. 주문, 주문상품 엔티티 개발 생성 메서드( createOrder() ): 주문 엔티티를 생성할 때 사용한다. 주문 회원, 배송정보, 주문상품의 정보를 받아서 실제 주문 엔티티를 생성한다. 주문 취소( cancel() ): 주문 취소시 사용한다. 주문 상태를 취소로 변경하고 주문상품에 주문 취소를 알린다. 만약 이미 배송을 완료한 상품이면 주문을 취소하지 못하도록 예외를 발생시킨다. 전체 주문 가격 조회: 주문 시 사용한 전체 주문 가격을 조회한다. 전체 주문 가격을 알려면 각각의 주문상품 가격을 알아야 한다. 로직을 보면 연관된 주문상품들의 가격을 조회해서 더한 값을 반환한다. (실무에서는 주로 주문에 전체 주문 가격 필드를 두고 역정규화 한다.) 주문취소인 cancel 에서는 a.. 2022. 4. 20.
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.