01: /*
02: * Copyright 2002-2006 the original author or authors.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.springframework.orm.jpa;
18:
19: import java.util.Map;
20:
21: import javax.persistence.EntityManager;
22: import javax.persistence.EntityManagerFactory;
23: import javax.persistence.spi.PersistenceProvider;
24:
25: /**
26: * SPI interface that allows to plug in vendor-specific behavior
27: * into Spring's EntityManagerFactory creators. Serves as single
28: * configuration point for all vendor-specific properties.
29: *
30: * @author Juergen Hoeller
31: * @author Rod Johnson
32: * @since 2.0
33: * @see AbstractEntityManagerFactoryBean#setJpaVendorAdapter
34: */
35: public interface JpaVendorAdapter {
36:
37: /**
38: * Return the vendor-specific persistence provider.
39: */
40: PersistenceProvider getPersistenceProvider();
41:
42: /**
43: * Return a Map of vendor-specific JPA properties,
44: * typically based on settings in this JpaVendorAdapter instance.
45: * <p>Note that there might be further JPA properties defined on
46: * the EntityManagerFactory bean, which might potentially override
47: * individual JPA property values specified here.
48: * @return a Map of JPA properties, as as accepted by the standard
49: * JPA bootstrap facilities, or <code>null</code> or an empty Map
50: * if there are no such properties to expose
51: * @see javax.persistence.Persistence#createEntityManagerFactory(String, java.util.Map)
52: * @see javax.persistence.spi.PersistenceProvider#createContainerEntityManagerFactory(javax.persistence.spi.PersistenceUnitInfo, java.util.Map)
53: */
54: Map getJpaPropertyMap();
55:
56: /**
57: * Return the vendor-specific EntityManager interface that this
58: * provider's EntityManagers will implement.
59: * <p>If the provider does not offer any EntityManager extensions,
60: * the adapter should simply return the standard
61: * {@link javax.persistence.EntityManager} class here.
62: */
63: Class<? extends EntityManager> getEntityManagerInterface();
64:
65: /**
66: * Return the vendor-specific JpaDialect implementation for this
67: * provider, or <code>null</code> if there is none.
68: */
69: JpaDialect getJpaDialect();
70:
71: /**
72: * Optional callback for post-processing the native EntityManagerFactory
73: * before active use.
74: * <p>This can be used for triggering vendor-specific initialization processes.
75: * While this is not expected to be used for most providers, it is included
76: * here as a general extension hook.
77: */
78: void postProcessEntityManagerFactory(EntityManagerFactory emf);
79:
80: }
|