EmployeeService.java
01 /*
02  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
03  *
04  * Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.
05  *
06  * The contents of this file are subject to the terms of either the GNU
07  * General Public License Version 2 only ("GPL") or the Common Development
08  * and Distribution License("CDDL") (collectively, the "License").  You
09  * may not use this file except in compliance with the License.  You can
10  * obtain a copy of the License at
11  * https://oss.oracle.com/licenses/CDDL+GPL-1.1
12  * or LICENSE.txt.  See the License for the specific
13  * language governing permissions and limitations under the License.
14  *
15  * When distributing the software, include this License Header Notice in each
16  * file and include the License file at packager/legal/LICENSE.txt.
17  *
18  * GPL Classpath Exception:
19  * Oracle designates this particular file as subject to the "Classpath"
20  * exception as provided by Oracle in the GPL Version 2 section of the License
21  * file that accompanied this code.
22  *
23  * Modifications:
24  * If applicable, add the following below the License Header, with the fields
25  * enclosed by brackets [] replaced by your own identifying information:
26  * "Portions Copyright [year] [name of copyright owner]"
27  *
28  * Contributor(s):
29  * If you wish your version of this file to be governed by only the CDDL or
30  * only the GPL Version 2, indicate your decision by adding "[Contributor]
31  * elects to include this software in this distribution under the [CDDL or GPL
32  * Version 2] license."  If you don't indicate a single choice of license, a
33  * recipient has the option to distribute your version of this file under
34  * either the CDDL, the GPL Version 2 or to extend the choice of license to
35  * its licensees as provided above.  However, if you add GPL Version 2 code
36  * and therefore, elected the GPL Version 2 license, then the option applies
37  * only if the new code is made subject to such option by the copyright
38  * holder.
39  */
40 
41 package examples.jpa.jpa22.util;
42 
43 import examples.jpa.jpa22.entity.Employee;
44 
45 import javax.ejb.Stateless;
46 import javax.persistence.EntityManager;
47 import javax.persistence.PersistenceContext;
48 import javax.persistence.SynchronizationType;
49 import javax.persistence.criteria.CriteriaQuery;
50 import java.util.List;
51 import java.util.stream.Collectors;
52 import java.util.stream.Stream;
53 
54 @Stateless
55 public class EmployeeService {
56   /**
57    * Unsynchronized Persistence Context.
58    */
59   @PersistenceContext(synchronization = SynchronizationType.UNSYNCHRONIZED, unitName = "serviceUnit")
60   private EntityManager entityManager;
61 
62   /**
63    * Join Transaction.
64    */
65   public void doCreate(Employee p) {
66     entityManager.joinTransaction();
67     entityManager.persist(p);
68   }
69 
70   public List<Employee> findAll() {
71     CriteriaQuery criteriaQuery = entityManager.getCriteriaBuilder().createQuery();
72     criteriaQuery.select(criteriaQuery.from(Employee.class));
73     Stream<Employee> personStream = entityManager.createQuery(criteriaQuery).getResultStream();
74     List<Employee> employees = personStream.collect(Collectors.toList());
75     return employees;
76   }
77 }