# shirodemo **Repository Path**: yankj12/shirodemo ## Basic Information - **Project Name**: shirodemo - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-11-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # shirodemo 学习使用shiro管控权限 *** ## 待开发的功能 - 使用mybatis访问数据库 - 增加mongodb的支持 ## 常见问题 ### Hibernate 5.0命名策略使用naming-strategy不起作用 参考资料: [80. Hibernate 5.0命名策略使用naming-strategy 不起作用【从零开始学Spring Boot】](http://412887952-qq-com.iteye.com/blog/2315686) 事情的起因:一不小心从1.3.3升级到了1.4.0版本,结果就碰到了各种悲催的事情了,好吧,Hibernate5.0的新特性就是其中一个坑,我们会发现我们配置的naming-strategy不生效了。那怎么办呢?请差此文,此文应该是可以解决您的困惑的。 上面这么信息,其实就是想表达如果想升级Hibernate到5.1的话,那么之前的 hibernate.ejb.naming_strategy将不再被支持,而是被替换成了两个属性: ``` hibernate.physical_naming_strategy hibernate.implicit_naming_strategy ``` 这两个属性都是干嘛的呢? 对于 implicit_naming_strategy Hibernate官方有这么一句话: >used whenever a table or column is not explicitly named to determine the name to use\ implicit naming strategy:隐式命名策略,使用此属性当我们使用的表或列没有明确指定一个使用的名称 。 对于 physical_naming_strategy Hibernate官方有这么一句话: >used to convert a "logical name" (either implicit or explicit) name of a table or column into a physical name (e.g. following corporate naming guidelines)\ physical naming strategy:物理命名策略,用于转换“逻辑名称”(隐式或显式)的表或列成一个物理名称。 之后的才是重点哦,对于physical_naming_strategy有两个常用的配置: ``` org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl ``` 对于`PhysicalNamingStrategyStandardImpl`有`DefaultNamingStrategy`的效果; 对于`SpringPhysicalNamingStrategy`有`ImprovedNamingStrategy的效果。` 另外一个属性,好吧,其实我也不是很明白具体是怎么使用,以及这两个属性怎么配合使用,什么场景下出现什么特殊的效果。有知道的不吝赐教,在此谢过。 hibernate5之后如何和SpringBoot结合,可以参考如下链接 [神の笔记 Spring Boot 整合 Hibernate5 ](http://www.cnblogs.com/xiongjiajia/p/7553287.html) 大概应该改为如下配置: - properties配置 ``` spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl ``` - yml配置 ``` spring: jpa: database: MYSQL # 是否显示HQL show-sql: false hibernate: # Entity与数据库表名对应 naming.physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl ``` ## 参考资料 - [Hibernate 动态表名映射(数据库分表) NamingStrategy](https://blog.csdn.net/jethai/article/details/52345254) 可以设置类名和表名的映射关系 - [Hibernate之创建命名策略](http://www.cnblogs.com/wangyong/p/Hibernate.html) - [Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题](http://blog.51cto.com/4528195/1983780) - [80. Hibernate 5.0命名策略使用naming-strategy 不起作用【从零开始学Spring Boot】](http://412887952-qq-com.iteye.com/blog/2315686)