1

Mate、Blaze DS、Tomcat サーバーを使用して Flex プロジェクトを作成しています。そのすべてが機能しているようです。私の休止状態の呼び出しでさえ機能しています。ただし、それらは正しい方法で作成されていないようです。Javaで次のコードブロックを使用してユーザーにログインしています:

public AbstractUser login(String username, String password){ 
    //Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
    //SessionFactory sessionFactory= cfg.buildSessionFactory();
    SessionFactory sessionFactory;
    sessionFactory = new AnnotationConfiguration()
    .addAnnotatedClass(AbstractUser.class)
    .addAnnotatedClass(CourseSession.class)
    .addAnnotatedClass(Course.class)
    .addAnnotatedClass(Message.class)
    .addAnnotatedClass(Material.class)
    .addAnnotatedClass(TopicSession.class)
    .addAnnotatedClass(Step.class)
    .addAnnotatedClass(Section.class)
    .addAnnotatedClass(Topic.class)
    .addAnnotatedClass(Subtopic.class)
    .configure("hibernate.cfg.xml") 
    .buildSessionFactory();
    sessionFactory.openSession();

    emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);                             
    em = emf.createEntityManager(); 
    logger.debug("** username:"+username);
    logger.debug("** password:"+password);

    Query q = em.createNamedQuery("users.byUnPass");                         
    q.setParameter("username", username);   
    q.setParameter("password", password);
    AbstractUser user;

    try{
        user = (AbstractUser) q.getSingleResult(); 
    }catch(javax.persistence.NoResultException e){
        user = new AbstractUser();
    }

    return user;
}

このアプローチには 2 つの問題があります。1. 最初のボタンが押されたときに、entityManager と SessionFactory の両方が自身を初期化する必要があり、すべてが初期化されるまでかなりの時間がかかります。2. hibernate の SessionFactory に関するドキュメントを読みました。

また、HibernateUtil と呼ばれる静的初期化ブロックで Hibernate を起動するための小さなラッパー クラスをお勧めします。Hibernate ドキュメントの他の領域で、このクラスをさまざまな形で見たことがあるかもしれません。

クラスの記述方法に関するドキュメントができましたが、flex/java ファイル形式のどこに配置すればよいでしょうか? 現在、私の Java ファイル構造: comp pegasus tms- 第 1 レベルのサービス マテリアルを配置します - 私が使用しているマテリアル pojo を配置します また、EntityManager を高速化するために SessionFactory をセットアップするために必要なもの - EntityManager を閉じてから閉じると、初期化に時間がかかります。

より一般的な質問は、SessionFactory と EntityManager を最適化された方法でセットアップするにはどうすればよいですか?

前もって感謝します。

トッド

4

1 に答える 1

2

Spring Frameworkを使用していますか? そうでない場合は、真剣に検討することをお勧めします。

Blaze DS 統合HibernateおよびJPA統合を提供します。すべてをコンテキストで定義し、Spring にブートストラップさせます。EntityManager インスタンスは、サービス / DAO に直接注入されます。

于 2009-09-22T03:10:39.697 に答える