hibernate配置文件提示
1.打开eclipse的的window--preferences
2.在搜索框输入Xml Catalog,双击打开,点击 add
3.点击fileSystem,找到你dtd文件的路径(Location)
文件位于hibernate-core目录下通过搜索找到hibernate-configuration-3.0.dtd
4.Key type选URI
5.Key复制配置文件中的http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd
同理hibernate—mapping-3.0.dtd找到自己路径,同样选择URI而Key则复制xxx.hbm.xml中的http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd
搭建log4j日志环境
1.可以通过该网站http://logging.apache.org/log4j/1.2/下载log4j将下载目录下的log4j-1.2.17.jar包导入到项目中去。
2,找到hibernate/project/etc下的log4j.properties复制到eclipse项目下src处,可以通过对log4j的修改来改变显示哪些内容。
SessionFactory sessionFactory = metadata.getSessionFactoryBuilder().build();
Hibernate5不再显式的使用Configuration类代表配置信息,而是新增了一个Metadata类来处理,SessionFactory的创建从Metadata实例中获得一个创建者,然后调用改创建者的build()方法获得SessionFactory。这是典型的创建者模式。
若依旧在Hibernate5中使用Hibernate4创建SessionFactory的方式,代码编译不会报错,但在运行时会抛出一个QuerySyntaxException异常:XXX is not mapped。
这个异常信息似乎告诉我们是因为User类没有映射到数据库的表中,然而我认真检查了所有配置信息,并没有发现配错的情况。于是我把Maven依赖的Hibernate5降级到Hibernate4目前最后一个版本4.3.11,QuerySyntaxException异常没有出现,User类也正常映射到了数据库表中。我一开始还以为是Hibernate5有bug,查看文档之后才发现原来是SessionFactory的创建方式改了。
1.打开eclipse的的window--preferences
2.在搜索框输入Xml Catalog,双击打开,点击 add
3.点击fileSystem,找到你dtd文件的路径(Location)
文件位于hibernate-core目录下通过搜索找到hibernate-configuration-3.0.dtd
4.Key type选URI
5.Key复制配置文件中的http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd
同理hibernate—mapping-3.0.dtd找到自己路径,同样选择URI而Key则复制xxx.hbm.xml中的http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd
搭建log4j日志环境
1.可以通过该网站http://logging.apache.org/log4j/1.2/下载log4j将下载目录下的log4j-1.2.17.jar包导入到项目中去。
2,找到hibernate/project/etc下的log4j.properties复制到eclipse项目下src处,可以通过对log4j的修改来改变显示哪些内容。
Hibernate4创建SessionFactory的方式
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory sf = configuration.buildSessionFactory(serviceRegistry);
Hibernate5创建SessionFactory新的方式
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
.configure().build();
Metadata metadata = new MetadataSources(standardRegistry)
.getMetadataBuilder()
.applyImplicitNamingStrategy(
ImplicitNamingStrategyJpaCompliantImpl.INSTANCE)
.build();
SessionFactory sessionFactory = metadata.getSessionFactoryBuilder().build();
Hibernate5不再显式的使用Configuration类代表配置信息,而是新增了一个Metadata类来处理,SessionFactory的创建从Metadata实例中获得一个创建者,然后调用改创建者的build()方法获得SessionFactory。这是典型的创建者模式。
若依旧在Hibernate5中使用Hibernate4创建SessionFactory的方式,代码编译不会报错,但在运行时会抛出一个QuerySyntaxException异常:XXX is not mapped。
这个异常信息似乎告诉我们是因为User类没有映射到数据库的表中,然而我认真检查了所有配置信息,并没有发现配错的情况。于是我把Maven依赖的Hibernate5降级到Hibernate4目前最后一个版本4.3.11,QuerySyntaxException异常没有出现,User类也正常映射到了数据库表中。我一开始还以为是Hibernate5有bug,查看文档之后才发现原来是SessionFactory的创建方式改了。