Once we saved an entity to database we can retrieve them back by using the find method from EntityManager.
The following code shows how to use the find method with entity id.
Person emp = em.find(Person.class, 1L);
The following code is from Person.java.
package com.java2s.common; import static javax.persistence.FetchType.LAZY; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; @Entity @Table(name="EMP") public class Person { @Id @Column(name = "EMP_ID") private long id; @Basic private String name; private String surname; @Lob @Basic(fetch=LAZY) private byte[] picture; public Person() {} public Person(String name, String surname) { this.name = name; this.surname = surname; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public byte[] getPicture() { return picture; } public void setPicture(byte[] picture) { this.picture = picture; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", surname=" + surname + "]"; } }
The following code is from PersonDaoImpl.java.
package com.java2s.common; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.transaction.annotation.Transactional; @Transactional public class PersonDaoImpl { public void test(){ Person p1 = new Person("Tom", "Smith"); p1.setId(1L); p1.setPicture("asdf".getBytes()); Person p2 = new Person("Jack", "Kook"); p2.setId(2L); p1.setPicture("java2s.com".getBytes()); save(p1); save(p2); listAll(); Person emp = em.find(Person.class, 1L); if (emp != null) { em.remove(emp); } listAll(); } private void listAll(){ List<Person> persons = getAll(); for (Person person : persons) { System.out.println(person); } } @PersistenceContext private EntityManager em; public Long save(Person person) { em.persist(person); return person.getId(); } public List<Person>getAll() { return em.createQuery("SELECT p FROM Person p", Person.class).getResultList(); } }
The code above generates the following result.
The following is the database dump.
Table Name: EMP Row: Column Name: EMP_ID, Column Type: BIGINT: Column Value: 2 Column Name: NAME, Column Type: VARCHAR: Column Value: Jack Column Name: PICTURE, Column Type: BLOB: Column Value: null Column Name: SURNAME, Column Type: VARCHAR: Column Value: Kook