hibernate mysql ssl_hibernate5的一些坑

从hibernate4升级到hibernate5时,SessionFactory创建方式改变导致MappingException。解决方法包括使用新的SessionFactory构建方式。MySQL5InnoDBDialect方言设置错误会造成语法错误,需调整dialect配置。连接数据库时,设置`characterEncoding=UTF8&useSSL=false`防止乱码和SSL警告。Maven项目中,.hbm.xml文件未复制到target/classes导致MappingNotFoundException,需在pom.xml中添加资源配置。
摘要由CSDN通过智能技术生成

SessionFactory创建的修改

如果你是刚刚从hibernate4升级到hibernate5,这时候你的项目肯定就要出错了,什么错呢?

org.hibernate.MappingException: Unknown entity: xx类

这是因为SessionFactory创建方式变了

hibernate4

Configuration conf = newConfiguration().configure();

ServiceRegistry serviceRegistry= newStandardServiceRegistryBuilder().

applySettings(conf.getProperties()).build();

SessionFactory sessionFactory= conf.buildSessionFactory(serviceRegistry);

hibernate5

StandardServiceRegistry standardRegistry = newStandardServiceRegistryBuilder().configure().build();

Metadata metadata= newMetadataSources(standardRegistry).getMetadataBuilder() .applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();

SessionFactory sessionFactory= metadata.getSessionFactoryBuilder().build();

hibernate5连接数据库出错

错误提示

MySQL server version for the right syntax to use near 'type=InnoDB' at line x

这个主要是hibernate方言设置出问题了

修改hibernate.cfg.xml中的dialect,如下

org.hibernate.dialect.MySQL5InnoDBDialect

hibernate连接数据库出现乱码或者出现SSL警告

解决方法如下:

jdbc:mysql:///maven?characterEncoding=UTF8&userSSL=false

maven项目中使用hibernate出错

出错提示

org.hibernate.MappingNotFoundException: resource:**.hbm.xml not found

原因

原来对于Maven工程,编译的工作是由Maven程序来完成的,而Maven默认只会把src/main/resources文件夹下的文件拷贝到target/classes文件夹下,所以上图中用红框框起来的.hbm.xml都不会被复制到/target/calsses文件夹下,所以Hibernate框架在运行的时候,就会报找不到*.hbm.xml的错误。

解决办法

在pom.xml下添加以下代码

src/main/java

**/*.xml

true

src/main/resources

**/*.xml

**/*.properties

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值