JPA EntityManagerFactory
来源:互联网 发布:阿里云 按流量计费 编辑:程序博客网 时间:2024/05/18 17:44
在使用JPA时,首先要通过Persistence.createEntityManagerFactory创建一个EntityManagerFactory。
对于javax.persistence.Persistence,首先要找到provider,
public static EntityManagerFactory createEntityManagerFactory( String persistenceUnitName, Map properties) { EntityManagerFactory emf = null; if (providers.size() == 0) { try{ findAllProviders(); } catch (IOException exc){}; } for (PersistenceProvider provider : providers) { emf = provider.createEntityManagerFactory(persistenceUnitName, properties); if (emf != null){ break; } } if (emf == null) { throw new PersistenceException("No Persistence provider for EntityManager named " + persistenceUnitName); } return emf; }
private static void findAllProviders() throws IOException { ClassLoader loader = Thread.currentThread().getContextClassLoader(); Enumeration<URL> resources = loader.getResources("META-INF/services/" + PersistenceProvider.class.getName()); Set<String> names = new HashSet<String>(); while (resources.hasMoreElements()) { URL url = resources.nextElement(); InputStream is = url.openStream(); try { names.addAll(providerNamesFromReader(new BufferedReader(new InputStreamReader(is)))); } finally { is.close(); } } for (String s : names) { try{ providers.add((PersistenceProvider)loader.loadClass(s).newInstance()); } catch (ClassNotFoundException exc){ } catch (InstantiationException exc){ } catch (IllegalAccessException exc){ } } }
即首先通过当前线程上下文类加载器去加载META-INF/services/javax.persistence.spi.PersistenceProvider这个文件,进而加载里面的类,例如org.datanucleus.api.jpa.PersistenceProviderImpl ,然后去调用这个provider的createEntityManagerFactory 方法来生成EntityManagerFactory实例。
- JPA EntityManagerFactory
- JPA EntityManagerFactory Vs Hibernate’s SessionFactory
- JPA 实体管理器工厂(EntityManagerFactory)
- EntityManagerFactory
- EntityManagerFactory
- Spring三种方法创建JPA EntityManagerFactory的方法
- 在Spring环境中建立JPA Spring JPA 提供了三种方法创建JPA EntityManagerFactory:
- JPA+Spring下,applicationContext.xml中的entityManagerFactory中的class设置问题
- JPA与Spring2.5整合时发生不能创建entityManagerFactory的问题解决方法
- JPA+spring3+hibernate3部署报错Error creating bean with name 'entityManagerFactory' defined in class path
- How to use JPA from a JBoss Web application ?(jboss 中如何使用线程安全的EntityManagerFactory )
- @PersistenceContext(unitName = "entityManagerFactory")
- Persistence,EntityManagerFactory和EntityManager
- entityManagerFactory(实体管理工厂)
- JPA
- JPA
- JPA
- JPA
- Android系统开发中LOG的输出与使用
- GCC options总结
- uuid 生成主键
- ios 点击跳回主界面方法
- c++中this指针
- JPA EntityManagerFactory
- iOS手机设备判断硬件信息
- Hibernate n+1问题
- 类工厂创建对象时出现 “BLL.UserBLL”的类型初始值设定项引发异常。错误
- 4 Color UML方法
- Java传值还是传引用
- 文件路径中的“.”,new File(".")
- 【转载】一个老程序员的十年回顾
- XPath 语法规则