公司项目引入JPA改造了数据层,方便项目适配多种类型数据库,但也逐渐变得臃肿,模块启动速度缓慢。原先web模块启动一次大概需要14s,而改造后启动一次大概需要44s,不便于项目的开发、调试和部署。
网上查了一下关于项目启动速度优化的一些内容,大部分其实就是减少启动时扫描的包,但检查了整个项目,其实我们的项目包扫描的粒度已经很合适了,没有优化的空间。想到改造前后最大的区别就在于数据层的不同,感觉可能是引入了JPA影响,毕竟JPA是面向接口编程,而且项目中定义的JPA接口有100+个,项目启动时动态代理加载的类比较多,导致启动速度比较慢。有了排查方向,后面就比较好处理。
因为猜测是项目启动的时候加载的类比较多导致的,于是通过懒加载的方式看一下启动效果。在StartServer用全局懒加载的方式启动项目:
public class StartServer {
public static void main
数据库监听
启动
缓
慢
,无响应,网关配置了防火墙(非本机防火墙,网关防火墙)问题,数据库监听
启动
缓
慢
,10多20多分钟
启动
后报错:TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
Linux Error: 32: Broken pipe
1、右键“计算机”找到以
oracle
开头的所有服务,全部改为“手动”
启动
;2、需要使用
oracle
的时候,只
启动
Oracle
OraDb10g_home1TNSListener 和
Oracle
ServiceORCL 两项服务即可;3、
Oracle
OraDb11g_home1TNSListener:监听器服务,如果有客户端需要连接到数据库,此服务必须打开,所以此服务必须
启动
。Orac...
org.springframework.data.
jpa
.repository.
Jpa
Repository中可以使用Sort定义排序规则,但在使用时我发现了一些小问题
正常基于Pageable中的Sort字段排序
Sort sort = new Sort(Direction.ASC, "seqNum");
Pageable pageable = new PageRequest(0, size, s...
按照日志要求将 open-in-view=false。再次
启动
,如果在实体类中外键字段使用了懒加载模式,在视图层中调用数据时,则会出现 no session 异常。解决方法:手动注册OpenEntityManagerInViewFilter过滤器,改变session的生命周期,当web请求关闭时才结束session。在使用Spring Boot
JPA
时,open-in-view 选项默认为true。
启动
时在日志中会出现警告。
我正在尝试使用
JPA
对大型对象图进行级联保存.例如(我的对象图有点大但足够接近):@Entity@Table(name="a")public class A {private long id;@OneToMany(cascade = CascadeType.ALL, mappedBy = "a")private Collection bs;}@Entity@Table(name="b")publi...
项目
后期进行压力测试,当mysql表数据过8百万时,进行查询需要20多秒,在navicat中用sql执行了一遍发现应该1秒左右。
因为
项目
前期使用的是
JPA
,将
JPA
转成JdbcTemplate来查询数据。但是结果发现访问时间还是20多秒。反复测了几次发现,原来我之前测试1秒,是由于order by和limit没有一起使用,前面都是单独测的。最后我...
本文将要探讨的是用于Java Persistence API(
JPA
)排序的各种实现方式,它们适用于简单实体以及一对多关系中的实体。这些方法将排序工作的负担委托给数据库层。
2、使用
JPA
/ JQL API排序
通过使用Order By关键词实现JQL排序:
String jql ="Select * from Student order by id";
Query que...
我有一个REST服务,该服务使用Spring Data
JPA
调用简单的findAll 。 问题是在控制台中
记
录了很多查询,因此我假设Spring Data对名为Dis主类的每一行都执行单个查询,而不是Dis 。我有一个主要实体,必须仅获取使用@JsonView注释的某些数据:@Entity@NamedQuery(name="Dis.findAll", query="SELECT d FROM ...