VenueDAOImpl.java

  1. package org.myorg.jpatickets.dao;

  2. import java.util.List;

  3. import javax.persistence.EntityManager;
  4. import javax.persistence.FlushModeType;
  5. import javax.persistence.TypedQuery;

  6. import org.myorg.jpatickets.bo.Seat;
  7. import org.myorg.jpatickets.bo.Venue;

  8. public class VenueDAOImpl implements VenueDAO {
  9.     private EntityManager em;
  10.    
  11.     public void setEntityManager(EntityManager em) {
  12.         this.em = em;
  13.     }

  14.     @Override
  15.     public void saveVenue(Venue venue, List<Seat> seats) {
  16.         em.setFlushMode(FlushModeType.COMMIT);
  17.         em.persist(venue);        
  18.         if (seats!=null) {
  19.             for (Seat s: seats) {
  20.                 em.persist(s);
  21.             }
  22.         }
  23.         em.setFlushMode(FlushModeType.AUTO);
  24.     }
  25.    
  26.     public Venue getVenue(String venueId) {
  27.         return em.find(Venue.class, venueId);
  28.     }
  29.    
  30.     @Override
  31.     public List<Seat> getSeatsForVenue(Venue venue, int offset, int limit) {
  32.         TypedQuery<Seat> query = em.createNamedQuery("JPATicketSeat.getSeatsForVenue",
  33.                 Seat.class)
  34.                 .setParameter("venue", venue);
  35.         if (offset > 0) { query.setFirstResult(offset); }
  36.         if (limit > 0) { query.setMaxResults(limit); }
  37.         return query.getResultList();
  38.     }
  39. }