hibernate Извлечение метаданных из базы данных, займет много времени - PullRequest
0 голосов
/ 17 сентября 2018

Привет: я изучаю spring с jpa, используя базу данных oracle, я попробовал пример, который ищет запись с использованием идентификатора. Мой пример работает, но поиск базы данных с сообщением занимает слишком много времени: INFO: HHH000102: Выбор базы данныхМетаданные, которые могут занять 1 или 2 минуты, у меня в таблице только 257 записей.Какое решение для этого, что мне нужно изменить, чтобы сделать это быстро.спасибо за вашу помощь.

spring-context.xml:

    <context:component-scan base-package="ben" />
       <tx:annotation-driven /> 

       <bean id="hello" class="ben.Hello">
             <property name="message" value="Bonjour"> </property>
       </bean>


       <bean id="personDaoImpl" class="ben.PersonDaoImpl">

       </bean>


 <bean id="myEmf"
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
       <property name="dataSource" ref="dataSource" />
       <property name="packagesToScan" value="ben" />
       <property name="persistenceUnitName" value="BenJpaProject"></property>
       <property name="jpaVendorAdapter">
           <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
       </property>
       <property name="jpaProperties">
          <props>
              <prop key="hibernate.hbm2ddl.auto">validate</prop>
             <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
          </props>
       </property>
   </bean>

   <bean id="dataSource"
     class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
          <property name="url" value="jdbc:oracle:thin:@10.56.4.101:1552/dev1002" />      
          <property name="username" value="ISPOWNRE6" />
          <property name="password" value="ISPOWNRE6" />

   </bean>

   <bean id="transactionManager"
     class="org.springframework.orm.jpa.JpaTransactionManager">
       <property name="entityManagerFactory" ref="myEmf" />
   </bean>


   <bean id="persistenceExceptionTranslationPostProcessor" class=
     "org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

<!--  <bean  id="personDao"  class="ben.AbstractBaseDao" /> -->

 <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
</beans>

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 
   xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
  http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

    <persistence-unit name="BenJpaProject" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>ben.Person</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
            <property name="javax.persistence.jdbc.user" value="ISPOWNRE6" />
            <property name="javax.persistence.jdbc.password" value="ISPOWNRE6" />
            <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@10.56.4.101:1552:dev1002" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.jdbc.lob.non_contextual_creation"
                value="true" />
            <property name="hibernate.jdbc.use_get_generated_keys"
                value="true" />
            <property name="hibernate.archive.autodetection" value="class " />
         </properties>
     </persistence-unit>
</persistence>

Класс для использования EntityManager:

package ben;

@Repository
public class AbstractBaseDao
{
private EntityManager em;

  @PersistenceContext
  public void setEm(EntityManager em)
  {
    this.em = em;
  }


  public <T> T findById (Class <T> clazz,Serializable code)
  {
     return em.find(clazz, code);
  }

}

Основной класс:

  public class MainJpa
       {

         public static void main(String[] args)
          {

        ApplicationContext context= new ClassPathXmlApplicationContext("spring/spring-context.xml");



          PersonDao personDao=(PersonDao) context.getBean("personDaoImpl");
          BDE1 person=personDao.findPersonById((long) 10);
          System.out.println("person Found "+person.getNumero());


      }

    }

класс PersonDaoImpl:

public class PersonDaoImpl extends AbstractBaseDao implements  PersonDao
{

  @Override
  public Person findPersonById(Long id)
  {
    Class <Person> clazz=Person.class;
    return findById(clazz, id);

  }

Сущность Person:

@Entity
public class Person
{
  @Id
  Long id;
  Long numero;
  public Long getId()
  {
    return id;
  }
  public void setId(Long id)
  {
    this.id = id;
  }
  public Long getNumero()
  {
    return numero;
  }
  public void setNumero(Long numero)
  {
    this.numero = numero;
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...