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
分享到:
相关推荐
Hibernate是Java领域广泛使用的对象关系映射(ORM)工具,它允许开发者用Java对象来操作数据库,消除了传统SQL代码与Java代码之间的耦合。Seam通过提供对Hibernate的无缝集成,使得开发者可以在不脱离Seam上下文的...
Seam和Hibernate是两个在Java开发中非常重要的框架。Seam是一个全面的、集成的Java EE框架,主要用于简化企业级应用的开发,而Hibernate则是一个强大的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库...
Seam、Spring、Hibernate和RichFaces是Java Web开发中的四大框架,它们的集成可以构建功能强大的企业级应用程序。本文将详细解析这四个组件的核心概念、它们如何协同工作以及配置过程。 **Seam框架** Seam是一款...
**JSF、Seam与Hibernate简介** JSF(JavaServer Faces)是Java平台上的一个用于构建用户界面的组件模型框架,它提供了一种声明式的方式来创建动态Web应用程序。JSF的核心概念是组件,这些组件可以组合成用户界面,...
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
【标题】"maven+jetty+seam+hibernate"是一个集成开发环境的配置,主要用于Java Web应用的快速开发。这个组合充分利用了Maven的项目管理和构建能力,Jetty的轻量级服务器特性,Seam的Java EE集成框架,以及Hibernate...
同时,Seam还支持Hibernate,使得对ORM(Object-Relational Mapping)的使用更加灵活。 6. **安全性**:Seam提供了内置的安全机制,如身份验证和授权,使得开发人员能够快速为应用添加安全特性。 7. **国际化与...
Seam作为一个胶水框架,能够很好地整合各种技术栈,如AJAX、Facelet、JSF、EJB3、Hibernate、Hibernate Search、JBPM、Drools、Email、iText、JMS等,为开发者提供了一个完整的开发环境。 通过以上介绍,我们可以...
5. **持久化支持**:讨论Seam对JPA和Hibernate的支持,包括实体管理和事务管理。 6. **安全管理**:学习Seam的认证和授权机制,如使用Security子模块。 7. **事件和回调**:了解Seam事件系统的工作方式,以及如何...
在Seam中启动Hibernate,通常需要在seam.properties或相关的配置文件中设置Hibernate连接参数,以及配置Hibernate SessionFactory。 #### 1.4.2. Bootstrap JPA in Seam 配置JPA时,需在persistence.xml文件中定义...
- **使用“推”风格的MVC**:展示了如何使用 SEAM 的推送机制来更新数据。 #### 三、使用Seam-gen快速启动 - **准备活动**:设置开发环境。 - **建立一个新的Eclipse项目**:通过 Eclipse 创建 SEAM 项目。 - **...
7. **结合Seam和Hibernate的范例:Hibernate系统**:展示了一个利用Seam和Hibernate进行持久化的示例,包括如何设计实体类、配置映射关系等内容。 8. **RESTful的Seam应用程序:Blog示例**:通过一个博客系统,演示...
在数据管理方面,Seam集成了Hibernate,提供了一种简单的方式来操作数据库。使用Seam的`@Entity`和`@PersistenceContext`注解,开发者可以直接在组件中进行CRUD(创建、读取、更新、删除)操作,而无需编写大量的DAO...
本篇文章将深入探讨如何使用Maven来管理Seam项目,一个基于Java EE的轻量级框架,专为富互联网应用程序(RIA)设计。 Seam项目是一个集成框架,它将JSF、EJB、CDI、JPA等Java EE技术紧密融合,提供了丰富的功能和...
本节通过一个酒店预订系统示例展示了如何使用 Seam 和 Hibernate 开发应用。 **1.8.1 简介** - **应用场景**:酒店预订系统是一个典型的企业级应用案例。 - **功能需求**:包括用户管理、房间预订、支付等功能。 ...
- **Hibernate预订系统**: 通过结合Seam与Hibernate ORM框架,展示了如何处理持久化操作。 - **Blog示例**: 提供了一个RESTful风格的Seam应用案例,适用于现代Web应用开发。 - **JSF1.2 RI环境下运行Seam**: 介绍...
6. 安全需求:Seam Security的设计目标是让设置变得简单,易于管理,并确保应用程序不会因为安全性扩展而变得过于复杂,即应用程序不应该因安全需求而超出预期的规模。 7. 无前提条件:Seam安全框架将安全性作为...
Seam与EJB3.0的轻量级版本集成良好,理解EJB的角色和使用场景对Seam的使用有帮助。 5. **Seam框架结构**:Seam框架包含了多个模块,如Seam Core、Seam Faces、Seam Security等,了解这些模块的功能和它们之间的关系...
##### 2.8 使用Seam与Hibernate:酒店预订示例 - **介绍**:该示例演示了如何在Seam应用中集成Hibernate ORM框架,实现数据库的持久化操作。 ##### 2.9 RESTful风格的Seam应用:博客系统 - **拉取式MVC**:介绍了...