@Override
 public Attraction getAttractionById(int id) {
   Connection con = MySQLConnection.getWebInstance();
   try (PreparedStatement pstm = con.prepareStatement(GET_ATTRACTION_BY_ID)) {
     pstm.setInt(1, id);
     ResultSet rs = pstm.executeQuery();
     rs.relative(1);
     return extractAtraction(rs);
   } catch (SQLException ex) {
     rollback(con);
     throw new DBLayerException("Failed to get attraction by id=" + id, ex);
   } finally {
     commit(con);
   }
 }
 @Override
 public void deleteAttraction(Attraction attraction) {
   Connection con = MySQLConnection.getWebInstance();
   try (PreparedStatement pstm = con.prepareStatement(DELETE_ATTRACTION)) {
     pstm.setInt(1, attraction.getId());
     pstm.executeUpdate();
   } catch (SQLException ex) {
     rollback(con);
     throw new DBLayerException("Failed to delete attraction" + attraction, ex);
   } finally {
     commit(con);
   }
 }
 @Override
 public List<Attraction> getAttractions() {
   Connection con = MySQLConnection.getWebInstance();
   List<Attraction> attractions = new ArrayList<>();
   try {
     ResultSet rs = con.createStatement().executeQuery(GET_ATTRACTIONS);
     while (rs.next()) {
       attractions.add(extractAtraction(rs));
     }
     return attractions;
   } catch (SQLException ex) {
     rollback(con);
     throw new DBLayerException("Failed to get all attractions", ex);
   } finally {
     commit(con);
   }
 }
 @Override
 public void addAttraction(Attraction attraction) {
   Connection con = MySQLConnection.getWebInstance();
   try (PreparedStatement pstm = con.prepareStatement(ADD_ATTRACTION)) {
     int k = 1;
     pstm.setString(k++, attraction.getTitle());
     pstm.setString(k++, attraction.getDescription());
     pstm.setInt(k++, attraction.getHeight());
     pstm.setString(k++, attraction.getImage());
     pstm.setInt(k++, attraction.getAdultPrice());
     pstm.setInt(k++, attraction.getChildPrice());
     pstm.executeUpdate();
   } catch (SQLException ex) {
     rollback(con);
     throw new DBLayerException("Failed to add attraction" + attraction, ex);
   } finally {
     commit(con);
   }
 }