科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用基于持久性的框架开发DB2应用程序

使用基于持久性的框架开发DB2应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java Data Object(JDO) API 是标准、基于接口的持久性 Java 模型抽象,可以直接把 Java 域模型实例保存到数据存储。JDO 是作为 Java Specification Request 的一部分开发的。

作者:Naveen Balani 来源:论坛整理 2007年11月17日

关键字: DB2

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

织入 DAO 层

  数据源和会话工厂设置好后,下一步是在织入 DAO(本例中为 DepartmentDAO)以便使用 SessionFactory。接下来,插入 Spring 的 TransactionProxyFactoryBean,它将拦截对应用程序的 DepartmāentDAOImpl 对象的方法调用,并声明式地在上面应用事务上下文。

  在这个示例中,DepartmentDAOImpl 类的 addDepartment 方法作为事务的一部分执行,带有事务属性 PROPAGATION_REQUIRED。这个属性相当于 EJB 容器的 TX_REQUIRED。如果希望让方法总是在事务中运行,可以使用 PROPAGATION_REQUIRED。如果事务已运行,bean 方法会加入这个事务,或者 Spring 轻量级事务管理器会另行启动一个事务。如果想在调用组件服务时总是启动新事务,可以使用 PROPAGATION_REQUIRES_NEW 属性。

  清单 3. 编织应用程序的 DAO 和 TransactionManager

<!-- Pass the session factory to our DepartmentDAO -->

<bean id="departmentDAOHelper"
class="springexample.db2persist.hibernate.DepartmentDAOHelper">
<property name="departmentDAO"><ref local="departmentDAOTarget"/></property>
</bean>

<bean id="departmentDAO"
class="springexample.db2persist.hibernate.DepartmentDAOImpl">
<property name="sessionFactory"><ref local="exampleSessionFactory"/></property>
</bean>

<bean id="transactionManager"
class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory"><ref bean="exampleSessionFactory"/></property>
</bean>

<bean id="departmentDAOTarget"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"><ref local="transactionManager"/></property>
<property name="target"><ref local="departmentDAO"/></property>
<property name="transactionAttributes">
<props>
<prop key="addDepartment">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>

  有了这个之后,应用程序的织入就完成了。我们来看源代码。

  分析源代码

  如果您还没有下载文章的源代码 (DB2SpringHB.zip),请从 下载 部分中下载。把源 zip 文件释放到桌面的任意位置,例如 c:\。会创建叫做 DB2SpringHB 的文件夹。src\spring 文件夹包含示例应用程序的 Hibernate 映射文件和 Spring 配置文件。src\springexample\db2persist\hibernate 文件包含应用程序的源代码。

  在这里会找到两个类,名称分别为 Department 和 Employee,它们用 Hibernate 的映射文件 Department.hbm.xml 和 Employee.hbm.xml 映射到两个表。Department 类代表部门信息,Employee 类代表与部门相关的员工信息。前面已经提到过,我们用 1: N 关系为这两个类建模,其中一个 Department 包含多个 Employee。 清单 4 显示了 Department 对象的 Hibernate 映射文件。

  清单 4. Department 对象的 Hibernate 映射文件

<?xml version="1.0"?> 
       
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> 

<hibernate-mapping> 
    <class 
        name="springexample.db2persist.hibernate.Department" 
        table="TBL_DEPARTMENT" 
        dynamic-update="false" 
        dynamic-insert="false"> 

        <id 
            name="id" 
            column="DEPARTMENT_ID" 
            type="java.lang.Long" 
            unsaved-value="-1" 
        > 
            <generator class="native"> 
            </generator> 
        </id> 

    
        <set name ="employees" 

             inverse = "true" 
              outer-join="auto" 

              cascade="all-delete-orphan"> 

             <key column ="EMPLOYEE_ID"/> 

             <one-to-many class="springexample.db2persist.hibernate.Employee"/> 
    

 </set> 
     
        <property 
            name="name" 
            type="string" 
            update="false" 
            insert="true" 
            column="DEPARTMENT_NAME" 
            length="60" 
            not-null="true" 
            
        /> 

      
    </class> 
     
</hibernate-mapping> 

  set name="employees" 和一对多类标记表示 Department 和 Employee 之间的关系。generator class="native" 表示 Hibernate 将使用 DB2 自己的标识值生成方法生成主键。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章