CodeGym/Kursy Java/All lectures for PL purposes/Powiązany projekt: Hibernacja (2)

Powiązany projekt: Hibernacja (2)

Dostępny

Dziś naszym zadaniem jest ukończenie drugiego projektu o tematyce Hibernate. Jego istotą jest zrozumienie struktury bazy danych, odwzorowanie encji na istniejące tabele i dodanie minimalnej funkcjonalności, aby sprawdzić, czy mapowanie jest wykonane poprawnie.

Teraz bardziej szczegółowo:

  1. Pobierz plik zrzutu i wdróż go na komputerze lokalnym. Jako bazę danych wykorzystamy testową bazę danych, która jest rozprowadzana jako przykład wraz z pakietem instalacyjnym MySQL. Zrzut jest potrzebny, aby naprawić stan bazy danych, ponieważ nie możemy zagwarantować, że nie zmieni się on w ciągu dnia, miesiąca, roku.
  2. Nie będziemy mieć szablonu projektu, więc sam stwórz projekt. Powinien to być projekt Maven ze wszystkimi wymaganymi zależnościami ( hibernate-core-jakarta , mysql-connector-java , p6spy ).
  3. Podłącz naszą lokalnie wdrożoną bazę danych jako źródło danych w Idea. Następnie w zakładce Baza danych najedź kursorem na schemat filmu i naciśnij kombinację klawiszy Alt+Ctrl+Shift+U(działa tylko w wersji Ultimate). Spowoduje to wyświetlenie struktury całego schematu filmu (z nazwami kolumn, kluczami itp.). Wygląda tak:

    Zgadzam się, nie jest to zbyt wygodne do oglądania. Wyłącz wyświetlanie tytułu wszystkich kolumn i komentarzy:

    W rezultacie otrzymasz schemat bazy danych, który można już przeanalizować:

  4. Układ wygląda na skomplikowany, ale nie wszystko jest takie złe. Aby przeanalizować strukturę bazy danych, musisz dowiedzieć się, od czego zacząć. Nie ma jednej poprawnej odpowiedzi, ale polecam zacząć od tabeli film. Weźmy jako przykład kilka relacji:
    • Relacja między tabelami filmi film_textjest jawną relacją jeden do jednego , ponieważ tabela film_textma pole, film_idktóreNIEodnosi się do identyfikatora z tabeli film(bez klucza obcego). Ale z nazwy i logiki, to połączenie powinno być. Dodatkowo w tabeli film_textpole film_idpełni funkcję klucza podstawowego, co gwarantuje, że jednemu „filmowi” odpowiada nie więcej niż jeden „tekst filmowy”.
    • Teraz spójrzmy na tabele filmi category. Logicznie rzecz biorąc, film może mieć kilka kategorii. I jedna kategoria, może różne filmy. Ponadto między tymi dwiema tabelami znajduje się tabela połączeń pośrednich film_category. Na podstawie powyższego można stwierdzić, że jest to wyraźna relacja ManyToMany .
    • Patrzymy na tabele filmi language. Z punktu widzenia logiki film może mieć tłumaczenie na różne języki, a różne filmy mogą być w tym samym języku. Oznacza to, że ManyToMany sugeruje się . Ale jeśli spojrzymy na zawartość tabeli film, zobaczymy, że każdy wiersz tabeli to unikalny film. A w wierszu jest tylko jedno pole language_id (jest też original_language_id, ale we wszystkich rekordach jest puste, więc możemy je zignorować). Oznacza to, że jeden film może mieć tylko jeden język. I jeden język, może różne filmy. Połączenie to ManyToOne (połączenie jest kierowane z filmu na język).
  5. Teraz głównym zadaniem jest utworzenie wszystkich niezbędnych klas jednostek i odwzorowanie ich na tabele schematu movie.
  6. Dodaj metodę, która może utworzyć nowego klienta (tabelę klientów) ze wszystkimi zależnymi polami. Nie zapomnij, aby metoda była transakcyjna (aby nie dopuścić do sytuacji, że adres kupującego jest zapisany w bazie danych, ale sam kupujący nie).
  7. Dodaj metodę transakcyjną opisującą zdarzenie „klient poszedł i zwrócił wcześniej wypożyczony film”. Wybierz dowolne wydarzenie kupna i wynajmu. Oceny filmu nie trzeba przeliczać.
  8. Dodaj metodę transakcyjną opisującą zdarzenie „kupujący udał się do sklepu (sklepu) i tam wynajął (wypożyczył) inwentarz (inwentarz). Jednocześnie dokonał płatności (płatności) na rzecz sprzedawcy (personelu). Film (poprzez zapasy) wybierz według własnego uznania. Jedynym ograniczeniem jest to, że film musi być dostępny do wypożyczenia. Oznacza to, że albo w ogóle nie powinno być rekordów inwentarza w wynajmie, albo kolumna data_zwrotu tabeli rentaldla ostatniego wypożyczenia tego inwentarza powinna być wypełniona.
  9. Dodaj metodę transakcyjną opisującą zdarzenie „nakręcono nowy film i udostępniono go do wypożyczenia”. Film, język, aktorzy, kategorie itp. wybierz według własnego uznania.
  10. Struktury tabeli nie można zmienić. Ale musisz zasugerować ulepszenia. Zidentyfikowaliśmy jedno problematyczne miejsce w akapicie 4 (brak klucza obcego w tabeli film_textw polu film_idtabeli film). Sprawdź, czy w strukturze bazy danych nadal nie ma takich „błądów”. Jeśli tak, dodaj plik readme do katalogu głównego projektu i opisz te błędy.

Analiza projektu:

Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy