package me.test; import java.util.List; import java.util.Random; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Path; import javax.persistence.criteria.Root; import me.test.domain.User; import org.springframework.context.support.ClassPathXmlApplicationContext; public class JpaTest { private static Random random = new Random(System.currentTimeMillis()); public static void main(String[] args) { ClassPathXmlApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml"); EntityManagerFactory emf = appCtx.getBean(EntityManagerFactory.class); if (args.length > 0 && "add".equals(args[0])) { int count = 1; if (args.length > 1) { count = Integer.valueOf(args[1]); } add(emf, count); } else if (args.length > 0 && "update".equals(args[0])) { update(emf); } else if (args.length > 0 && "list".equals(args[0])) { list(emf); } else { System.err.println("Usage : java me.test.HibernateTest [add|update|list]"); } emf.close(); appCtx.close(); } public static void add(EntityManagerFactory emf, int count) { EntityManager em = emf.createEntityManager(); EntityTransaction entityTransaction = em.getTransaction(); entityTransaction.begin(); for (int i = 0; i < count; i++) { User user = new User(); user.setName("z-" + Math.abs(random.nextLong())); em.persist(user); } entityTransaction.commit(); em.close(); System.out.println("Added."); } public static void update(EntityManagerFactory emf) { EntityManager em = emf.createEntityManager(); CriteriaBuilder cb = emf.getCriteriaBuilder(); CriteriaQuery<User> cq = cb.createQuery(User.class); cq.from(User.class); List<User> userList = em.createQuery(cq).getResultList(); EntityTransaction entityTransaction = em.getTransaction(); entityTransaction.begin(); for (User user : userList) { user.setName("z-" + Math.abs(random.nextLong())); em.persist(user); } entityTransaction.commit(); em.close(); System.out.println("Updated."); } public static void list(EntityManagerFactory emf) { EntityManager em = emf.createEntityManager(); CriteriaBuilder cb = emf.getCriteriaBuilder(); CriteriaQuery<User> cq = cb.createQuery(User.class); Root<User> r = cq.from(User.class); Path<Long> idPath = r.get("id"); cq.where( cb.ge(idPath, 5L), cb.and(cb.ge(idPath, 5L)) ).orderBy(cb.asc(r.get("id"))); List<User> userList = em.createQuery(cq) .setFirstResult(1) // = offset .setMaxResults(10) // = limit // .setHint("org.hibernate.fetchSize", 1) .getResultList(); for (User user : userList) { System.out.println(user); } em.close(); System.out.println("List finished."); } }