1

私は最近 JSF の勉強を始めましたが、エンティティを Controller Managed Bean に含める次の 2 つの方法に出くわしました。1 つはエンティティを として直接注入する方法で、もう 1 つManagedBeanは で初期化されるインスタンス変数としてエンティティを非管理対象 Bean として使用する方法@PostConstructです。

ある方法または別の方法の利点/欠点は何ですか? 2 番目は通常「正しい方法」として示されますが、維持するのはより複雑なようです。

非管理エンティティ

@Entity
public class Book {
 //...attributes
}

@ManagedBean
public class BookController {

   private Book book;

   @PostConstruct
   public void init() {
     book = new Book();

   }


}

管理対象エンティティ

@Entity
@ManagedBean
public class Book implements Serializable {
      //...attributes
}

@ManagedBean
public class BookController {

     @ManagedProperty(name="#{customer}")
     private Book book;

}
4

1 に答える 1

2

エンティティには独自のライフサイクルがあり、すでに JPA によって管理されています。エンティティをマネージド Bean として宣言することはお勧めしません (CDI 仕様では強く禁止されています)。コントローラーのエンティティへの参照を保持することをお勧めします-あなたの場合は非管理エンティティです。

于 2013-05-19T10:57:07.453 に答える