1 package ejava.examples.webtier.jpa;
2
3 import java.util.Iterator;
4 import java.util.List;
5 import java.util.Map;
6
7 import javax.persistence.EntityManager;
8 import javax.persistence.Query;
9
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
12
13 import ejava.examples.webtier.bo.Student;
14 import ejava.examples.webtier.dao.StudentDAO;
15
16 public class StudentJPADAO implements StudentDAO {
17 private Logger logger = LoggerFactory.getLogger(StudentJPADAO.class);
18 private EntityManager em;
19
20 public void setEntityManager(EntityManager em) {
21 this.em = em;
22 }
23
24 public Student create(Student student) {
25 em.persist(student);
26 return student;
27 }
28
29 @SuppressWarnings("unchecked")
30 public List<Student> find(int index, int count) {
31 return em.createQuery(
32 "select s from Student s")
33 .setFirstResult(index)
34 .setMaxResults(count)
35 .getResultList();
36 }
37
38 @SuppressWarnings("unchecked")
39 public List<Student> find(
40 String name, Map<String, Object> args, int index, int count) {
41 logger.debug("named query:" + name +
42 ", index=" + index + ", count=" + count);
43 Query query = em.createNamedQuery(name);
44 if (query != null && args!=null) {
45 for(Iterator<String> itr=args.keySet().iterator();
46 itr.hasNext();) {
47 String key = itr.next();
48 Object value = args.get(key);
49 query.setParameter(key, value);
50 logger.debug("key=" + key + ", value=" + value);
51 }
52 }
53 return query.setFirstResult(index)
54 .setMaxResults(count)
55 .getResultList();
56 }
57
58 public List<Student> find(String name, int index, int count) {
59 return find(name, null, index, count);
60 }
61
62 public Student get(long id) {
63 return em.find(Student.class, id);
64 }
65
66 public Student remove(Student student) {
67 em.remove(student);
68 return student;
69 }
70
71 public Student update(Student student) {
72 return em.merge(student);
73 }
74 }