1. Springboot JPA 是什么?
JPA(ava Persistence API),是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它又不限于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。Hibernate3.2+、TopLink 10.1.3以及OpenJPA都提供了JPA的实现。用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。所以网上有大把的Springboot整合JPA教程,这里就不讲述了。直接描述我遇到的问题(坑)
2. 踩过的坑(StackOverflowError)
近期使用spring boot进行整合JPA,service继承CrudRepository之后调用,controller层调用service,废话不多说直接上代码:
service:
serviceImpl:
controller:
然后直接在postman上调试后报错:
很是奇怪,就是一个简简单单的查询列表操作,居然会报错(内存泄漏)。网上搜索了一些资料后,还是没有解决问题,最后猜想会不会是我们的Impl层和controller层写的方法名称和CrudRepository内部的方法名一样导致的,所以尝试的将findAll方法名称改为getAll,最后通过成功了。小编菜鸟嘻嘻,望大神可以更加深层次的讲解,感谢。