`
tangshd
  • 浏览: 3801 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

EJB2.1集成HIBERNATE3.2

阅读更多

公司一个老的系统, 基于EJB2.1开发,容器是jboss4.01, 事务管理使用JDBC, 就是再一SLSB里把获得connection传递到每个DAO中.如下:

 try{
      conn = DBManager.getConnection();
      XXXDao dao1 = new XXXDao (conn);
      rtnSet = (DataSet)dao1 .getDetailList(condSet,SUI); 
      YYYYDao dao2 = new YYYYDao (conn);
      dao.insert(dataSet01);

  
     conn.commit():
} catch(Exception ex){
     conn.rollback():
}

近日, 系统加入了hibernate3.2, 对其持久层进行重构了一下,动手之前,分析一下:

如果再EJB2.1中使用hibernate, 我们就要使用JTA事务, 当然事务的管理有sessionbean来控制,  EJB中有CMT, BMT两种事务管理方式, CMT当然是最方便的,只是配置一下,就可以使用了, 只是再老的系统中sessionbean的配置文件都是:

<transaction-type>Bean</transaction-type>

为了不更改以前的代码, 我们这里选择BMT.

1. 先下载所需的开发包, hibernate3 所需的基本包, 还有ejb3-persistence.jar放到类路径,引用路径,配置好开发环境.

2.接下来配置: hibernate.cfg.xml, 其他配置参照说明, 重点是下面的配置:

<!-- BMT / JTA  Transaction JBoss-->
<property name="connection.autocommit">true</property>
<property name="transaction.manager_lookup_class">
	org.hibernate.transaction.JBossTransactionManagerLookup
</property>	
<property name="transaction.factory_class">
	org.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
		

 3. 配置好了以后,  创建HibernateUtil

private static SessionFactory factory;
	static {
		try {
			// 读取注解
			Configuration cfg = new AnnotationConfiguration().configure("hibernate.cfg.xml");			
			factory = cfg.buildSessionFactory();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 4. 引用泛型DAO接口(IDAO)还有hibernate实现(DAOHibernate),这里不多说, 论坛有很多详细介绍.

 5. 再SLSB中获得JTA事务, 因为我们使用的是BMT, 所以使用UserTransaction 来启动,结束JTA事务:

  

UserTransaction utx = this.sessionContext.getUserTransaction();

  6. 再sessionbean的方法中使用如下:

try{
    utx.begin();

    //老系统中以前的dao测试
    conn = DBManager.getConnection();
    fidao = new FundInDaoImpl(conn);
    ds = (DataSet) fidao.getCustomerInfo(compnayCode, customerName);
    log.info(ds.getDataRowCnt());

  //利用hibernate实现对某个数据库的数据访问操作
  UserDAO udao = new UserDAOImpl();
  User user = new User();
  user.setId((long)1);
  user.setUserAge(100);
  user.setUserName("test9");
  udao.save(user);

   //一个测试的DAO, 跨类的
   UserDaoOne done = new UserDaoOne();
   done.delete();

   utx.commit():
}catch(Exception ex){
     utx.rollback();
}

 OK, 搞定, 这样我们既兼顾了以前的实现, 新的模块也可以使用hibernate来持久, 经过了一些测试, 不知道这样的配置再以后的过程中是否会出现问题.

接下来,想把EJB3和EJB2放在一个容器中, 不知道是否可以支持, 喜欢注解带来的方便, 然后一步步的把事务改成CMT.

 

分享到:
评论

相关推荐

    hibernate帮助文档 3.2、3.6、4.1

    它还提供了对EJB 3.0的集成,允许开发者更方便地在企业级Java应用中使用Hibernate。此版本还增强了对复杂查询的支持,例如支持HQL(Hibernate Query Language)和 Criteria API。 2. Hibernate 3.6.10: Hibernate...

    Struts2.1+Spring2.5+Hibernate3.2框架

    ### Struts2.1+Spring2.5+Hibernate3.2框架详解 #### Spring Framework 概述 **Spring** 是一款轻量级的开源框架,主要用于简化企业级应用的开发。Spring 主要有以下特点: - **轻量级**: Spring 的核心特性使其...

    JSF基于EJB Hibernate Spring整合开发与项目

    ### JSF基于EJB Hibernate Spring整合开发与项目 #### 一、JSF基础知识 ##### 1.1 了解JSF JavaServer Faces (JSF) 是一个用于构建基于Web的应用程序的标准Java EE技术。它提供了丰富的组件库以及一套声明式的...

    struts2.3.2_spring3.2_hibernate_4.1整合

    4. 集成Hibernate:在Spring配置中设置SessionFactory,并配置DAO接口及其实现类,使用@Autowired进行依赖注入。 5. 配置Struts2与Spring的整合:使用Struts2-Spring插件,使得Action可以自动通过Spring管理,实现...

    Struts,Hibernate,Spring集成开发宝典.pdf

    #### 2.1 Hibernate简介 Hibernate是一个开放源代码的ORM(Object-Relational Mapping)框架,它为Java应用程序提供了一种持久化机制,能够自动将对象的状态转换为数据库中的记录,极大地提高了开发效率。 #### 2.2...

    Hibernate Annotations 中文文档

    Hibernate Annotations API 中文文档 前言 1. 创建一个注解项目 1.1. 系统需求 1.2. 系统配置 ...5. Hibernate与Lucene集成 5.1. 使用Lucene为实体建立索引 5.1.1. 注解领域模型 5.1.2. 启用自动索引

    hibernate annotation 中文文档

    EJB3 注解是 Hibernate 用来标注实体Bean的一种标准方式,它允许开发者直接在实体Bean类上添加注解来定义映射规则。 - **2.2.1 声明实体Bean** - **2.2.1.1 定义表(Table)**:使用 `@Table` 注解来指定实体Bean所...

    hibernate教程

    ##### 3.2 用EJB3注解进行映射 - **声明实体bean**: - 使用`@Entity`注解标记类为实体。 - 使用`@Table(name = "tableName")`指定对应的数据库表名。 - **映射简单属性**: - 基本的属性映射:使用`@Column`...

    Jsf+Spring+Hibernate开发框架技术白皮书

    JSH框架对比其他开发体系,如Struts+Hibernate或EJB,具有更好的性能、更高的灵活性和更低的学习曲线。 ### 2.3 新开发框架的部署 部署JSH框架涉及环境配置、应用服务器集成、数据库连接等步骤,具体过程应在详细的...

    hibernate-annotations_中文帮助文档

    ##### 3.2 用 EJB3 注解进行映射 - **声明实体 Bean**:使用 `@Entity` 注解来声明一个实体类。 - **定义表**:使用 `@Table` 注解指定数据库表名。 - **乐观锁定版本控制**:使用 `@Version` 注解来实现版本控制...

    Hibernate Annotation Reference

    标题:Hibernate ...总结而言,Hibernate注解提供了强大的工具集,用于高效地映射实体、定义查询、实施数据验证以及集成全文搜索功能。深入理解和灵活运用这些注解,对于构建高性能、可维护的Java持久层至关重要。

    J2EE电子商务系统开发从入门到精通基于Struts和Hibernate技术实现

    - **3.2.3 Hibernate与Struts**:介绍如何在Struts应用中集成Hibernate进行数据持久化操作。 - **3.3 配置文件** - **3.3.1 基本配置**:设置Hibernate的基本配置,如数据库连接信息等。 - **3.3.2 连接池配置**...

    J2EE电子商务系统开发从入门到精通--基于Struts和Hibernate技术实现

    - 类似于Struts,Hibernate也可以与大多数IDE集成,提高开发效率。 **3.2 体系结构** - **3.2.1 Hibernate架构** - Hibernate框架的核心组件包括Session、SessionFactory、Transaction、Query等。 - **3.2.2 ...

    J2EE电子商务系统从入门到精通--基于Struts和Hibernate技术实现.

    - **3.1.2 Hibernate与IDE集成**:这部分介绍了如何在IDE(如Eclipse)中配置Hibernate开发环境。 - **3.2 体系结构** - **3.2.1 Hibernate架构**:这部分概述了Hibernate的总体架构,包括其核心组件和它们之间的...

    Spring in Action(第2版)中文版

    5.4在spring里集成hibernate 5.4.1选择hibernate的版本 5.4.2使用hibernate模板 5.4.3建立基于hibernate的dao 5.4.4使用hibernate3上下文会话 5.5spring和java持久api 5.5.1使用jpa模板 5.5.2创建一个实体...

Global site tag (gtag.js) - Google Analytics