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>
<!-- Activiti的bean -->
<!-- 流程引擎的配置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,相当于hibernate的sessionFactory获取的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 Person是JAVA类,对应数据库表示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;
}
}