/******************************************************************************* * Copyright (c) 2011-2014 Fernando Petrola * * This file is part of Dragome SDK. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html ******************************************************************************/ package com.dragome.examples.service.serverside; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import com.dragome.examples.Person; import com.dragome.examples.service.PersonService; public class PersonServiceImpl implements PersonService { protected static EntityManager entityManager= Persistence.createEntityManagerFactory("hsqldb-ds").createEntityManager(); public List<Person> getPersons() { List<Person> resultList= findAll(); if (resultList.isEmpty()) { createPersons(); resultList= findAll(); } return resultList; } private List<Person> findAll() { CriteriaBuilder criteriaBuilder= entityManager.getCriteriaBuilder(); CriteriaQuery<Person> criteriaQuery= criteriaBuilder.createQuery(Person.class); Root<Person> from= criteriaQuery.from(Person.class); // criteriaQuery.orderBy(criteriaBuilder.asc(from.get("nickname"))); CriteriaQuery<Person> select= criteriaQuery.select(from); TypedQuery<Person> typedQuery= entityManager.createQuery(select); List<Person> resultList= typedQuery.getResultList(); return resultList; } private void createPersons() { EntityTransaction transaction= entityManager.getTransaction(); transaction.begin(); entityManager.persist(new Person("Diego Maradona", "Pelusa")); entityManager.persist(new Person("Ariel Ortega", "Burrito")); entityManager.persist(new Person("Ricardo Bochini", "Bocha")); transaction.commit(); } public void savePersons(List<Person> persons) { EntityTransaction transaction= entityManager.getTransaction(); transaction.begin(); entityManager.createQuery("DELETE FROM Person").executeUpdate(); entityManager.flush(); transaction.commit(); entityManager.clear(); transaction.begin(); for (Person person : persons) { person.setId(0); entityManager.persist(person); } transaction.commit(); } }