5 JPAUTilツールクラスの抽出

6322 ワード

目的:エンティティ・マネージャ・ファクトリのリソースの浪費と時間の消費の問題を解決するJpaUtils
package cn.ys.jpa.utils;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *                    
 *                ,             ,                
 *
 *      getEntityManager  :           factory  ,         EntityManager  
 *      getEntityManager  :            factory  ,  EntityManager  
 */
public class JpaUtils {

    private static EntityManagerFactory factory;

    static  {
        //1.      ,  entityManagerFactory
        factory = Persistence.createEntityManagerFactory("myJpa");
    }

    /**
     *   EntityManager  
     */
    public static EntityManager getEntityManager() {
        return factory.createEntityManager();
    }
}


テストクラス
    /**
     *   jpa   
     *        :           
     *  Jpa     
     *     1.          (       )  
     *     2.                
     *     3.      ,    
     *     4.        
     *     5.    (    )
     *     6.    
     */
    @Test
    public void testSave() {
        EntityManager em = JpaUtils.getEntityManager();
        //3.      ,    
        EntityTransaction tx = em.getTransaction(); //      
        tx.begin();//    
        //4.        :           
        Customer customer = new Customer();
        customer.setCustName("  ");
        customer.setCustIndustry("  ");
        customer.setCustPhone("17607180290");
        //  
        em.persist(customer); //    
        //5.    
        tx.commit();
        //6.    
        em.close();

    }