⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdodialect.java

📁 spring的源代码
💻 JAVA
字号:
/*
 * Copyright 2002-2004 the original author or authors.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */ 

package org.springframework.orm.jdo;

import java.sql.Connection;

import javax.jdo.JDOException;
import javax.jdo.PersistenceManager;

import org.springframework.dao.DataAccessException;

/**
 * Strategy that encapsulates certain functionality that standard JDO 1.0 does not offer
 * despite being relevant in the context of O/R mapping, like access to the underlying
 * JDBC connection and explicit flushing of changes to the database.
 *
 * <p>To be implemented for specific JDO implementations like Kodo, Lido, or JDO Genie.
 * Almost every O/R-based JDO implementation will offer proprietary means to access the
 * underlying JDBC Connection and to explicitly flush changes. JDO 2.0 respectively
 * JDO/R 2.0 are likely to define standard ways for these: If applicable, a JdoDialect
 * implementation for JDO 2.0 will be provided to leverage them with Spring's JDO support.
 *
 * @author Juergen Hoeller
 * @since 02.11.2003
 */
public interface JdoDialect {

	/**
	 * Retrieve the JDBC connection that the given JDO persistence manager uses underneath,
	 * if accessing a relational database. This method will just get invoked if actually
	 * needing access to the underlying JDBC connection.
	 * <p>This strategy is necessary as JDO 1.0 does not provide a standard way to retrieve
	 * the underlying JDBC Connection (due to the fact that a JDO implementation might not
	 * work with a relational database at all).
	 * @param pm the current JDO persistence manager
	 * @return the underlying JDBC connection
	 * @throws JDOException in case of retrieval errors
	 * @see JdoTransactionManager#setDataSource
	 */
	Connection getJdbcConnection(PersistenceManager pm) throws JDOException;

	/**
	 * Flush the given persistence manager, i.e. flush all changes (that have been applied
	 * to persistent objects) to the underlying database. This method will just get invoked
	 * if eager flushing is actually necessary, for example if JDBC access code needs to
	 * see changes within the same transaction.
	 * @param pm the current JDO persistence manager
	 * @throws JDOException in case of errors
	 * @see JdoAccessor#setFlushEager
	 */
	void flush(PersistenceManager pm) throws JDOException;

	/**
	 * Translate the given JDOException to a corresponding exception from Spring's
	 * generic DataAccessException hierarchy. An implementation should apply
	 * PersistenceManagerFactoryUtils' standard exception translation if can't do
	 * anything more specific.
	 * <p>Of particular importance is the correct translation to
	 * ObjectRetrievalFailureException, ObjectOptimisticLockingFailureException,
	 * and DataIntegrityViolationException. Unfortunately, standard JDO does not
	 * allow for portable detection of those.
	 * @param ex the JDOException thrown
	 * @return the corresponding DataAccessException (must not be null)
	 * @see JdoAccessor#convertJdoAccessException
	 * @see JdoTransactionManager#convertJdoAccessException
	 * @see PersistenceManagerFactoryUtils#convertJdoAccessException
	 * @see org.springframework.orm.ObjectRetrievalFailureException
	 * @see org.springframework.orm.ObjectOptimisticLockingFailureException
	 * @see org.springframework.dao.DataIntegrityViolationException
	 */
	DataAccessException translateException(JDOException ex);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -