View Javadoc
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.apache.commons.logging.Log;
11  import org.apache.commons.logging.LogFactory;
12  
13  import ejava.examples.webtier.bo.Student;
14  import ejava.examples.webtier.dao.StudentDAO;
15  import ejava.examples.webtier.dao.StudentDAOException;
16  
17  public class StudentJPADAO implements StudentDAO {
18      Log log = LogFactory.getLog(StudentJPADAO.class);
19  
20      public Student create(Student student) throws StudentDAOException {
21          try {
22              JPAUtil.getEntityManager().persist(student);
23          }
24          catch (Throwable ex) {
25              throw new StudentDAOException(ex);
26          }
27          return student;
28      }
29  
30      @SuppressWarnings("unchecked")
31      public List<Student> find(int index, int count) throws StudentDAOException {
32          try {
33          return JPAUtil.getEntityManager().createQuery(
34                  "select s from Student s " +
35                  "").setFirstResult(index)
36                     .setMaxResults(count)
37                     .getResultList();
38          }
39          catch (Throwable ex) {
40              throw new StudentDAOException(ex);
41          }
42      }
43  
44      @SuppressWarnings("unchecked")
45      public List<Student> find(
46              String name, Map<String, Object> args, int index, int count) 
47          throws StudentDAOException {
48          try {
49              log.debug("named query:" + name + 
50                      ", index=" + index + ", count=" + count);
51              Query query = JPAUtil.getEntityManager().createNamedQuery(name);
52              if (query != null && args!=null) {
53                  for(Iterator<String> itr=args.keySet().iterator();
54                      itr.hasNext();) {
55                      String key = itr.next();
56                      Object value = args.get(key);
57                      query.setParameter(key, value);
58                      log.debug("key=" + key + ", value=" + value);
59                  }
60              }
61              return query.setFirstResult(index)
62                          .setMaxResults(count)
63                          .getResultList();
64          }
65          catch (StudentDAOException ex) {
66              throw new StudentDAOException(ex);
67          }
68      }
69  
70      public List<Student> find(String name, int index, int count) 
71          throws StudentDAOException {
72          return find(name, null, index, count);
73      }
74  
75      public Student get(long id) throws StudentDAOException {
76          try {
77              return JPAUtil.getEntityManager().find(Student.class, id);
78          }
79          catch (StudentDAOException ex) {
80              throw new StudentDAOException(ex);
81          }
82      }
83  
84      public Student remove(Student student) throws StudentDAOException {
85          try {
86              JPAUtil.getEntityManager().remove(student);
87              return student;
88          }
89          catch (StudentDAOException ex) {
90              throw new StudentDAOException(ex);
91          }
92      }
93  
94      public Student update(Student student) throws StudentDAOException {
95          try {
96              EntityManager em = JPAUtil.getEntityManager();
97              return em.merge(student);
98          }
99          catch (StudentDAOException ex) {
100             throw new StudentDAOException(ex);
101         }
102     }
103 }