使用spring jpa配置无效数据库时的句柄期望

使用spring jpa配置无效数据库时的句柄期望,spring,spring-data-jpa,openjpa,Spring,Spring Data Jpa,Openjpa,我们有一个从数据库读取数据的应用程序。我们使用Spring JPA OpenJPA实现与数据库交互。当前,如果数据库详细信息无效,我们会收到一个错误。当配置了无效的数据库时,我们如何在不使应用程序崩溃的情况下处理预期 请在下面找到配置类和我们使用的persistence.xml文件。 JPA MSSQL配置类 @Configuration @Profile("MSSQL") @EnableTransactionManagement @EnableJpaReposi

我们有一个从数据库读取数据的应用程序。我们使用Spring JPA OpenJPA实现与数据库交互。当前,如果数据库详细信息无效,我们会收到一个错误。当配置了无效的数据库时,我们如何在不使应用程序崩溃的情况下处理预期

请在下面找到配置类和我们使用的persistence.xml文件。 JPA MSSQL配置类

    @Configuration
    @Profile("MSSQL")
    @EnableTransactionManagement
    @EnableJpaRepositories(basePackages = "com.sample", 
    entityManagerFactoryRef = "mssqlEntityManager", transactionManagerRef = "mssqlTransactionManager")
    public class MSSqlContext
    {

        private static final String PACKAGES_TO_SCAN = "com.sample.mssql";
        private static final String PERSISTANT_UNIT_NAME = "MssqlUnit";

        @Resource
        private Environment environment;

        @Autowired
        ApplicationContext appContext;


        @Bean
        public DataSource dataMssqlSource()
        {
            BasicDataSource dataSource = new BasicDataSource();
            dataSource.setDriverClassName("net.sourceforge.jtds.jdbc.Driver");
            dataSource.setUrl("jdbc:jtds:sqlserver://127.0.0.1/DB");
            dataSource.setUsername("test");
            dataSource.setPassword("test");

            return dataSource;
        }


        @Bean
        public JpaTransactionManager mssqlTransactionManager() throws ClassNotFoundException
        {
            JpaTransactionManager transactionManager = new JpaTransactionManager();

            transactionManager.setEntityManagerFactory(this.mssqlEntityManager().getObject());

            return transactionManager;
        }


        @Bean

        public LocalContainerEntityManagerFactoryBean mssqlEntityManager() throws ClassNotFoundException
        {

            LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();

            entityManagerFactoryBean.setDataSource(this.dataMssqlSource());
            entityManagerFactoryBean.setPackagesToScan(PACKAGES_TO_SCAN);
            entityManagerFactoryBean.setPersistenceProviderClass(PersistenceProviderImpl.class);
            entityManagerFactoryBean.setPersistenceUnitName(PERSISTANT_UNIT_NAME);
            entityManagerFactoryBean.afterPropertiesSet();
            return entityManagerFactoryBean;

        }


    }


    Persistance.xml

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
        <persistence-unit name="IDSchemaPersistenceUnit"
            transaction-type="RESOURCE_LOCAL">
            <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
            <class>com.sample.entity.SampleEntity</class>
            <exclude-unlisted-classes>true</exclude-unlisted-classes>
            <properties>
                <property name="openjpa.Log" value="DefaultLevel=ERROR, Tool=ERROR" />
                <property name="openjpa.jdbc.DBDictionary" value="mssql" />
                <property name="openjpa.DataCache" value="true" />
                <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" />
            </properties>
        </persistence-unit>
    </persistence>

如何配置JPA?使用persistence.xml还是通过注释?我们使用persistence.xml。请查找所附的上下文类和Persistence.xmlWell,您的持久性单元将在应用程序运行期间初始化。如果初始化失败,则应用程序失败。第一次需要时,您必须手动创建持久性单元。我不清楚。你能详细说明一下吗?