Projektet genomförs som antingen en Java CLI-applikation eller med hjälp av JavaFX om ni vill ha ett grafiskt gränssnitt. Arbetet utförs i grupper om fyra deltagare. Ni bildar grupperna genom att antingen skapa en ny grupp eller ansluta till en befintlig grupp via GitHub Classrooms.
Projektet ska använda en relationsdatabas, där MySQL eller PostgreSQL rekommenderas. Kommunikation med databasen ska ske med JPA och Hibernate, enligt code first-metoden.
- Klona GitHub-repo
- Konfigurera persistence.xml eller använd PersistenceConfiguration i kod
- Skapa entiteter och verifiera tabellgenerering
- Lägg till relationer (One-to-Many, Many-to-Many)
- Arbeta på feature-branches och använd pull requests för kodgranskning
- Dela upp funktioner mellan gruppmedlemmar
- Implementera funktionalitet för huvudentiteter
- Testa queries med EntityManager
- Dokumentera större designbeslut i PR-beskrivningar
- Säkerställ att alla merges sker via kodgranskning
- Lägg till validering, felhantering och loggning
- Skriv enhetstester för centrala funktioner
- Förbered demo (~10 min):
- Visa applikationen (CLI-kommandon eller GUI)
- Gå igenom datamodellen och relationerna
One-to-Many: En turnering → flera matcher
Many-to-Many: Spelare ↔ Lag
One-to-Many: En regissör → flera filmer/serier
Many-to-Many: Användare ↔ Favoritlistor
One-to-Many: En artist → flera album
Many-to-Many: Album ↔ Spellistor
One-to-Many: Ett projekt → flera uppgifter
Many-to-Many: Uppgifter ↔ Användare
One-to-Many: En restaurang → flera bord
Many-to-Many: Gäster ↔ Bokningar
Följ dessa steg för att köra MySQL lokalt i Docker och koppla upp applikationen.
Kräver Docker Desktop (eller docker + docker compose plugin).
Kör i projektroten:
docker compose up -d
Det startar en MySQL 8-container med:
- Databas:
car_rental - Användare:
car_user - Lösenord:
strong_password_here - Port:
3306(exponerad på localhost)
src/main/resources/META-INF/persistence.xml pekar nu på:
jdbc:mysql://localhost:3306/car_rental
user=car_user, password=strong_password_here
Hibernate skapar/uppdaterar tabellerna vid start (hibernate.hbm2ddl.auto=update).
- Verifiera att containern är igång:
docker ps
- Logga in (om du har MySQL-klient):
mysql -h 127.0.0.1 -P 3306 -u car_user -p
USE car_rental;
SHOW TABLES;
- Lägg in seed-data (efter att applikationen skapat tabellerna) med filen
sql/seeds.sql:
mysql -h 127.0.0.1 -P 3306 -u car_user -p car_rental < sql/seeds.sql
- Bygg och kör som vanligt (t.ex. via IntelliJ eller Maven). Vid start kommer Hibernate att skapa tabellerna i MySQL.
- Port 3306 upptagen → stoppa annan MySQL eller ändra port i
docker-compose.ymloch ipersistence.xml. - Access denied → kontrollera user/lösen i både compose och
persistence.xml. - No suitable driver → kör
mvn clean packageoch säkerställ attmysql-connector-jfinns ipom.xml.