让Seam使用原生的Hibernate

Seam自带的seam-gen是一个非常好的命令行工具,它自动创建了程序模板,它创建的程序可以直接用Netbeans和Eclipse打开。 但是它创建的数据层却是EntityManager。对于习惯了Hibernate的开发人员来说,不太习惯。本文介绍如何将Seam工程中的EntityManager改成原生Hibernate。

以seam-gen创建的工程myproject为例:

修改components.xml





 

增加hibernate.cfg.xml

该文件保存于resources/META-INF





    
        true
        true
        java:/myprojectDatasource
        none
        org.hibernate.cache.HashtableCacheProvider

        true
        after_statement
        org.hibernate.transaction.JBossTransactionManagerLookup
        org.hibernate.transaction.JTATransactionFactory

    
    
 

注意!由于seam 并不会自动flush,因此需要将 hibernate.transaction.flush_before_completion 设置为true。
将resources/META-INF中的persistens** 及orm.xml删除。

修改build.xml

最后一步修改build.xml, 主要内容包括去除原来的persistence.xml, orm.xml等,加上hibernate.cfg.xml。搜索persistence.xml, orm.xml将它们注释掉,然后搜索target name="war" depends="compile", 在下面增加

 

 

 修改完毕!可以开始在seam组件中注入hibernateSession了:

...
    @In
    Session hibernateSession;
...

        Criteria criteria = hibernateSession.createCriteria(Project.class);
...

 注意,一旦采用原生的hibernate,你必须在hibernate.cfg.xml中增加实体类的mapping

 

我的博客:http://www.ubone.cn

你可能感兴趣的:(Seam,Seam,Hibernate,XML,ORM,Netbeans)