2011-07-22 18 views
19

私はEntityクラスCarを持っているとします。  マネージドBeanとセッションBeanの違い

@Entity 
public class Car 

私のIDEは私が自動的にエンティティクラスからセッションBeanを生成することができますので、私は、私はまた、JSF管理対象Beanを生成することができますCarFacade

@Stateless 
public class CarFacade 

で終わる

@ManagedBean  
@RequestScoped 
public class RegistrationController 

私ができますEntityクラスと他のBeanとの意味のある違いを理解しますが、ステートレスセッションBeanとマネージドBeanの違いは何ですか?私は、ステートレスセッションBeanは、エンティティ上で動作するビジネスロジックを実装するためのものであり、マネージドBeanは、Webベースのフロントエンドとやりとりするためのものであり、マネージドBean上でWebページ呼び出しメソッドを持ち、マネージドBeanコールセッションBeanのビジネスメソッド。

私の例では、RegistrationControllerは、Webページが呼び出す+ register(String carRegistration)メソッドを備えています。 RegistrationControllerは次に、Carをインスタンス化し、それを永続化するセッションBeanで+ create(Car car)を呼び出します。

これは間違いありませんか?

答えて

27

JSFマネージドBeanは、エンティティ(モデル)、JSFページ(ビュー)、エンタープライズBean(ビジネスサービス)の間の接着剤(コントローラ)です。

JSFページでマネージドBeanのアクションメソッドを呼び出す必要があります。このメソッドは、モデルとアクションをビジネスサービスにさらに委譲し、最終的にはサービスコールの結果。

しかし、モデルをどのように使用して渡すべきかについて完全にはわかりません。通常は、モデルをマネージドBeanのプロパティにして、フォームの入力要素にバインドして、変更しないでビジネスサービスに渡すことができます。

など。それをクリア

private Car car; 
private @EJB CarFacade carFacade; 

public RegistrationController() { 
    this.car = new Car(); 
} 

public String save() { 
    carFacade.create(car); 
    return "someoutcome"; 
} 

// ... 
+0

優秀で

<h:inputText value="#{registrationController.car.make}" /> <h:inputText value="#{registrationController.car.model}" /> <h:inputText value="#{registrationController.car.year}" /> <h:commandButton value="Save" action="#{registrationController.save}" /> 

、。ありがとう! – Laurens

+0

ようこそ。そして、あなたが車を編集したいのであれば、 '@ PostConstruct'や' ' 'id'は渡されたリクエストパラメータです。 – BalusC

+0

ニースの説明+1 – Shahzeb

関連する問題