重复日志消息休眠

时间:2016-06-26 04:33:29

标签: java hibernate

我正在使用java swing + hibernate。不知道如何使用swing进行休眠。

以下是我的坚持,

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd ">
<persistence-unit name="mypu">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.example.Student</class>
   <!-- there are more entities -->

    <properties>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mydb" />
        <property name="hibernate.connection.username" value="root" />
        <property name="hibernate.connection.password" value="root" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="hibernate.show_sql" value="true" />
    </properties>
</persistence-unit>

不确定我是否写作。我为每个实体类都有DAO calss,它看起来像

class StudentDAO {
  private EntityManagerFactory emf;
  private EntityManager em;

  public StudentDAO()
  {
    emf = Persistence.createEntityManagerFactory("mypu");
    em = emf.createEntityManager();
  }
}

所以每个DAO类都有上面的代码。

当我运行项目时它在控制台中显示以下消息大约8-10次。 这就是为什么需要时间来运行项目。

  
    

2016年6月26日上午9:46:13 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl     配置

         

警告:HHH000402:使用Hibernate内置连接池(不供生产使用!)2016年6月26日上午9:46:13     org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl     buildCreator

         

信息:HHH000401:在URL [jdbc:mysql:// localhost:3306 / mydb]使用驱动程序[com.mysql.jdbc.Driver] 2016年6月26日上午9:46:13     org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl     buildCreator

         

信息:HHH000046:连接属性:{user = root,password = ****} 2016年6月26日上午9:46:13     org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl     buildCreator

         

INFO:HHH000006:Autocommit mode:false Jun 26,2016 9:46:13 am org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl     配置

         

信息:HHH000115:Hibernate连接池大小:20(min = 1)2016年6月26日上午9:46:13 org.hibernate.dialect.Dialect信息:HHH000400:     使用方言:org.hibernate.dialect.MySQL5Dialect 2016年6月26日     上午9:46:13 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory     

         

信息:HHH000397:使用ASTQueryTranslatorFactory 2016年6月26日上午9:46:13 org.hibernate.tool.hbm2ddl.SchemaValidator验证信息:     HHH000229:运行模式验证器2016年6月26日上午9:46:13     org.hibernate.tool.hbm2ddl.SchemaValidator验证信息:HHH000102:     获取数据库元数据2016年6月26日上午9:46:13     org.hibernate.tool.hbm2ddl.TableMetadata

         

信息:HHH000261:找到的表:mydb.student 2016年6月26日上午9:46:13 org.hibernate.tool.hbm2ddl.TableMetadata INFO:HHH000037:     列:[id,name,address]     org.hibernate.jpa.internal.EntityManagerFactoryRegistry     addEntityManagerFactory

         

警告:HHH000436:实体经理工厂名称(mypu)已经注册。如果实体管理器将被群集或钝化,     为属性指定唯一值     &#39; hibernate.ejb.entitymanager_factory_name&#39; 2016年6月26日上午9:46:13     org.hibernate.ejb.HibernatePersistence logDeprecation

         

警告:HHH015016:遇到一个弃用的javax.persistence.spi.PersistenceProvider     [org.hibernate.ejb.HibernatePersistence];使用     [org.hibernate.jpa.HibernatePersistenceProvider]改为。 2016年6月26日     上午9:46:13 org.hibernate.ejb.HibernatePersistence logDeprecation

         

警告:HHH015016:遇到一个弃用的javax.persistence.spi.PersistenceProvider     [org.hibernate.ejb.HibernatePersistence];使用     [org.hibernate.jpa.HibernatePersistenceProvider]改为。 2016年6月26日     上午9:46:13 org.hibernate.ejb.HibernatePersistence logDeprecation

         

警告:HHH015016:遇到一个弃用的javax.persistence.spi.PersistenceProvider     [org.hibernate.ejb.HibernatePersistence];使用     [org.hibernate.jpa.HibernatePersistenceProvider]改为。 2016年6月26日     上午9:46:13 org.hibernate.jpa.internal.util.LogHelper     logPersistenceUnitInformation INFO:HHH000204:正在处理     PersistenceUnitInfo [name:mypu <​​/ p>   

为什么它会多次显示上述消息? 谢谢你的帮助!!

1 个答案:

答案 0 :(得分:1)

在每个DAO中,您将创建一个新的EntityManagerFactory。您不应为每个请求创建新的EntityManagerFactory,也不应为每个操作更糟糕。因此,首先尝试为您的app创建一个EntityManagerFactory,并在每个操作中使用它。创建EntityManagerFactory的原因很昂贵。

创建实体管理器工厂时会显示您看到的日志。它会显示emf创建的过程。如果您只创建一次emf,那么只能获得一次日志。

请确保您只创建和使用一个EntityManagerFactory ..您的应用程序将开始快速工作。

PFB以下链接了解更多详情

How frequently should I create an EntityManager?