【问题标题】:Repeated log messages hibernate重复的日志消息休眠
【发布时间】:2016-06-26 04:33:28
【问题描述】:

我正在使用 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 类,它看起来像

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 生成器

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

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

信息:HHH000006:自动提交模式:false 2016 年 6 月 26 日上午 9:46:13 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 配置

信息:HHH000115:休眠连接池大小: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 信息:HHH000037: 列:[id、name、address] org.hibernate.jpa.internal.EntityManagerFactoryRegistry 添加EntityManagerFactory

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

警告:HHH015016:遇到不推荐使用的 javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence];采用 [org.hibernate.jpa.HibernatePersistenceProvider] 代替。 2016 年 6 月 26 日 上午 9:46:13 org.hibernate.ejb.HibernatePersistence 日志弃用

警告:HHH015016:遇到不推荐使用的 javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence];采用 [org.hibernate.jpa.HibernatePersistenceProvider] 代替。 2016 年 6 月 26 日 上午 9:46:13 org.hibernate.ejb.HibernatePersistence 日志弃用

警告: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 信息:HHH000204:处理中 PersistenceUnitInfo [名称:mypu

为什么上面的信息显示这么多次? 谢谢你的帮助!!

【问题讨论】:

  • 你收到Exception 了吗?他们只是警告你可以忽略
  • 没有例外...但是运行可执行 jar 需要时间,这就是问题所在

标签: java hibernate


【解决方案1】:

在每个 DAO 中,您都在创建一个新的 EntityManagerFactory。您不应该为每个请求创建新的 EntityManagerFactory,或者为每个操作创建更糟糕的情况。因此,首先尝试为您的应用只创建一个 EntityManagerFactory 并在每个操作中使用它。创建 EntityManagerFactory 的原因很昂贵。

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

请确保您只创建和使用一个 EntityManagerFactory .. 您的应用将开始快速运行。

PFB 以下链接了解更多详情

How frequently should I create an EntityManager?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    相关资源
    最近更新 更多