`
javafox
  • 浏览: 55848 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

让Seam使用原生的Hibernate

    博客分类:
  • Seam
阅读更多

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

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

修改components.xml

<!-- 增加hibernate session -->
<persistence:hibernate-session-factory name="hibernateSessionFactory"/>
<persistence:managed-hibernate-session name="hibernateSession"
                                auto-create="true"
                  session-factory-jndi-name="java:/hibernateSessionFactory"/>

<!-- 将原来的entityManager注释掉
   <persistence:managed-persistence-context name="entityManager"
                                     auto-create="true"
                          entity-manager-factory="#{myprojectEntityManagerFactory}"/>

   <persistence:entity-manager-factory name="myprojectEntityManagerFactory"
                      persistence-unit-name="myproject"/>
-->
 

增加hibernate.cfg.xml

该文件保存于resources/META-INF

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory name="java:/hibernateSessionFactory">
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="connection.datasource">java:/myprojectDatasource</property>
        <property name="hbm2ddl.auto">none</property>
        <property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>

        <property name="transaction.flush_before_completion">true</property>
        <property name="connection.release_mode">after_statement</property>
        <property name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
        <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>

<!--
        <mapping class="com.dfsoft.pm.model.User"/>
    -->    
    </session-factory>
</hibernate-configuration>
 

注意!由于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", 在下面增加

 

<copy tofile="${war.dir}/WEB-INF/classes/hibernate.cfg.xml"
              file="${basedir}/resources/META-INF/hibernate.cfg.xml"
              overwrite="true"/>

 

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

...
    @In
    Session hibernateSession;
...

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

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

 

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

分享到:
评论
2 楼 lqm1111 2009-03-14  
entityManager.getDelegate();
1 楼 andyhan 2009-03-11  
entityManager貌似有个HibernateSession的代理

相关推荐

    seam 框架整合hibernate+jsf

    Hibernate是Java领域广泛使用的对象关系映射(ORM)工具,它允许开发者用Java对象来操作数据库,消除了传统SQL代码与Java代码之间的耦合。Seam通过提供对Hibernate的无缝集成,使得开发者可以在不脱离Seam上下文的...

    seam+hibernate注册例子

    Seam和Hibernate是两个在Java开发中非常重要的框架。Seam是一个全面的、集成的Java EE框架,主要用于简化企业级应用的开发,而Hibernate则是一个强大的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库...

    seam+spring+hibernate+richfaces配置

    Seam、Spring、Hibernate和RichFaces是Java Web开发中的四大框架,它们的集成可以构建功能强大的企业级应用程序。本文将详细解析这四个组件的核心概念、它们如何协同工作以及配置过程。 **Seam框架** Seam是一款...

    jsf seam hibernate 初学者练习

    **JSF、Seam与Hibernate简介** JSF(JavaServer Faces)是Java平台上的一个用于构建用户界面的组件模型框架,它提供了一种声明式的方式来创建动态Web应用程序。JSF的核心概念是组件,这些组件可以组合成用户界面,...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................

    maven+jetty+seam+hibernate

    【标题】"maven+jetty+seam+hibernate"是一个集成开发环境的配置,主要用于Java Web应用的快速开发。这个组合充分利用了Maven的项目管理和构建能力,Jetty的轻量级服务器特性,Seam的Java EE集成框架,以及Hibernate...

    seam in action 中文 english

    同时,Seam还支持Hibernate,使得对ORM(Object-Relational Mapping)的使用更加灵活。 6. **安全性**:Seam提供了内置的安全机制,如身份验证和授权,使得开发人员能够快速为应用添加安全特性。 7. **国际化与...

    Seam框架文档简述

    Seam作为一个胶水框架,能够很好地整合各种技术栈,如AJAX、Facelet、JSF、EJB3、Hibernate、Hibernate Search、JBPM、Drools、Email、iText、JMS等,为开发者提供了一个完整的开发环境。 通过以上介绍,我们可以...

    jboss seam 学习资料,seam in action和官方手册

    5. **持久化支持**:讨论Seam对JPA和Hibernate的支持,包括实体管理和事务管理。 6. **安全管理**:学习Seam的认证和授权机制,如使用Security子模块。 7. **事件和回调**:了解Seam事件系统的工作方式,以及如何...

    Configuring Seam and packaging Seam applications

    在Seam中启动Hibernate,通常需要在seam.properties或相关的配置文件中设置Hibernate连接参数,以及配置Hibernate SessionFactory。 #### 1.4.2. Bootstrap JPA in Seam 配置JPA时,需在persistence.xml文件中定义...

    SEAM 中文开发指南

    - **使用“推”风格的MVC**:展示了如何使用 SEAM 的推送机制来更新数据。 #### 三、使用Seam-gen快速启动 - **准备活动**:设置开发环境。 - **建立一个新的Eclipse项目**:通过 Eclipse 创建 SEAM 项目。 - **...

    Jboss Seam中文版

    7. **结合Seam和Hibernate的范例:Hibernate系统**:展示了一个利用Seam和Hibernate进行持久化的示例,包括如何设计实体类、配置映射关系等内容。 8. **RESTful的Seam应用程序:Blog示例**:通过一个博客系统,演示...

    seam一些基本功能的实现方法

    在数据管理方面,Seam集成了Hibernate,提供了一种简单的方式来操作数据库。使用Seam的`@Entity`和`@PersistenceContext`注解,开发者可以直接在组件中进行CRUD(创建、读取、更新、删除)操作,而无需编写大量的DAO...

    使用 Maven 管理 Seam 项目

    本篇文章将深入探讨如何使用Maven来管理Seam项目,一个基于Java EE的轻量级框架,专为富互联网应用程序(RIA)设计。 Seam项目是一个集成框架,它将JSF、EJB、CDI、JPA等Java EE技术紧密融合,提供了丰富的功能和...

    jboss seam 2.01GA REF DOC

    本节通过一个酒店预订系统示例展示了如何使用 Seam 和 Hibernate 开发应用。 **1.8.1 简介** - **应用场景**:酒店预订系统是一个典型的企业级应用案例。 - **功能需求**:包括用户管理、房间预订、支付等功能。 ...

    seam参考手册中文版

    - **Hibernate预订系统**: 通过结合Seam与Hibernate ORM框架,展示了如何处理持久化操作。 - **Blog示例**: 提供了一个RESTful风格的Seam应用案例,适用于现代Web应用开发。 - **JSF1.2 RI环境下运行Seam**: 介绍...

    Seam security

    6. 安全需求:Seam Security的设计目标是让设置变得简单,易于管理,并确保应用程序不会因为安全性扩展而变得过于复杂,即应用程序不应该因安全需求而超出预期的规模。 7. 无前提条件:Seam安全框架将安全性作为...

    为Seam做好准备

    Seam与EJB3.0的轻量级版本集成良好,理解EJB的角色和使用场景对Seam的使用有帮助。 5. **Seam框架结构**:Seam框架包含了多个模块,如Seam Core、Seam Faces、Seam Security等,了解这些模块的功能和它们之间的关系...

    jboss seam 教程

    ##### 2.8 使用Seam与Hibernate:酒店预订示例 - **介绍**:该示例演示了如何在Seam应用中集成Hibernate ORM框架,实现数据库的持久化操作。 ##### 2.9 RESTful风格的Seam应用:博客系统 - **拉取式MVC**:介绍了...

Global site tag (gtag.js) - Google Analytics