复习步骤32-整合框架(3)整合JPA

eclipse 如何导入已经存在的maven项目--对比导入已经存在的java项目

  1.1和导入普通java项目一样,import进入如下界面,不过要选择Maven下的Existing Maven

Projects

 

 1.2 next 之后,设置好,finish即可

然后可能会报错,没关系,将这个项目的JDK等环境弄成自己的,然后将maven,clean,insatll,test之后就可以了(如果clean后有错没关系,可能是没有jar包,直接insatll后就好了)

整合JPA 步骤

1.在如下目录的 persistence.xml  中配置

  <persistence-unit name="myJpaUnit">

        <provider>org.hibernate.ejb.HibernatePersistence</provider>

    </persistence-unit>

 如下图

2. 在 applicationContext.xml 中

 

    <!-- 配置数据源的bean -->

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

        <property name="driverClass" value="com.mysql.jdbc.Driver" />

        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ACT" />

        <property name="user" value="SSS" />

        <property name="password" value="SSSS" />

    </bean>

 

    <!-- 配置事务管理器 -->

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">

        <property name="entityManagerFactory" ref="entityManagerFactory"/>

    </bean>

 

    <!-- 配置实体管理工厂 -->

    <bean id="entityManagerFactory"

        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

        <property name="dataSource" ref="dataSource" />

    </bean>

 

 

    <!-- Activitibean -->

    <!-- 流程引擎的配置bean 时注入实体管理工厂  entityManagerFactory-->

    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

        <property name="dataSource" ref="dataSource" />

        <property name="databaseSchemaUpdate" value="true" />

        <property name="transactionManager" ref="transactionManager" />

        <property name="jpaEntityManagerFactory" ref="entityManagerFactory" />

        <property name="jpaHandleTransaction" value="false" />

        <property name="jpaCloseEntityManager" value="false" />

    </bean>

 

2. 在 dao层中使用 private EntityManager entityManager; 进行与数据库的操作CRUD,相当于hibernatesessionFactory获取的session,不过注意要用@PersistenceContext 进行注入,如下

package org.crazyit.act.aw.dao.impl;

 

import java.util.ArrayList;

import java.util.List;

 

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

 

import org.crazyit.act.aw.dao.PersonDao;

import org.crazyit.act.aw.entity.Person;

 

public class PersonDaoImpl implements PersonDao {

 

    @PersistenceContext

    private EntityManager entityManager;

 

    public List<Person> list() {

       //from Person PersonJAVA类,对应数据库表示MY_PERSON,有点HQL的意思

        return entityManager.createQuery("from Person").getResultList();

    }

 

}

 

3.类与表的一对一映射不再采用     使用hibernate或mybatis的xml文件,如hibernate的Person.hbm.xml,而是直接在实例类Person.java中用注解完成类与表的一对一映射,如下

package org.crazyit.act.aw.entity;

 

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

 

@Entity

@Table(name = "MY_PERSON")

public class Person {

 

    @Id

    @GeneratedValue(strategy=GenerationType.IDENTITY)

    private Integer id;

   

    //和hibernate映射一样,如果表和类 ,类属性和表列名不一致,jpa需要在@Column 用name注明表列名称

    @Column(name = "PERSON_NAME")

    private String name;

 

    public Integer getId() {

        return id;

    }

 

    public void setId(Integer id) {

        this.id = id;

    }

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

   

}

 

 

项目结构

 

测试方法:

package org.crazyit.act.aw.action;

 

import java.util.List;

 

import org.activiti.engine.TaskService;

import org.crazyit.act.aw.entity.Person;

import org.crazyit.act.aw.service.PersonService;

 

import com.opensymphony.xwork2.Action;

 

/**

 * @author lqx

 *  文件在 E:\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤32-整合框架(3)整合JPA

  或 我的网盘\我的笔记\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤32-整合框架(3)整合JPA

 *

 */

public class TestAction implements Action {

 

    private PersonService personService;

 

    private TaskService taskService;

 

    public void setPersonService(PersonService personService) {

        this.personService = personService;

    }

 

    public void setTaskService(TaskService taskService) {

        this.taskService = taskService;

    }

 

    public String execute() throws Exception {

        List<Person> persons = personService.listPersons();

        for (Person p : persons) {

            System.out.println(p.getId());

        }

        System.out.println("===========");

        long taskCount = taskService.createTaskQuery().count();

        System.out.println(taskCount);

        return null;

    }

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值