Skip to content

Commit efe47e3

Browse files
author
Linnea Vardal
committed
Add crud-methods in Film-class. Add test code for crud-operations i Main-class
Co-authored-by: Mattias Barth mattias.barth@gmail.com
1 parent bc6883c commit efe47e3

3 files changed

Lines changed: 54 additions & 14 deletions

File tree

src/main/java/Director.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ public class Director {
2020
@Column(nullable = true)
2121
private Integer yearOfDeath;
2222

23-
24-
2523
public Set<Film> getFilms() {
2624
return films;
2725
}
@@ -70,7 +68,6 @@ public Long getId() {
7068
return id;
7169
}
7270

73-
7471
}
7572

7673

src/main/java/Film.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import jakarta.persistence.*;
22

3+
import java.util.List;
4+
35
@Entity
46
public class Film {
57
@Id
@@ -35,5 +37,25 @@ public Long getId() {
3537
return id;
3638
}
3739

40+
//Lägg till en ny film
41+
public static void addFilm(EntityManager em, String title, Director director) {
42+
Film film = new Film();
43+
film.setTitle(title);
44+
film.setDirector(director);
45+
em.persist(film);
46+
System.out.println("Film tillagd: " + title);
47+
}
48+
//Hämta alla filmer
49+
public static List<Film> getAllFilms(EntityManager em) {
50+
return em.createQuery("FROM Film", Film.class).getResultList();
51+
}
52+
53+
//Hämta filmer regisserade av en viss regissör
54+
public static List<Film> getFilmsByDirector(EntityManager em, Director director) {
55+
return em.createQuery("FROM Film f WHERE f.director = :director", Film.class)
56+
.setParameter("director", director)
57+
.getResultList();
58+
}
59+
3860

3961
}

src/main/java/Main.java

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,39 @@ public static void main(String[] args) {
2121
.managedClasses(Film.class, Director.class);
2222
try (EntityManagerFactory emf = cfg.createEntityManagerFactory()) {
2323
emf.runInTransaction(em -> {
24+
//Skapa regissör för test
25+
Director director = new Director();
26+
director.setName("Christopher Bolan");
27+
director.setCountry("United States");
28+
director.setBirthYear(1970);
29+
em.persist(director);
30+
31+
//Testa att lägga till filmer
32+
Film.addFilm(em, "The Dirk Knight", director);
33+
Film.addFilm(em, "Inception", director);
34+
35+
//Testa att hämta alla filmer
36+
System.out.println("\nAlla filmer:");
37+
List<Film> films = Film.getAllFilms(em);
38+
films.forEach(film -> System.out.println(film.getTitle()));
39+
40+
//Testa att hämta filmer av en viss regissör
41+
System.out.println("\nAlla filmer av regissör:");
42+
List<Film> filmsByDirector = Film.getFilmsByDirector(em, director);
43+
filmsByDirector.forEach(film -> System.out.println(film.getTitle()));
44+
2445
//If no Films in database, add some
25-
if (em.createQuery("select count(o) from Film o", Long.class)
26-
.getSingleResult() == 0) {
27-
Film film1 = new Film();
28-
em.persist(film1);
29-
em.flush();
30-
Film film2 = new Film();
31-
em.persist(film2);
32-
}
33-
System.out.println("==== Using select query, N + 1 ====");
34-
em.createQuery("from Film", Film.class)
35-
.getResultList().forEach(System.out::println);
46+
// if (em.createQuery("select count(o) from Film o", Long.class)
47+
// .getSingleResult() == 0) {
48+
// Film film1 = new Film();
49+
// em.persist(film1);
50+
// em.flush();
51+
// Film film2 = new Film();
52+
// em.persist(film2);
53+
// }
54+
// System.out.println("==== Using select query, N + 1 ====");
55+
// em.createQuery("from Film", Film.class)
56+
// .getResultList().forEach(System.out::println);
3657

3758
});
3859

0 commit comments

Comments
 (0)