Skip to content

Commit ec7283c

Browse files
authored
Merge pull request eugenp#5876 from the-java-guy/master
BAEL-2343
2 parents a42b156 + 138b22a commit ec7283c

File tree

3 files changed

+185
-0
lines changed

3 files changed

+185
-0
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
package com.baeldung.hibernate.operations;
2+
3+
import java.util.List;
4+
5+
import javax.persistence.EntityManager;
6+
import javax.persistence.EntityManagerFactory;
7+
import javax.persistence.Persistence;
8+
9+
import com.baeldung.hibernate.pojo.Movie;
10+
11+
/**
12+
*
13+
*Class to illustrate the usage of EntityManager API.
14+
*/
15+
public class HibernateOperations {
16+
17+
private static final EntityManagerFactory emf;
18+
19+
/**
20+
* Static block for creating EntityManagerFactory. The Persistence class looks for META-INF/persistence.xml in the classpath.
21+
*/
22+
static {
23+
emf = Persistence.createEntityManagerFactory("com.baeldung.movie_catalog");
24+
}
25+
26+
/**
27+
* Static method returning EntityManager.
28+
* @return EntityManager
29+
*/
30+
public static EntityManager getEntityManager() {
31+
return emf.createEntityManager();
32+
}
33+
34+
/**
35+
* Saves the movie entity into the database. Here we are using Application Managed EntityManager, hence should handle transactions by ourselves.
36+
*/
37+
public void saveMovie() {
38+
EntityManager em = HibernateOperations.getEntityManager();
39+
em.getTransaction()
40+
.begin();
41+
Movie movie = new Movie();
42+
movie.setId(1L);
43+
movie.setMovieName("The Godfather");
44+
movie.setReleaseYear(1972);
45+
movie.setLanguage("English");
46+
em.persist(movie);
47+
em.getTransaction()
48+
.commit();
49+
}
50+
51+
/**
52+
* Method to illustrate the querying support in EntityManager when the result is a single object.
53+
* @return Movie
54+
*/
55+
public Movie queryForMovieById() {
56+
EntityManager em = HibernateOperations.getEntityManager();
57+
Movie movie = (Movie) em.createQuery("SELECT movie from Movie movie where movie.id = ?1")
58+
.setParameter(1, new Long(1L))
59+
.getSingleResult();
60+
return movie;
61+
}
62+
63+
/**
64+
* Method to illustrate the querying support in EntityManager when the result is a list.
65+
* @return
66+
*/
67+
public List<?> queryForMovies() {
68+
EntityManager em = HibernateOperations.getEntityManager();
69+
List<?> movies = em.createQuery("SELECT movie from Movie movie where movie.language = ?1")
70+
.setParameter(1, "English")
71+
.getResultList();
72+
return movies;
73+
}
74+
75+
/**
76+
* Method to illustrate the usage of find() method.
77+
* @param movieId
78+
* @return Movie
79+
*/
80+
public Movie getMovie(Long movieId) {
81+
EntityManager em = HibernateOperations.getEntityManager();
82+
Movie movie = em.find(Movie.class, new Long(movieId));
83+
return movie;
84+
}
85+
86+
/**
87+
* Method to illustrate the usage of merge() function.
88+
*/
89+
public void mergeMovie() {
90+
EntityManager em = HibernateOperations.getEntityManager();
91+
Movie movie = getMovie(1L);
92+
em.detach(movie);
93+
movie.setLanguage("Italian");
94+
em.getTransaction()
95+
.begin();
96+
em.merge(movie);
97+
em.getTransaction()
98+
.commit();
99+
}
100+
101+
/**
102+
* Method to illustrate the usage of remove() function.
103+
*/
104+
public void removeMovie() {
105+
EntityManager em = HibernateOperations.getEntityManager();
106+
em.getTransaction()
107+
.begin();
108+
Movie movie = em.find(Movie.class, new Long(1L));
109+
em.remove(movie);
110+
em.getTransaction()
111+
.commit();
112+
}
113+
114+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.baeldung.hibernate.pojo;
2+
3+
import javax.persistence.Entity;
4+
import javax.persistence.Id;
5+
import javax.persistence.Table;
6+
7+
@Entity
8+
@Table(name = "MOVIE")
9+
public class Movie {
10+
11+
@Id
12+
private Long id;
13+
14+
private String movieName;
15+
16+
private Integer releaseYear;
17+
18+
private String language;
19+
20+
public String getMovieName() {
21+
return movieName;
22+
}
23+
24+
public void setMovieName(String movieName) {
25+
this.movieName = movieName;
26+
}
27+
28+
public Integer getReleaseYear() {
29+
return releaseYear;
30+
}
31+
32+
public void setReleaseYear(Integer releaseYear) {
33+
this.releaseYear = releaseYear;
34+
}
35+
36+
public String getLanguage() {
37+
return language;
38+
}
39+
40+
public void setLanguage(String language) {
41+
this.language = language;
42+
}
43+
44+
public Long getId() {
45+
return id;
46+
}
47+
48+
public void setId(Long id) {
49+
this.id = id;
50+
}
51+
52+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
5+
version="2.0">
6+
<persistence-unit name="com.baeldung.movie_catalog">
7+
<description>Hibernate EntityManager Demo</description>
8+
<class>com.baeldung.hibernate.pojo.Movie</class>
9+
<exclude-unlisted-classes>true</exclude-unlisted-classes>
10+
<properties>
11+
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
12+
<property name="hibernate.hbm2ddl.auto" value="update"/>
13+
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
14+
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/moviecatalog"/>
15+
<property name="javax.persistence.jdbc.user" value="root"/>
16+
<property name="javax.persistence.jdbc.password" value="root"/>
17+
</properties>
18+
</persistence-unit>
19+
</persistence>

0 commit comments

Comments
 (0)