以下の 2 つのソリューションのうち、どちらがベスト プラクティスなのか疑問に思っていました。
問題 : ステートレス セッション Bean VehicleBean があり、ビジネス ロジックと、ホイール、タイヤなどを備えた Car の永続性を備えたメソッドを実装しました。
@Stateless
class VehicleBean{
@PersistenceContext
private EntityManager em;
@EJB
Inspector inspectorBean;
@EJB
DocumentBean documentBean;
public void persistCar(){
Car car = new Car();
car.setMake("Ford");
em.persist(car);
documentBean.persistDocument(new Document(car));
for (int i = 0; i < 4; i++){
createWheel(car);
}
private void createWheel(Car car){
// some business logic
inspectorBean.inspect();
Wheel wheel = new Wheel();
wheel.setCar(car);
em.persist(wheel);
...
}
...
}
互いに呼び出されるさまざまなプライベート メソッド (1) 車の作成、2) 車輪の作成など) があり、これらすべてのメソッドを 1 つのヘルパー クラスに再グループ化したいと考えています。
ソリューション:
1) VehicleBean のすべてのプライベート メソッドを含むヘルパー クラス CarBuilder を使用します。私は ejb インジェクションを使用できないので、次のようにコンストラクターへの参照によって渡したいと思います。
public void persistCar(){
new CarBuilder(this, document, inspectorBean);
}
class CarBuilder{
private VehiculeBean vehiculeBean;
...
CarBuilder(VehiculeBean,....){
this.vehiculeBean = vehiculeBean;
}
}
2) CarBuilder をステートレス セッション Bean として作成し、その Bean を VehiculeBean に注入します。
2)を使用する利点はありますか?そのため、コンテナによって管理される CarBuilder、MotorcyleBuilder などのさまざまな Bean が多数あります。