相关文章推荐
跑龙套的土豆  ·  Lombok ...·  1 周前    · 
阳光的警车  ·  antd ...·  5 月前    · 
欢快的冰棍  ·  centos ...·  10 月前    · 

公司项目引入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 ...