实体类的orm映射文件由hibernate的*.hbm.xml管理,xml太多不方便管理。
现在 我们依然使用 hibernate的 sessionFactory实例,然后实体类的映射交由 JPA 的注释来映射
一、配置步骤和上篇文章类似:修改几个地方:
1、pom.xml引入JPA的包依赖
hibernate-entitymanager 包含hibernate
org.hibernate
hibernate-core
5.2.17.Final
org.hibernate
hibernate-c3p0
5.2.17.Final
改为:
org.hibernate
hibernate-entitymanager
5.2.17.Final
com.mchange
c3p0
0.9.5.2
2、实体类使用JPA注释映射
@Entity
@Table(name="t_user")
public class User {
@Id
@GeneratedValue(generator="hhibernate_uuid2")
@GenericGenerator(name="hhibernate_uuid2",strategy="uuid2")
private String id;
private String username; //姓名
private String sex; //性别
@Temporal(TemporalType.DATE)
private Date birthday; //出生日期
...
}
3、Spring配置文件spring.xml,添加 packagesToScan
删除读取 *.hbm.xml 的映射文件 mappingLocations 属性,添加自动扫描实体类 packagesToScan
${hibernate.dialect}
${hibernate.show_sql}
${hibernate.format_sql}
${hibernate.hbm2ddl.auto}
配置hibernate的sessionFactory实体,使用jpa注解实体类整合SSH,到此完成。
二、补充 packagesToScan 路径解析:
1、 , 会解析成"classpath*:com/xxx/entity**/*.class",这个路径可以找出com/xxx/entity根目录下的类文件
亲测:找出 cn.jq.sshweb.model 根目录及其子孙目录下所有的类文件,model不能写mod等
2、 , 会解析成"classpath*:com/xxx/entity/***/*.class",这个路径可以找出com/xxx/entity根目录下一级子目录中的类文件,如com/xxx/entity/son/Hi.class ,而不能找出com/xxx/entity目录下的类文件。
亲测:找出 cn.jq.sshweb.model 根目录的下一级子目录及其下一级目录的子孙目录所有的类文件,
3、 (注意最后的点) , 会转换成"classpath*:com/xxx/entity/**/*.class",这个路径可以找出com/xxx/entity根目录下及其子孙目录下所有的类文件. 一般来讲,这些就是我们要的文件。
亲测:找出 cn.jq.sshweb.model 根目录及其子孙目录所有的类文件,同1一样建三个表
参考文章:SSH配置:Hibernate的packagesToScan路径解析分析 ,
https://blog.csdn.net/iteye_6233/article/details/82233851
本人亲测和参考文章结果有点不一致,具体要查看源码啦,本人学习阶段功力不够,看不太明白 ^-^。
PathMatchingResourcePatternResolver implements ResourcePatternResolver