jdbc和jpa的优缺点

jdbc和jpa的优缺点,第1张

jdbc数据库的执行速度比较快,但是代码写起来比较繁琐。jpa对sql进行了很严密的封装,几乎不用写sql。但是执行速度不是很快。并且感觉jpa用起来超级不方便,很多数据库的功能封装的不彻底,都找不到方法用。宁愿用mybatis也不想用jpa 了。。。。

将查询语句放到服务器命令行去跑,如果慢,则可以考虑通过添加索引来提高查询速度。

如已有索引或添加索引后查询速度仍未改善,查看语句执行计划中,是全表扫描还是走索引。如果走了索引,那就可能考虑是服务器性能瓶颈或数据库设置问题,涉及的设置项比较多,你没有提供相关信息,无法继续提供优化建议。如果没有走索引,检查语法(查询条件添加函数不走索引)和表属性(关联表字符集不统一不走索引)。

如果服务器本地快,但页面查询慢,那就排除了性能问题,考虑网络问题与页面查询语句调用的驱动模块是否有问题。检测网络连接速度,如慢尝试更换网线。网络连接速度正常,则尝试更换调用的驱动包,重新下一个或换一个版本。

mysql支持几十万的数据,响应速度应该是毫秒级的。

看了下你的语句,不要用IN了,改INNER JOIN吧,套那么多层IN,肯定没效率。

1 JPA概念

Java persistence API的简称,中文名是Java持久层API,

是JDK50注解或XML描述对象-关系表的映射关系,

并将运行期的实体对象持久化到数据库中。

(对象持久化:是将内存中的对象保存到可永久保存的存储设备中的一种技术)

2 JPA出现的原因

1简化现有JavaEE和JavaSE应用的对象持久化的开发工作;

2Sun希望整合ORM技术,实现在持久化领域的统一应用;

3 JPA提供的技术

1ORM映射元数据

JPA支持XML和JDK50注解两种元数据的形式,元数据描述对象和表之间的映射关系框架据此将实体对象持久化到数据库表中;(元数据:是指用来描述数据的数据,就是描述代码间关系的数据,如:hibernate是用hbm文件。JDK50出来后,java语言中就有了四种类型(TYPE),即类(class)、枚举(enum)、接口(interface)和注解(@interface),它们是处在同一级别的。java就是通过注解来表示元数据的。)

2JPA的API

用来 *** 作实体对象,执行crud *** 作,框架在底层替我们完成所有的事情,开发者从繁琐的JDBC 和 SQL代码中解脱;

3查询语言

通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合;

我最近使用springboot的时候也遇到跟你一样的问题

看我的BaseModel

public class BaseModel implements Serializable {

@Id

@GeneratedValue(strategy = GenerationTypeAUTO)

@Column(name = "id")

private Long id;

protected BaseModel(){

thisid = 1L;

}

public Long getId() {

return id;

}

public void setId(Long id) {

thisid = id;

}

public boolean equals(Object other) {

if (other == null || othergetClass() != thisgetClass())

return false;

if(thisgetId() == null || ((BaseModel) other)getId() == null) return false;

return thisgetId()equals(((BaseModel) other)getId());

}

public int hashCode() {

return new HashCodeBuilder()append(getId())toHashCode();

}

}

这里的BaseModel是我的实体类的父类,我错误的原因是序列化没有重写好equals函数,因为动态生成sql语句的时候主键默认为null,无法识别这是不是一个新的对象(我的理解),所以重写的时候多了

if(thisgetId() == null || ((BaseModel) other)getId() == null) return false;

因为主键不为空,为null肯定不相等。我就这样解决了,不知道能不能帮到你了。

以上就是关于jdbc和jpa的优缺点全部的内容,包括:jdbc和jpa的优缺点、mysql+springboot+jpa查询几十万条数据很慢 如何解决、通常所说的jpa指的是啥等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10104427.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存