import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class DemoListener implements ServletContextListener {
static ServletContext context;
public void contextInitialized(ServletContextEvent e) {
context = e.getServletContext();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("demo");
e.getServletContext().setAttribute("emf", emf);
}
public void contextDestroyed(ServletContextEvent e) {
getEntityManagerFactory(e.getServletContext()).close();
}
public static EntityManagerFactory getEntityManagerFactory(ServletContext context){
return (EntityManagerFactory) context.getAttribute("emf");
}
public static EntityManager createEntityManager(){
return ((EntityManagerFactory) context.getAttribute("emf")).createEntityManager();
}
}
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
public class DatabaseHelper {
public static void save(Object entity) {
EntityManager em = DemoListener.createEntityManager();
em.getTransaction().begin();
em.persist(entity);
em.getTransaction().commit();
em.close();
}
public static <T> List<T> list(Class<T> c) {
EntityManager em = DemoListener.createEntityManager();
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<T> query = criteriaBuilder.createQuery(c);
Root<T> root = query.from(c);
query.select(root);
List<T> result = em.createQuery(query).getResultList();
em.close();
return result;
}
public static <T> List<T> equal(Class<T> c, String field, Object value) {
EntityManager em = DemoListener.createEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<T> q = cb.createQuery(c);
Root<T> root = q.from(c);
// ParameterExpression<?> p = cb.parameter(value.getClass());
q.select(root).where(cb.equal(root.get(field), value));
List<T> result = em.createQuery(q).getResultList();
em.close();
return result;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="demo" transaction-type="RESOURCE_LOCAL">
<class>com.ssc.demo.shared.UserInfo</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:derby:C:/OsaWorkspace/GwtDemo/db/demo;create=true" />
<!-- <property name="javax.persistence.jdbc.user" value="test" />
<property name="javax.persistence.jdbc.password" value="test" /> -->
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
</properties>
</persistence-unit>
</persistence>