`
liudong19870227
  • 浏览: 31860 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JPA+Spring之HelloWorld

    博客分类:
  • JPA
阅读更多

第一步:新建一个web项目,导入相关的Jar文件(需要导入commans-logging.jar);

第二步:在src下新建META-INF/persistance.xml;

第三步:编写实体类Person.java;

第四步:编写Dao接口PersonDao.java和实现类PersonDaoImpl.java;

第五步:编写applicationContext.xml:

第六步:编写测试类

 

persistence.xml代码:

 

<?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="MySQLProduction" transaction-type="RESOURCE_LOCAL">
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />

			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
			<property name="hibernate.connection.username" value="root" />
			<property name="hibernate.connection.password" value="root" />
			<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mydb" />
			<property name="hibernate.max_fetch_depth" value="5" />
			<property name="hibernate.jdbc.fetch_size" value="20" />
			<property name="hibernate.jdbc.batch_size" value="10" />

			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="false" />
		</properties>
	</persistence-unit>
</persistence>
 

 applicationContext.xml代码:

 

<?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: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:component-scan base-package="*"></context:component-scan>
	
	<bean id="entityManagerFactory"
		class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
		<property name="persistenceUnitName" value="MySQLProduction"/>
	</bean>

	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactory" />
	</bean>
	<tx:annotation-driven transaction-manager="transactionManager" />
	
	<bean id="personDao" class="dao.PersonDaoImpl">
		<property name="entityManagerFactory" ref="entityManagerFactory"/>
	</bean>
	
	<bean id="personDaoByAnno" class="dao.PersonDaoImpl1"/>
</beans>
 

 Person.java代码:

 

package domain;

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="person")
public class Person {
	private Integer id;
	private String name;
	
	public Person(String name) {
		super();
		this.name = name;
	}
	public Person() {
		super();
	}
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	@Column(name="name")
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	
}

  PersonDao.java代码:

 

package dao;

import domain.Person;

public interface PersonDao {
	void save(Person person) throws Exception;
}

  PersonDaoImpl.java代码:

 

package dao;

import org.springframework.orm.jpa.support.JpaDaoSupport;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import domain.Person;

public class PersonDaoImpl extends JpaDaoSupport implements PersonDao {

	@Transactional(readOnly=false,propagation=Propagation.REQUIRED)
	public void save(Person person) throws Exception {
		getJpaTemplate().persist(person);
	}

}

实现类如果用标注还可以这样写:

 

package dao;

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 domain.Person;
@Repository(value="personDaoByAnno")
public class PersonDaoImpl1 implements PersonDao {

	private EntityManager em;
	
	@PersistenceContext(unitName="MySQLProduction")
	public void setEm(EntityManager em) {
		this.em = em;
	}

	@Transactional(readOnly=false,propagation=Propagation.REQUIRED)
	public void save(Person person) throws Exception {
		em.persist(person);
	}
	
}
 

测试类代码:

 

package test;

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

import dao.PersonDao;
import domain.Person;

public class PersonTest {
	@Test
	public void save() throws Exception{
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		//PersonDao dao = (PersonDao) ac.getBean("personDao");
		PersonDao dao = (PersonDao) ac.getBean("personDaoByAnno");
		dao.save(new Person("Hello World"));
	}
}

  注意:事务默认是不提交的,如果spring不对事务处理,运行没有问题,但数据库中没有值!

 

分享到:
评论

相关推荐

    Spring4 HelloWorld

    Spring框架是Java开发中广泛使用的轻量级框架,它以其依赖...学习和理解"Spring4 HelloWorld",不仅能够帮助初学者掌握Spring的基本用法,也为进一步深入学习Spring的其他高级特性,如AOP、MVC、JPA等打下坚实基础。

    演示EJB3.0 + JPA + MySQL5.0 + C3P0连接池技术实战编程(Top-Down的XP开发方式)

    如果运行一切正常,那么你会看到使用EJB 3.0组件与JPA技术层技术完成的Hello world演示应用。 注意:配置JBoss服务器和调试的动作参见readme.txt文档,有详细说明怎样匹配连接池,以及可能遇到的问题及解决办法。该...

    spring-data-jpa初步开始的helloworld

    NULL 博文链接:https://lihao312.iteye.com/blog/2075659

    JPA连接MySql搭建HelloWorld示例代码

    **JPA连接MySQL搭建HelloWorld示例代码** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它提供了一种面向对象的方式来操作数据库,使得开发人员可以使用Java对象而...

    Spring之HelloWorld

    本篇文章将深入探讨“Spring之HelloWorld”,通过一个简单的示例介绍如何使用Spring框架构建应用程序。首先,我们来看一下Spring的核心概念。 Spring是一个开源的Java平台,它为构建基于Java的企业级应用提供了全面...

    springBoot+springjpa.docx

    ${greeting}"&gt;Hello World! ``` ##### 3. 返回模板视图 修改之前的 `QuickStartController` 类以返回视图: ```java import org.springframework.stereotype.Controller; import org.springframework.ui.Model...

    SpringData-1 概述与HelloWorld

    3. **SpringData JPA的HelloWorld实现步骤** - 创建`pom.xml`文件,引入SpringBoot和SpringData JPA依赖。 - 定义`User`实体类,使用`@Entity`注解,并添加属性如`id`, `name`, `email`等。 - 创建`...

    java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程

    &lt;result&gt;/helloWorld.jsp ``` **2. web.xml**: - 配置Struts2的过滤器。 - 示例配置: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter....

    Spring Data JPA 笔记

    至于压缩包中的“helloworld”文件,可能是一个简单的示例项目,通常会包含一个基础的Spring Data JPA配置,一个实体类,以及对应的Repository接口,用于展示Spring Data JPA的基本用法。通过查看这个例子,你可以更...

    SpringMVC+Hibernate+Spring

    7. **测试**:运行项目,测试HelloWorld和登录功能,确保所有组件正常工作。 这个示例中的"SH"可能代表Spring和Hibernate的整合,具体实现可能包括"SH-config.xml"(Spring配置文件)、"SH-hibernate.cfg.xml"...

    spring-boot-helloworld

    【Spring Boot HelloWorld】项目概述 Spring Boot是由Pivotal团队提供的全新框架,旨在简化Spring应用的初始搭建以及开发过程。它集成了大量的常用第三方库配置,如数据源、JPA、定时任务、缓存、消息、邮件等,...

    Spring boot 示例 官方 Demo

    spring-boot-helloWorld:spring-boot的helloWorld版本 spring-boot-mybaits-annotation:注解版本 spring-boot-mybaits-xml:xml配置版本 spring-boot-mybatis-mulidatasource:springboot+mybatis多数据源最简解决...

    Spring Boot Hello World 入门源代码,直接返回一个http的JSON的输出

    综上所述,"Spring Boot Hello World 入门源代码"演示了如何利用 Spring Boot 快速构建一个返回 JSON 的 Web 服务。这个过程中涉及到的核心概念包括 Spring Boot 框架、RESTful API 设计、HTTP 协议、以及 JSON 数据...

    1. [视频]spring boot起步之Hello World【从零开始学Spring Boot】

    在本节中,我们将深入探讨"Spring Boot起步之Hello World"这一主题,这是学习Spring Boot框架的典型入门教程。Spring Boot是由Pivotal团队开发的一个框架,它旨在简化Spring应用程序的初始搭建以及开发过程,通过...

    Spring3MVC-REST-HelloWorld 实例简单代码

    Spring3MVC-REST-HelloWorld 是一个基础的示例,用于展示如何在Spring框架的MVC模块中实现RESTful Web服务。这个实例是初学者理解Spring MVC与REST结合使用的理想起点。REST(Representational State Transfer)是一...

    HelloWorld.zip

    【HelloWorld.zip】是一个入门级的Spring开发项目压缩包,其中包含了使用JavaSpring框架构建的基础应用。这个项目旨在帮助初学者理解Spring的核心概念,并提供了一个实际的代码示例。使用JDK版本为12,意味着它遵循...

    Maven3+JBPM4.4+mysql helloworld例子

    本示例主要介绍如何使用Maven3与JBPM4.4集成,并在MySQL数据库环境下实现一个简单的 HelloWorld 应用。JBPM(Java Business Process Management)是一个开源的工作流和业务流程管理系统,它提供了完整的BPM解决方案...

    Spring Boot Examples

    spring-boot-helloWorld:spring-boot的helloWorld版本 spring-boot-mybaits-annotation:注解版本 spring-boot-mybaits-xml:xml配置版本 spring-boot-mybatis-mulidatasource:springboot+mybatis多数据源最简...

    SpringMVC HelloWorld程序

    7. **运行并测试**:启动Tomcat服务器,通过浏览器访问`http://localhost:8080/HelloWorld/hello`(假设你的请求映射为"/hello"),如果一切配置正确,你应该能看到“Hello World”显示在页面上。 通过这个简单的...

    JavaEE开发的颠覆者+Spring+Boot实战前三章源码

    3. **Hello World示例**:通过编写一个简单的Controller,返回"Hello World",理解Spring MVC的工作原理。 4. **Maven/Gradle构建**:学习如何使用Maven或Gradle构建Spring Boot项目,添加起步依赖,管理项目依赖。...

Global site tag (gtag.js) - Google Analytics