Java を用いて、1 つの統合エンティティとして 2 つの独立したエンティティを比較する

Javaではequals()メソッドを利用することで、2つのエンティティ・クラスが等しいかどうかを判定できます。

  1. まずは、エンティティクラスの親クラスにequals()メソッドがオーバーライドされていることを確認する。もしequals()メソッドがオーバーライドされていなければ、オブジェクトの参照が等しいかどうかを比較するObjectクラスのequals()メソッドがデフォルトで使用される。
  2. エンティティクラス内のプロパティに基づいて2つのオブジェクトが一致しているかどうかをequals()メソッド内で比較できます。比較するプロパティは、すべてのプロパティにすることも、一部のプロパティにすることもできます。これは、具体的なビジネス要件によって決まります。
  3. オブジェクトの属性を比較する際には、Objects クラスの equals() メソッドなど、Java で提供されている比較メソッドを使用できます。
  4. プロパティーを比較する時、基本データ型のプロパティーの比較では==演算子も利用可能です。

以下に、2つのエンティティクラスが等しいかどうかを判断するコード例の示します。

import java.util.Objects;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
public static void main(String[] args) {
Person person1 = new Person("Alice", 20);
Person person2 = new Person("Bob", 25);
Person person3 = new Person("Alice", 20);
System.out.println(person1.equals(person2));  // false
System.out.println(person1.equals(person3));  // true
}
}

上記の例では、equals()メソッドをオーバーライドして、nameとageプロパティを比較し、Objectsクラスのequals()メソッドを用いて比較を行っています。main()メソッドではPersonオブジェクトとしてperson1、person2、person3の3つのオブジェクトを作成し、それぞれequals()メソッドを用いて一致性を比較しています。出力結果は、person1とperson2は一致せず、person1とperson3は一致するというものです。

bannerAds