类 DefaultJpaDialect
- java.lang.Object
- org.springframework.orm.jpa.DefaultJpaDialect
- 所有已实现的接口:
Serializable
,PersistenceExceptionTranslator
,JpaDialect
public class DefaultJpaDialect extends Object implements JpaDialect, Serializable
Default implementation of theJpaDialect
interface. Used as default dialect byJpaTransactionManager
.Simply begins a standard JPA transaction in
beginTransaction(javax.persistence.EntityManager, org.springframework.transaction.TransactionDefinition)
and performs standard exception translation throughEntityManagerFactoryUtils
.NOTE: Spring's JPA support requires JPA 2.0 or higher, as of Spring 4.0.
- 从以下版本开始:
- 2.0
- 作者:
- Juergen Hoeller
- 另请参阅:
JpaTransactionManager.setJpaDialect(org.springframework.orm.jpa.JpaDialect)
, 序列化表格
构造器概要
构造器 构造器 说明 DefaultJpaDialect()
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 Object
beginTransaction(EntityManager entityManager, TransactionDefinition definition)
This implementation invokes the standard JPATransaction.begin
method.void
cleanupTransaction(Object transactionData)
This implementation does nothing, since the defaultbeginTransaction
implementation does not require any cleanup.ConnectionHandle
getJdbcConnection(EntityManager entityManager, boolean readOnly)
This implementation always returnsnull
, indicating that no JDBC Connection can be provided.Object
prepareTransaction(EntityManager entityManager, boolean readOnly, String name)
Prepare a JPA transaction, applying the specified semantics.void
releaseJdbcConnection(ConnectionHandle conHandle, EntityManager em)
This implementation does nothing, assuming that the Connection will implicitly be closed with the EntityManager.DataAccessException
translateExceptionIfPossible(RuntimeException ex)
This implementation delegates to EntityManagerFactoryUtils.
构造器详细资料
DefaultJpaDialect
public DefaultJpaDialect()
方法详细资料
beginTransaction
public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition) throws PersistenceException, SQLException, TransactionException
This implementation invokes the standard JPATransaction.begin
method. Throws an InvalidIsolationLevelException if a non-default isolation level is set.This implementation does not return any transaction data Object, since there is no state to be kept for a standard JPA transaction. Hence, subclasses do not have to care about the return value (
null
) of this implementation and are free to return their own transaction data Object.- 指定者:
beginTransaction
在接口中JpaDialect
- 参数:
entityManager
- the EntityManager to begin a JPA transaction ondefinition
- the Spring transaction definition that defines semantics- 返回:
- an arbitrary object that holds transaction data, if any (to be passed into
JpaDialect.cleanupTransaction(java.lang.Object)
). May implement theSavepointManager
interface. - 抛出:
PersistenceException
- if thrown by JPA methodsSQLException
- if thrown by JDBC methodsTransactionException
- in case of invalid arguments- 另请参阅:
EntityTransaction.begin()
,InvalidIsolationLevelException
,cleanupTransaction(java.lang.Object)
prepareTransaction
public Object prepareTransaction(EntityManager entityManager, boolean readOnly, String name) throws PersistenceException
从接口复制的说明:JpaDialect
Prepare a JPA transaction, applying the specified semantics. Called by EntityManagerFactoryUtils when enlisting an EntityManager in a JTA transaction or a locally joined transaction (e.g. after upgrading an unsynchronized EntityManager to a synchronized one).An implementation can apply the read-only flag as flush mode. In that case, a transaction data object can be returned that holds the previous flush mode (and possibly other data), to be reset in
cleanupTransaction
.Implementations can also use the Spring transaction name to optimize for specific data access use cases (effectively using the current transaction name as use case identifier).
- 指定者:
prepareTransaction
在接口中JpaDialect
- 参数:
entityManager
- the EntityManager to begin a JPA transaction onreadOnly
- whether the transaction is supposed to be read-onlyname
- the name of the transaction (if any)- 返回:
- an arbitrary object that holds transaction data, if any (to be passed into cleanupTransaction)
- 抛出:
PersistenceException
- if thrown by JPA methods- 另请参阅:
JpaDialect.cleanupTransaction(java.lang.Object)
cleanupTransaction
public void cleanupTransaction(Object transactionData)
This implementation does nothing, since the defaultbeginTransaction
implementation does not require any cleanup.- 指定者:
cleanupTransaction
在接口中JpaDialect
- 参数:
transactionData
- arbitrary object that holds transaction data, if any (as returned by beginTransaction or prepareTransaction)- 另请参阅:
beginTransaction(javax.persistence.EntityManager, org.springframework.transaction.TransactionDefinition)
getJdbcConnection
public ConnectionHandle getJdbcConnection(EntityManager entityManager, boolean readOnly) throws PersistenceException, SQLException
This implementation always returnsnull
, indicating that no JDBC Connection can be provided.- 指定者:
getJdbcConnection
在接口中JpaDialect
- 参数:
entityManager
- the current JPA EntityManagerreadOnly
- whether the Connection is only needed for read-only purposes- 返回:
- a handle for the Connection, to be passed into
releaseJdbcConnection
, ornull
if no JDBC Connection can be retrieved - 抛出:
PersistenceException
- if thrown by JPA methodsSQLException
- if thrown by JDBC methods- 另请参阅:
JpaDialect.releaseJdbcConnection(org.springframework.jdbc.datasource.ConnectionHandle, javax.persistence.EntityManager)
,ConnectionHandle.getConnection()
,SimpleConnectionHandle
,JpaTransactionManager.setDataSource(javax.sql.DataSource)
,NativeJdbcExtractor
releaseJdbcConnection
public void releaseJdbcConnection(ConnectionHandle conHandle, EntityManager em) throws PersistenceException, SQLException
This implementation does nothing, assuming that the Connection will implicitly be closed with the EntityManager.If the JPA implementation returns a Connection handle that it expects the application to close after use, the dialect implementation needs to invoke
Connection.close()
(or some other method with similar effect) here.- 指定者:
releaseJdbcConnection
在接口中JpaDialect
- 参数:
conHandle
- the JDBC Connection handle to releaseem
- the current JPA EntityManager- 抛出:
PersistenceException
- if thrown by JPA methodsSQLException
- if thrown by JDBC methods- 另请参阅:
Connection.close()
translateExceptionIfPossible
public DataAccessException translateExceptionIfPossible(RuntimeException ex)
This implementation delegates to EntityManagerFactoryUtils.- 指定者:
translateExceptionIfPossible
在接口中PersistenceExceptionTranslator
- 参数:
ex
- a RuntimeException to translate- 返回:
- the corresponding DataAccessException (or
null
if the exception could not be translated, as in this case it may result from user code rather than from an actual persistence problem) - 另请参阅:
EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(java.lang.RuntimeException)