`
LaxLee
  • 浏览: 4634 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring+jpa实现简单的CRUD

阅读更多
我练习的步骤是先为项目添加jpa的支持 然后在添加spring  呵呵 刚开始学 怕出错。。。
我的实体Bean
package com.lee.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "person")
public class Person implements Serializable{


private static final long serialVersionUID = 7133047436636257323L;
private Integer id;
private String name;
private Date birthday;
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length = 25,nullable = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}



}
在来就是dao接口
package com.lee.dao;

import java.util.List;

import com.lee.entity.Person;

public interface PersonDao {
/**
* 对Person的持久化
* @param person
*/
public void save(Person person);
/**
* spring的依赖注入的测试方法
*/
public void say();
/**
* 通过id获取一条person记录
* @param id
* @return
*/
public Person get(Integer id);
/**
* 更新一条记录
* @param person
*/
public void update(Person person);
/**
* 获取所有的person记录
* @return
*/
public List<Person> getAll();
/**
* 通过id删除一条记录
* @param id
*/
public void delete(Integer id);
}
还有就是dao的实现类。。。(这大家都了解的 我就不赘言了。。。。)
package com.lee.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.lee.dao.PersonDao;
import com.lee.entity.Person;
@Repository("dao")
@Transactional
public class PersonDaoImpl implements PersonDao{

@PersistenceContext
private EntityManager entityManagerFactory;


public void setEntityManagerFactory(EntityManager entityManagerFactory) {
this.entityManagerFactory = entityManagerFactory;
}

@Override
public void save(Person person) {
if(entityManagerFactory == null)
System.out.println("em is null");
entityManagerFactory.persist(person);
}
public void say(){
System.out.println("wo xiang shuo");
}

@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public Person get(Integer id) {

return entityManagerFactory.find(Person.class, id);
}

@Override
public void update(Person person) {
entityManagerFactory.merge(person);

}

@SuppressWarnings("unchecked")
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public List<Person> getAll() {
// TODO Auto-generated method stub
return entityManagerFactory.createQuery("select p from Person p").getResultList();
}

@Override
public void delete(Integer id) {
entityManagerFactory.remove(get(id));

}
}
嗯 还有什么呢。。。。那就是jpa的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
   
<persistence-unit name="lee" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
  <properties>
<property name = "hibernate.connection.driver_class" value = "com.mysql.jdbc.Driver"/>
<property name = "hibernate.connection.url" value = "jdbc:mysql://localhost:3306/test"/>
<property name = "hibernate.connection.username" value = "root"/>
<property name = "hibernate.connection.password" value = "123456"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
  </properties>
</persistence-unit>
 
</persistence>
再来就是spring的配置文件了  就是这个文件搞的我很是头疼。。。我用的方式是完全注解的模式。。。。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd ">
<context:annotation-config />
<context:component-scan base-package="com.lee" />
<tx:annotation-driven />

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="lee" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!--<bean id="personDao" class="com.lee.dao.impl.PersonDaoImpl">
</bean>
--><tx:annotation-driven transaction-manager="transactionManager" />
</beans>
开始测试了
package com.lee.test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lee.dao.PersonDao;
import com.lee.entity.Person;


public class JunitTest {

/**
* 这是测试JPA的
*/
@Test
public void test(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("lee");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Person person = new Person();
person.setName("ssss");
person.setBirthday(new Date());
em.persist(person);
em.getTransaction().commit();
em.close();
factory.close();
}
@Test
public void testSpring(){
ApplicationContext ac =new ClassPathXmlApplicationContext("beans.xml");
PersonDao pd = (PersonDao) ac.getBean("dao");
System.out.println(pd.toString());
Person person = new Person();
person.setName("nnnnnnn");
person.setBirthday(new Date());
pd.save(person);
//pd.say();
}
@Test
public void get(){
ApplicationContext ac =new ClassPathXmlApplicationContext("beans.xml");
PersonDao pd = (PersonDao) ac.getBean("dao");
Person person = pd.get(2);
System.out.println(person.getName());
}
@Test
public void update(){
ApplicationContext ac =new ClassPathXmlApplicationContext("beans.xml");
PersonDao pd = (PersonDao) ac.getBean("dao");
Person person = pd.get(2);
person.setName("wo kao");
pd.update(person);
Person person2 = pd.get(2);
System.out.println(person2.getName());

}
@Test
public void findAll(){
ApplicationContext ac =new ClassPathXmlApplicationContext("beans.xml");
PersonDao pd = (PersonDao) ac.getBean("dao");
List<Person> persons = new ArrayList<Person>();
persons = pd.getAll();
for (Person person : persons) {
System.out.println(person.getName());
}
}
@Test
public void delete(){
ApplicationContext ac =new ClassPathXmlApplicationContext("beans.xml");
PersonDao pd = (PersonDao) ac.getBean("dao");
pd.delete(3);
System.out.println(pd.getAll().size());
}
}
因为是练习项目 我对他就没有优化 你如果嫌太长可以优化一下测试类。。。。
0
0
分享到:
评论

相关推荐

    SpringBoot+JPA+MySQL+Swagger+Redis实现CRUD

    在本项目中,我们利用了SpringBoot框架,联合JPA(Java Persistence API)与MySQL数据库,以及Swagger和Redis,来构建一个完整的CRUD(Create、Read、Update、Delete)应用程序。下面将详细介绍这些技术及其在项目中...

    基于_Struts_2+Spring+JPA_框架的WEB_应用

    - **业务逻辑处理**:在Action类中,我们可以通过Spring的@Autowired注解注入Service层的bean,这些bean通常包含JPA的EntityManager,用于执行CRUD操作。 - **持久化操作**:在Service层,我们可以使用JPA的...

    Spring+Spring Boot+JPA+Thymeleaf+Bootstrap+Mysql实现的一个单表crud

    4. **Repository接口**:基于Spring Data JPA,定义CRUD操作的接口,无需编写具体的SQL。 5. **Service层**:实现业务逻辑,调用Repository接口进行数据操作。 6. **Controller层**:处理HTTP请求,与Service层交互...

    springboot+jpa+thymeleaf实现简单增删改查

    在本教程中,我们将深入探讨如何使用Spring Boot、JPA(Java Persistence API)以及Thymeleaf模板引擎实现一个简单的数据库操作,包括增删改查(CRUD)。Spring Boot简化了Java应用程序的开发过程,而JPA是Java平台...

    Spring+Struts2+JPA

    **Spring+Struts2+JPA 整合...这个入门小例子可以帮助初学者理解如何将这三大框架集成在一起,实现一个简单的CRUD应用,从而加深对Java Web开发的理解。通过学习和实践,你可以逐步掌握如何在实际项目中运用这些技术。

    struts1+spring+JPA+jstl的CRUD操作,包含分页

    这个项目是基于"struts1+spring+JPA+jstl"的整合,实现了基础的CRUD(创建、读取、更新、删除)操作,并且包含了分页功能。以下是这些技术的详细说明: 1. **Struts1**:Struts1是一个开源的MVC(Model-View-...

    手动创建 SpringMvc +SpringDataJpa+Hibernate+ freemarker mavenProject+ 环境切换 webDemo

    通过Spring Data JPA,我们可以直接通过接口定义来实现对数据库的CRUD操作,无需编写大量的DAO层代码。只需提供一个继承自JpaRepository的接口,即可自动实现基本的查询方法。此外,Spring Data JPA还支持自定义查询...

    Struts+spring+JPA例子

    项目运行后,你可以通过Struts2的配置来访问不同的功能,Spring会管理所有bean的生命周期和依赖,而JPA则负责数据库的CRUD操作。这将帮助你理解这三个框架如何协作,以及如何在实际项目中应用它们。 总的来说,这个...

    Struts+Spring+Jpa(hibernate)整合

    "Struts+Spring+Jpa(hibernate)整合"这个主题意味着我们要将这三个框架进行集成,以实现更强大的功能。在实际项目中,这种整合能够帮助开发者更好地管理业务逻辑、持久化数据以及处理用户请求。 1. **Struts**:...

    spring struct + jpa

    在一个简单的Spring Structs + JPA应用中,你可以创建一个用户管理的RESTful API。首先定义User实体,然后创建一个UserRepository接口,继承自Spring Data JPA提供的JpaRepository。在控制器中注入UserRepository,...

    spring+springmvc+jpa零配置注解开发

    通过在接口上使用JpaRepository或CrudRepository注解,Spring会自动生成实现这些接口的类,包含基本的CRUD(创建、读取、更新和删除)操作。同时,我们还可以使用@Entity、@Table、@Id等注解来定义实体类和映射关系...

    SpringMvc+Spring+JPA+Hibernate实现的增删改查.zip

    总结来说,这个项目实例演示了如何在Java Web开发中集成Spring MVC、Spring、JPA和Hibernate,实现对数据库的CRUD操作,并且展示了在两种主流IDE环境下搭建和运行此类项目的流程。这样的例子对于学习和理解这些技术...

    JSF+Spring+JPA_Hibernate实现_的环境搭建

    最后,**Hibernate** 是一个流行的JPA实现,它提供了丰富的功能,包括缓存、查询语言(HQL)和二级缓存等。Hibernate使得开发者可以更专注于业务逻辑,而不是底层的SQL操作。 在环境搭建过程中,你需要: 1. **安装...

    SpringBoot+JPA

    SpringDataJPA是Spring Data项目的一部分,它提供了对JPA的高级支持,包括查询方法的自动声明、动态查询生成等,使得数据库操作更加简单。 4. **集成步骤** - 添加依赖:在`pom.xml`或`build.gradle`中引入...

    CRM营销系统 spring+springmvc+springdatajpa+jsp+maven

    在CRM系统中,SpringDataJPA可能被用来与MySQL数据库进行交互,自动执行CRUD操作,如查询客户信息、创建新的客户记录、更新现有记录或删除不再需要的数据。 4. JSP(JavaServer Pages):JSP是Java的一种动态网页...

    Spring+Spring MVC+SpringData JPA整合完成增删改查,翻页实例.zip

    Spring Data JPA进一步抽象了JPA,提供了一种声明式的方式来执行CRUD(创建、读取、更新、删除)操作,以及复杂的查询。通过定义Repository接口,Spring Data JPA可以自动生成实现,大大减少了手动编写DAO层代码的...

    Springboot+JPA实现分页+crud

    本篇将详细介绍如何使用Spring Boot结合Spring Data JPA实现分页和CRUD(Create、Read、Update、Delete)操作。 首先,我们需要在项目中引入Spring Data JPA的依赖。在`pom.xml`文件中添加如下Maven依赖: ```xml ...

    spring+jpa+atomikos多数据源

    在1.1版本及以上,JPA提供了丰富的API和查询语言(JPQL),方便对数据库进行CRUD(创建、读取、更新、删除)操作,同时与Spring框架结合使用时,可以实现更加灵活的数据访问。 Atomikos是开源的事务处理服务提供商...

    Struts2+Spring+JPA实例

    在实际操作中,首先需要添加相应的依赖库,包括Struts2、Spring、Hibernate(JPA的实现)以及其他必要的库。在项目结构中,可能有一个名为"testJpa"的目录,这可能是存放测试用例或者示例代码的地方,通常包含Action...

Global site tag (gtag.js) - Google Analytics