JPA Helper

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> 



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值