2010-05-05 2 views
1

JPA 메소드를 호출 할 때마다 엔티티와 바인딩 쿼리를 생성 할 때마다.JPA Entity Manager 자원 처리

<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를 기억하십시오.

바인딩 로그 아래마다 참조 : EntityManager이 비용이 일반적으로 각 요청에 대해 이루어집니다 만들기

 
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 

답변

1

을; 그러나 EntityManagerFactory을 작성하는 것은 매우 비싸기 때문에은 한 번만 수행해야합니다.

Java SE 응용 프로그램에서는 일반적으로 응용 프로그램이 시작될 때 수행됩니다. 기본적으로 EMF는 팩토리 또는 도우미 클래스의 정적 변수에 보관하십시오. 신청이 끝나면 emf.close()을 잊어서는 안됩니다. 몇 가지 예는 this post 또는 this one을 참조하십시오.

+1

답장을 보내 주셔서 감사합니다. Java EE 응용 프로그램에서 JPA를 사용하고 있습니다. 그것의 컨테이너의 외부. 순수한 JPA. 하지만 앱을 자주 사용하게되면 트래픽이 매우 많아 져 코드 작성 및 구성이 매우 효율적이어서 고성능을 얻을 수 없습니다. 미안 엔터프라이즈 생성 관리자 팩터 리가 오타되었습니다. 그렇다면 어떻게 매번 엔티티 관리자 팩토리를 효율적으로 대신 처리 할 수 ​​있을까요? – user333800