有一个存储在数据库中并可供读取的业务类层次结构。业务类是与技术无关的 Java 类。它们有一个初始化所有属性的构造函数,并且有返回这些属性值的方法。此外,所有类都实现 equals() 和 hashCode() 方法,这些方法基于技术上独特的特征。此外,每个业务类别都有一个由数据库通过序列生成的技术密钥。顺便说一下,我们的示例中使用了 Oracle。
为了定义功能,我定义了以下接口,然后由不同的变体实现:
save<BusinessClass>() 方法将业务类及其所有引用的对象保存在数据库中。如果数据库中不存在这些对象,则会插入它们并进行更新。存在性检查基于明确的功能而不是技术密钥,因为在调用方法时不必知道技术密钥。
get<BusinessClass>ById() 方法返回传递的技术密钥的业务对象以及数据库中所有引用的对象。
JDBC 实现
让我们继续讨论第一个实现变体 - JDBC 实现。为此,您首先需 商业房地产的潜在客户 要一种方法来使用序列从数据库中确定业务对象的技术密钥。每个持久性实现都需要此方法一次:
在所示的示例中,我实现了一个关闭PreparedStatement和ResultSet的帮助器方法:
新结果集(ResultSet)用于存储业务对象。这样做的优点是您只需编写 SQL SELECT 语句,并且 JDBC 驱动程序以针对数据库优化的方式执行存储。保存业务对象的方法如下所示:
如果您现在将所有工件相加,您将得到以下结果:
结论
正如您所看到的,在使用 JDBC 实现时,您首先需要一种方法来通过序列从数据库中确定业务对象的技术密钥。我希望我能够以简单易懂的方式向您介绍第一种实现方法。
在我的博客文章的第二部分中,我将更详细地介绍“经典 Hibernate”和“JPA/Hibernate”的实现变体,并对所有变体进行相互比较。所以它仍然令人兴奋。