Java开发为什么选择ORM框架而不用JDBC呢(通常来说)?

Java开发为什么选择ORM框架而不用JDBC呢(通常来说)?

1.前言

在使用Java开发中,大概率会与数据库交互,在很早时候,我们使用JDBC(Java Database Connectivity)来执行SQL语句和访问数据库。后来,随着ORM(Object-Relational Mapping)框架的出现,我们就没有直接使用JDBC了,而是用封装了JDBC的ORM框架,并提供了更高级别的抽象,以简化数据库操作。那两者有什么区别,以及为什么在企业开发中基本都使用ORM框架而不是直接使用JDBC呢?接下我我们一起看看。

2.什么是JDBC

维基百科是这样说的:Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC是面向关系型数据库的。

3.JDBC 存在的问题

代码重复与繁琐:

每次进行数据库操作时,都需要手动执行一系列相同的步骤,如加载驱动、建立连接、创建Statement或PreparedStatement、执行SQL、处理结果集、最后关闭连接等,这些步骤构成了所谓的“六步走”流程,增加了代码量和重复性。

违反开闭原则:

SQL语句直接嵌入在Java代码中,当业务逻辑变化需要调整SQL时,开发者必须修改源代码、重新编译、重新部署,这不符合软件工程中的开闭原则(Open/Closed Principle, OCP),即对扩展开放,对修改关闭。

安全性问题:

如果不恰当使用字符串拼接来构造SQL语句,容易导致SQL注入攻击,降低了应用的安全性。

硬编码与可维护性:

SQL语句硬编码在Java代码中,使得数据库逻辑与业务逻辑紧密耦合,不利于代码维护和分工合作。

扩展性与灵活性不足:

针对不同的查询条件,预编译的PreparedStatement虽然可以防止SQL注入,但其参数化部分仍可能导致SQL语句结构不够灵活,尤其是在条件组合多变的情况下。

资源管理问题:

连接管理不当,如频繁地创建和销毁数据库连接,可能会消耗大量数据库资源,降低系统性能。

结果集处理复杂:

结果集(ResultSet)的遍历和转换成具体业务对象的过程较为繁琐,尤其是面对复杂的查询结果时,需要编写大量的重复代码进行数据映射。

4.怎么解决JDBC的问题呢?

那么就是这篇文章提到的另一个东西了,那就是ORM(对象关系映射)框架,例如Hibernate、MyBatis等,它们提供了一种更高级别的抽象层,可以简化数据库操作,提高代码复用率和安全性,并且更好地遵循软件工程的最佳实践。

5.总结

看了上面的内容,那我们就基本知道Java开发为什么基本选择ORM框架而不用JDBC了

主要原因在于解决开发效率、代码可读性和可维护性、以及减少重复劳动等方面的问题。以下是几个关键点:

抽象层次提升:

ORM框架将底层的数据库操作抽象出来,允许开发者以面向对象的方式操作数据库,无需关注具体的SQL执行细节,比如打开和关闭连接、创建和执行SQL语句等。

对象关系映射:

ORM实现了对象模型与数据库表之间的映射,使开发者能够直接操作领域对象,而不是原始的数据行。这样可以直接把Java对象持久化到数据库中,或者从数据库中加载数据到Java对象,大大减少了数据转化的工作量。

易用性与开发效率:

ORM提供了强大的查询能力,通常支持类型安全的查询构建,避免了SQL语法错误和SQL注入风险。此外,许多ORM还支持延迟加载、关联关系管理和事务管理等功能,进一步简化了开发过程。

代码可读性与可维护性:

使用ORM,代码更加清晰和简洁,业务逻辑与数据库访问逻辑分离,有助于提高代码质量,方便后期维护和团队协作。

减少冗余与自动化处理:

ORM框架能自动处理很多常规的CRUD(创建、读取、更新、删除)操作,减少手写重复SQL语句的工作量,同时自动管理数据库连接池和缓存,优化资源使用。

移植性与扩展性:

ORM框架往往能在不同数据库之间提供更好的兼容性和移植性,如果更换数据库,只需配置文件的改动,而不需要大规模修改代码中的SQL。

相关推荐

摺紙“鹿”:如何按照方案製作帶孩子的紙鹿頭?適合初學者的模塊化摺紙,一個簡單的 DIY 折疊選項
有线电视、IPTV、OTT ,“看电视”这件事,您会“选”吗?
2002年世界杯丹麦队阵容
365bet网址是多少

2002年世界杯丹麦队阵容

📅 07-07 👁️ 7850
圣诞姜饼屋
365登录器

圣诞姜饼屋

📅 08-14 👁️ 4679
【肩膀宽的人选择什么外套】外套让肩宽的女生脱离魁梧形象
【魅族x9手机】魅族x9手机哪款好?看实拍,买好货!
365bet网址是多少

【魅族x9手机】魅族x9手机哪款好?看实拍,买好货!

📅 08-23 👁️ 7232