2016-06-26 46 views
0

我正在使用java swing + hibernate。不知道如何在swing中使用hibernate。重複的日誌消息hibernate

以下是我的堅持,

<?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日上午09時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:使用驅動程序[com.mysql.jdbc.Driver]在URL [jdbc:mysql:// localhost:3306/mydb] 2016年6月26日上午09點46分13秒 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO:HHH000046:連接屬性:{用戶=根,密碼= ****}君26,2016上午9點46分13秒 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO:HHH000006:自動提交模式:假2016年6月26日上午9點46分13秒org.hibernate作爲.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 配置

INFO:HHH000115:休眠連接池尺寸:20(分鐘= 1)2016年6月26日上午09時46分13秒的org.hibernate.dialect.Dialect INFO:HHH000400: 使用方言:org.hibernate.dialect.MySQL5Dialect 06月26日2016 上午09點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日上午09時46分13秒 org.hibernate.tool.hbm2ddl.SchemaValidator驗證信息:HHH000102: 抓取數據庫的元數據2016年6月26日上午09時46分13秒 組織.hibernate.tool.hbm2ddl.TableMetadata

INFO:HHH000261:表實測值:mydb.student 2016年6月26日上午9點46分13秒org.hibernate.tool.hbm2ddl.TableMetadata INFO:HHH000037: 色譜柱:[ID,姓名,地址] 有機hibernate.jpa.internal.EntityManagerFactoryRegistry addEntityManagerFactory

警告:HHH000436:實體管理器工廠名稱(mypu)已註冊。如果實體管理器將羣集或鈍化, 指定屬性 「hibernate.ejb.entitymanager_factory_name」獨特的價值2016年6月26日上午09時46分13秒 org.hibernate.ejb.HibernatePersistence logDeprecation

警告:HHH015016 :遇到不推薦使用的javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence];改爲使用 [org.hibernate.jpa.HibernatePersistenceProvider]。 2016年6月26日 上午09時46分13秒org.hibernate.ejb.HibernatePersistence logDeprecation

WARN:HHH015016:遇到一個棄用javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence];改爲使用 [org.hibernate.jpa.HibernatePersistenceProvider]。 2016年6月26日 上午09時46分13秒org.hibernate.ejb.HibernatePersistence logDeprecation

WARN:HHH015016:遇到一個棄用javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence];改爲使用 [org.hibernate.jpa.HibernatePersistenceProvider]。 2016年6月26日 上午09時46分13秒org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO:HHH000204:處理 PersistenceUnitInfo [名:mypu

爲什麼它顯示上述消息很多次? 謝謝你的幫助!

+0

你得到任何'Exception'?他們只是警告你可以忽略 –

+0

沒有例外...但它需要時間來運行可執行jar和那個問題 –

回答

1

在每個DAO中,您正在創建一個新的EntityManagerFactory。您不應爲每個請求創建新的EntityManagerFactory,或者對每個操作都不要創建新的EntityManagerFactory。因此,首先嚐試爲您創建一個EntityManagerFactory應用程序,並在每個操作中使用它。創建EntityManagerFactory的原因很昂貴。

創建實體管理器工廠時顯示您看到的日誌..它向您顯示emf創建過程。如果您創建emf,只會獲得一次該日誌。

請確保您創建和使用只有一個EntityManagerFactory ..你的應用程序將開始快速工作。

PFB下面的鏈接,一些細節

How frequently should I create an EntityManager?