CodeGym /Java Course /All lectures for KO purposes /관련 프로젝트: 최대 절전 모드(2)

관련 프로젝트: 최대 절전 모드(2)

All lectures for KO purposes
레벨 1 , 레슨 723
사용 가능

오늘 우리의 임무는 Hibernate 주제에 대한 두 번째 프로젝트를 완료하는 것입니다. 그 본질은 데이터베이스의 구조를 이해하고 엔터티를 기존 테이블에 매핑하고 매핑이 올바르게 수행되었는지 확인하는 최소한의 기능을 추가하는 것입니다.

이제 더 자세히:

  1. 덤프 파일을 다운로드 하고 로컬 컴퓨터에 배포합니다. 데이터베이스로는 MySQL 설치 패키지와 함께 예제로 배포되는 테스트 데이터베이스를 사용합니다. 덤프는 데이터베이스 상태를 수정하기 위해 필요합니다. 일, 월, 연도에 변경되지 않을 것이라고 보장할 수 없기 때문입니다.
  2. 프로젝트 템플릿이 없으므로 직접 프로젝트를 만드십시오. 필요한 모든 종속성이 있는 maven 프로젝트여야 합니다( hibernate-core-jakarta , mysql-connector-java , p6spy ).
  3. 로컬에 배포된 데이터베이스를 Idea의 데이터 소스로 연결합니다. 그런 다음 Database 탭에서 영화 스키마에 커서를 놓고 키 조합을 누릅니다 Alt+Ctrl+Shift+U(Ultimate 버전에서만 작동). 그러면 전체 영화 스키마의 구조(열 이름, 키 등 포함)가 표시됩니다. 다음과 같이 보입니다.

    보기에 그리 편하지 않다는 데 동의합니다. 모든 열과 주석의 제목 표시를 끕니다.

    결과적으로 이미 분석할 수 있는 데이터베이스 스키마를 얻게 됩니다.

  4. 회로가 복잡해 보이지만 모든 것이 그렇게 나쁜 것은 아닙니다. 데이터베이스의 구조를 분석하려면 시작할 위치를 찾아야 합니다. 하나의 정답은 없지만 테이블부터 시작하는 것이 좋습니다 film. 몇 가지 관계를 예로 들어 보겠습니다.
    • 테이블 사이의 관계 filmfilm_text명시적인 OneToOne 관계입니다 . 테이블에는 다음과 같은 film_text필드가 있기 때문입니다.film_id아니다테이블의 ID를 참조합니다 film(외래 키 없음). 그러나 이름과 논리에 따라 이 연결이 있어야 합니다. 또한 테이블에서 film_text필드는 film_id하나의 "영화"가 하나 이상의 "영화 텍스트"에 해당하지 않도록 보장하는 기본 키 역할을 합니다.
    • 이제 테이블 filmcategory. 논리적으로 영화는 여러 범주를 가질 수 있습니다. 그리고 하나의 범주, 어쩌면 다른 영화일 수도 있습니다. 또한 이 두 테이블 사이에 중간 링크 테이블이 있습니다 film_category. 위의 모든 사항을 기반으로 명시적인 ManyToMany 관계 입니다 .
    • film우리는 테이블 을 보고 language. 논리의 관점에서 영화는 다른 언어로 번역될 수 있고 다른 영화는 같은 언어로 되어 있을 수 있습니다. 즉, ManyToMany는 자신을 제안합니다 . 하지만 테이블의 내용을 보면 film테이블의 각 행이 고유한 동영상임을 알 수 있습니다. 그리고 줄에는 language_id 필드가 하나만 있습니다 (original_language_id도 있지만 모든 레코드에서 null이므로 무시할 수 있습니다). 즉, 하나의 영화는 하나의 언어만 가질 수 있습니다. 그리고 하나의 언어, 아마도 다른 영화들. 연결은 ManyToOne 입니다 (연결은 영화에서 언어로 향함).
  5. 이제 주요 작업은 필요한 모든 엔터티 클래스를 만들고 스키마 테이블에 매핑하는 것입니다 movie.
  6. 모든 종속 필드를 사용하여 새 고객(고객 테이블)을 생성할 수 있는 메서드를 추가합니다. 거래 방법을 만드는 것을 잊지 마십시오 (구매자의 주소가 데이터베이스에 기록되지만 구매자 자신은 그렇지 않은 상황에 빠지지 않도록).
  7. "고객이 이전에 대여한 영화를 갔다가 반환함" 이벤트를 설명하는 트랜잭션 메서드를 추가합니다. 원하는 구매자 및 대여 이벤트를 선택하세요. 영화의 등급은 다시 계산할 필요가 없습니다.
  8. "구매자가 상점(상점)에 가서 그곳에서 임대(임대) 인벤토리(inventory)" 이벤트를 설명하는 트랜잭션 메서드를 추가합니다. 동시에 판매자(스태프)에게 결제(결제)를 했습니다. 필름(재고를 통해) 재량에 따라 선택하십시오. 유일한 제한 사항은 영화를 대여할 수 있어야 한다는 것입니다. 즉, 임대에 재고 기록이 전혀 없거나 이 재고의 마지막 임대에 대한 테이블의 return_daterental 열이 채워져야 합니다.
  9. "새 영화가 촬영되었고 대여할 수 있게 되었습니다." 이벤트를 설명하는 트랜잭션 메서드를 추가합니다. 영화, 언어, 배우, 카테고리 등은 귀하의 재량에 따라 선택하십시오.
  10. 테이블 구조는 변경할 수 없습니다. 그러나 개선을 위한 제안을 해야 합니다. 우리는 단락 4에서 한 가지 문제가 있는 위치를 식별했습니다( 테이블 필드 의 테이블에 외래 키 가 없음 ). 데이터베이스 구조에 여전히 그러한 "실수"가 있는지 확인하십시오. 그렇다면 프로젝트의 루트에 readme 파일을 추가하고 이러한 실수를 설명하십시오.film_textfilm_idfilm

프로젝트 분석:

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION