我正在使用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>
为什么它会多次显示上述消息? 谢谢你的帮助!!
答案 0 :(得分:1)
在每个DAO中,您将创建一个新的EntityManagerFactory。您不应为每个请求创建新的EntityManagerFactory,也不应为每个操作更糟糕。因此,首先尝试为您的app创建一个EntityManagerFactory,并在每个操作中使用它。创建EntityManagerFactory的原因很昂贵。
创建实体管理器工厂时会显示您看到的日志。它会显示emf创建的过程。如果您只创建一次emf,那么只能获得一次日志。
请确保您只创建和使用一个EntityManagerFactory ..您的应用程序将开始快速工作。
PFB以下链接了解更多详情