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
分享到:
相关推荐
该资源介绍了seam 整合hibernate和jsf
NULL 博文链接:https://kenter1643.iteye.com/blog/255159
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
eclipse3.4+tomcat6.0 希望可以帮助大家学习!!
适合初学者练习,里面的功能也不多,只有个添加,查询功能,希望对大家有用。
NULL 博文链接:https://nbaertuo.iteye.com/blog/309257
这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了...
第一部分 从Hibernate和EJB 3.0开始 第1章 理解对象/关系持久化 1.1 什么是持久化 1.1.1 关系数据库 ... 17.5.2 让Seam管理持久化上下文 17.6 小结 附录A SQL基础知识 附录B 映射快速参考
seam_carving代码实现 图像缩放
SeamCarving的C++实现代码,使用opencv库。包含完整项目工程及测试图像,可直接使用
seam in action seam in action seam in action seam in action seam in action seam in action seam in action
Seam 是一种业级 企 Java 的应规用程序框架。它的灵感源自下列原 : 只有一种“工具” Seam为 应 业务业业 义 种统 组 你的 用程序中所有的 定 了一 一的 件模型。 Seam组件可能是 态义 关关 态 有状 的,包含与几...
Seam2.10安全API为你使用Seam开发的应用程序提供了大量与安全认证相关的特性,包含了以下几块: • 安全验证 - 一个可扩展的、基于JAAS的安全验证层,允许用户to authenticate against any security provider • ...
Jboss Seam中文参考手册,通过大量的实例详细介绍seam的使用
JBOSS_SEAM配置
seam资料seam资料seam资料seam资料seam资料seam资料seam资料seam资料
seam级联菜单例子
seam carving的相关代码实现
Spring 2.5中文手册+hibernate手册+Seam_2.0_R中文手册三个手册合集希望对大家有用
JBoss Seam JBoss Seam JBoss Seam