簡體   English   中英

JPA實體管理器資源處理

[英]JPA Entity Manager resource handling

每次我調用JPA方法時,都會創建它的實體和綁定查詢。

我的持久性屬性是:

<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.cache.provider_class"   value="net.sf.ehcache.hibernate.SingletonEhCacheProvider"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>

我正在按以下所示方式創建實體管理器:

emf = Persistence.createEntityManagerFactory("pu");
em = emf.createEntityManager();
em = Persistence.createEntityManagerFactory("pu").createEntityManager();

有沒有什么好方法可以管理實體管理器資源,而不是每次都創建新屬性,或者可以在持久性中設置任何屬性。 記住這是JPA。

每次參見下面的綁定日志:

15:35:15,527 INFO  [AnnotationBinder] Binding entity from annotated class: *
15:35:15,527 INFO  [QueryBinder] Binding Named query: * => *
15:35:15,527 INFO  [QueryBinder] Binding Named query: * => *
15:35:15,527 INFO  [QueryBinder] Binding Named query: 
15:35:15,527 INFO  [QueryBinder] Binding Named query: 
15:35:15,527 INFO  [QueryBinder] Binding Named query: 
15:35:15,527 INFO  [QueryBinder] Binding Named query: 
15:35:15,527 INFO  [QueryBinder] Binding Named query: 
15:35:15,527 INFO  [QueryBinder] Binding Named query: 
15:35:15,527 INFO  [QueryBinder] Binding Named query: 
15:35:15,527 INFO  [EntityBinder] Bind entity com.* on table *
15:35:15,542 INFO  [HibernateSearchEventListenerRegister] Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
15:35:15,542 INFO  [NamingHelper] JNDI InitialContext properties:{}
15:35:15,542 INFO  [DatasourceConnectionProvider] Using datasource: 
15:35:15,542 INFO  [SettingsFactory] RDBMS: 
and Real Application Testing options
15:35:15,542 INFO  [SettingsFactory] JDBC driver: Oracle JDBC driver, version: 9.2.0.1.0
15:35:15,542 INFO  [Dialect] Using dialect: org.hibernate.dialect.Oracle10gDialect
15:35:15,542 INFO  [TransactionFactoryFactory] Transaction strategy: org.hibernate.transaction.JDBCTransactionFactory
15:35:15,542 INFO  [TransactionManagerLookupFactory] No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recomm
ended)
15:35:15,542 INFO  [SettingsFactory] Automatic flush during beforeCompletion(): disabled
15:35:15,542 INFO  [SettingsFactory] Automatic session close at end of transaction: disabled
15:35:15,542 INFO  [SettingsFactory] JDBC batch size: 15
15:35:15,542 INFO  [SettingsFactory] JDBC batch updates for versioned data: disabled
15:35:15,542 INFO  [SettingsFactory] Scrollable result sets: enabled
15:35:15,542 INFO  [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
15:35:15,542 INFO  [SettingsFactory] Connection release mode: auto
15:35:15,542 INFO  [SettingsFactory] Default batch fetch size: 1
15:35:15,542 INFO  [SettingsFactory] Generate SQL with comments: disabled
15:35:15,542 INFO  [SettingsFactory] Order SQL updates by primary key: disabled
15:35:15,542 INFO  [SettingsFactory] Order SQL inserts for batching: disabled
15:35:15,542 INFO  [SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
15:35:15,542 INFO  [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
15:35:15,542 INFO  [SettingsFactory] Query language substitutions: {}
15:35:15,542 INFO  [SettingsFactory] JPA-QL strict compliance: enabled
15:35:15,542 INFO  [SettingsFactory] Second-level cache: enabled
15:35:15,542 INFO  [SettingsFactory] Query cache: enabled
15:35:15,542 INFO  [SettingsFactory] Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
15:35:15,542 INFO  [RegionFactoryCacheProviderBridge] Cache provider: net.sf.ehcache.hibernate.SingletonEhCacheProvider
15:35:15,542 INFO  [SettingsFactory] Optimize cache for minimal puts: disabled
15:35:15,542 INFO  [SettingsFactory] Structured second-level cache entries: disabled
15:35:15,542 INFO  [SettingsFactory] Query cache factory: org.hibernate.cache.StandardQueryCacheFactory
15:35:15,542 INFO  [SettingsFactory] Statistics: disabled
15:35:15,542 INFO  [SettingsFactory] Deleted entity synthetic identifier rollback: disabled
15:35:15,542 INFO  [SettingsFactory] Default entity-mode: pojo
15:35:15,542 INFO  [SettingsFactory] Named query checking : enabled
15:35:15,542 INFO  [SessionFactoryImpl] building session factory
15:35:15,542 INFO  [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
15:35:15,542 INFO  [UpdateTimestampsCache] starting update timestamps cache at region: org.hibernate.cache.UpdateTimestampsCache
15:35:15,542 INFO  [StandardQueryCache] starting query cache at region: org.hibernate.cache.StandardQueryCache

創建EntityManager並不昂貴,通常會為每個請求完成。 然而,創建EntityManagerFactory 非常昂貴的,只應做一次。

在Java SE應用程序中,通常應在應用程序啟動時完成。 基本上,將EMF保留在factory或helper類的靜態變量中。 只是不要忘記在應用程序結尾處使用emf.close() 有關某些示例,請參見本文本文

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM