Skip to content

Commit bc6883c

Browse files
author
Linnea Vardal
authored
Merge pull request #2 from ithsjava25/feature
Ok by group
2 parents cd58553 + 5125f3a commit bc6883c

3 files changed

Lines changed: 157 additions & 0 deletions

File tree

src/main/java/Director.java

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import jakarta.persistence.*;
2+
3+
import java.util.HashSet;
4+
import java.util.List;
5+
import java.util.Set;
6+
7+
@Entity
8+
public class Director {
9+
10+
@Id
11+
@GeneratedValue(strategy = GenerationType.IDENTITY)
12+
private Long id;
13+
14+
@OneToMany(mappedBy = "director")
15+
private Set<Film> films = new HashSet<>();
16+
17+
private String name;
18+
private String country;
19+
private int birthYear;
20+
@Column(nullable = true)
21+
private Integer yearOfDeath;
22+
23+
24+
25+
public Set<Film> getFilms() {
26+
return films;
27+
}
28+
29+
public void setFilms(Set<Film> films) {
30+
this.films = films;
31+
}
32+
33+
public Integer getYearOfDeath() {
34+
return yearOfDeath;
35+
}
36+
37+
public void setYearOfDeath(Integer yearOfDeath) {
38+
this.yearOfDeath = yearOfDeath;
39+
}
40+
41+
public int getBirthYear() {
42+
return birthYear;
43+
}
44+
45+
public void setBirthYear(int birthYear) {
46+
this.birthYear = birthYear;
47+
}
48+
49+
public String getCountry() {
50+
return country;
51+
}
52+
53+
public void setCountry(String country) {
54+
this.country = country;
55+
}
56+
57+
public String getName() {
58+
return name;
59+
}
60+
61+
public void setName(String name) {
62+
this.name = name;
63+
}
64+
65+
public void setId(Long id) {
66+
this.id = id;
67+
}
68+
69+
public Long getId() {
70+
return id;
71+
}
72+
73+
74+
}
75+
76+

src/main/java/Film.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import jakarta.persistence.*;
2+
3+
@Entity
4+
public class Film {
5+
@Id
6+
@GeneratedValue(strategy = GenerationType.IDENTITY)
7+
private Long id;
8+
9+
private String title;
10+
@ManyToOne
11+
@JoinColumn(name = "director_id")
12+
private Director director;
13+
14+
public Director getDirector() {
15+
return director;
16+
}
17+
18+
public void setDirector(Director director) {
19+
this.director = director;
20+
}
21+
22+
public String getTitle() {
23+
return title;
24+
}
25+
26+
public void setTitle(String title) {
27+
this.title = title;
28+
}
29+
30+
public void setId(Long id) {
31+
this.id = id;
32+
}
33+
34+
public Long getId() {
35+
return id;
36+
}
37+
38+
39+
}

src/main/java/Main.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import jakarta.persistence.Entity;
2+
import jakarta.persistence.EntityManagerFactory;
3+
import jakarta.persistence.Persistence;
4+
import jakarta.persistence.PersistenceConfiguration;
5+
import org.hibernate.jpa.HibernatePersistenceConfiguration;
6+
7+
import java.util.List;
8+
9+
public class Main {
10+
public static void main(String[] args) {
11+
12+
13+
final PersistenceConfiguration cfg = new HibernatePersistenceConfiguration("emf")
14+
.jdbcUrl("jdbc:mysql://localhost:3306/film_database")
15+
.jdbcUsername("root")
16+
.jdbcPassword("root")
17+
.property("hibernate.hbm2ddl.auto", "update")
18+
.property("hibernate.show_sql", "true")
19+
.property("hibernate.format_sql", "true")
20+
.property("hibernate.highlight_sql", "true")
21+
.managedClasses(Film.class, Director.class);
22+
try (EntityManagerFactory emf = cfg.createEntityManagerFactory()) {
23+
emf.runInTransaction(em -> {
24+
//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);
36+
37+
});
38+
39+
}
40+
41+
}
42+
}

0 commit comments

Comments
 (0)