spring整合jpa

1.1.  Spring整合jpa

1.1.1.  新建工程

1.1.2.  引入jar包

1.        所使用hibernat版本:hibernate-release-4.3.7.Final,Lib\jpa目录和lib\required目录下所有的jar包,

2.        mysql驱动包

3.        spring版本spring-framework-4.1.3.RELEASE,libs下所有的jar包

4.        tomcat jdbc连接池 tomcat-jdbc-7.0.53.jar和tomcat-juli-7.0.53.jar

5.        日志包commons-logging-1.1.3.jar

6.        aopalliance-1.0.jar

7.        。。。。。。

1.1.3.  持久化配置文件persistence.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指定持久化单元的名字

transaction-type指定事务类型为本地事务

-->

<persistence-unit
name="jpaDemo"
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/mysql?useUnicode=true&amp;characterEncoding=UTF-8"/>

<property
name="hibernate.hbm2ddl.auto"
value="update"/>

<property
name="hibernate.show_sql"
value="true"/>

</properties>

</persistence-unit>

</persistence>

1.1.4.  实体类Person.xml


Person.xml


package com.morris.entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

@Entity

public class Person {

@Id

@GeneratedValue

private Integer id;

private String name;

private Integer age;

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;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public Person( String name, Integer age) {

super();

this.name = name;

this.age = age;

}

public Person() {

super();

// TODO Auto-generated constructor stub

}

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}

}

1.1.5.  Dao接口


IpersonDao.Java


package com.morris.dao.inter;

import com.morris.entity.Person;

public
interface
IPersonDao {

void save(Person person);

}

1.1.6.  Dao接口具体实现类


PersonDaoImpl.java


package com.morris.dao.impl;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

import javax.transaction.Transactional;

import org.springframework.stereotype.Repository;

import com.morris.dao.inter.IPersonDao;

import com.morris.entity.Person;

@Repository("personDao")

public class PersonDaoImpl implements IPersonDao {

@PersistenceContext

private EntityManager entityManager;

@Transactional

public void save(Person person) {

entityManager.persist(person);

}

}

1.1.7.  Service接口


IpersonService.java


package com.morris.service.inter;

import com.morris.entity.Person;

public
interface
IPersonService {

void save(Person person);

}

1.1.8.  Service接口具体实现类


PersonServiceImpl.java


package com.morris.service.impl;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import com.morris.dao.inter.IPersonDao;

import com.morris.entity.Person;

import com.morris.service.inter.IPersonService;

@Service("personService")

public class PersonServiceImpl implements IPersonService {

@Autowired

private IPersonDao personDao;

public void save(Person person) {

personDao.save(person);

}

}

1.1.9.  Spring配置文件


Spring.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"

xmlns:p="http://www.springframework.org/schema/p"
xmlns:cache="http://www.springframework.org/schema/cache"

xmlns:jpa="http://www.springframework.org/schema/data/jpa"

xsi:schemaLocation="http://www.springframework.org/schema/beans  

          http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  

          http://www.springframework.org/schema/context  

          http://www.springframework.org/schema/context/spring-context-3.1.xsd  

          http://www.springframework.org/schema/aop  

          http://www.springframework.org/schema/aop/spring-aop-3.1.xsd  

          http://www.springframework.org/schema/tx   

          http://www.springframework.org/schema/tx/spring-tx-3.1.xsd

          http://www.springframework.org/schema/cache

          http://www.springframework.org/schema/cache/spring-cache-3.1.xsd

          http://www.springframework.org/schema/data/jpa

          http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

<!-- 数据源 -->

<bean
id="dataSource"
class="org.apache.tomcat.jdbc.pool.DataSource">

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

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

<property
name="username"
value="root"
/>

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

<property
name="initialSize"
value="5"
/>

<property
name="minIdle"
value="5"
/>

<property
name="maxIdle"
value="30"
/>

<property
name="maxActive"
value="100"
/>

<property
name="maxWait"
value="1000"
/>

</bean>

<bean
id="entityManagerFactory"

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

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

<property
name="persistenceXmlLocation"
value="classpath:META-INF/persistence.xml"
/>

<property
name="persistenceUnitName"
value="jpaDemo"
/>

<property
name="jpaVendorAdapter">

<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">

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

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

</bean>

</property>

</bean>

<!-- 定义扫描根路径,不使用默认的扫描方式 -->

<context:component-scan
base-package="com.morris"

use-default-filters="false">

<!-- 扫描符合@Service @Repository的类 -->

<context:include-filter
type="annotation"

expression="org.springframework.stereotype.Service"
/>

<context:include-filter
type="annotation"

expression="org.springframework.stereotype.Repository"
/>

</context:component-scan>

<tx:annotation-driven
transaction-manager="transactionManager"
/>

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

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

</bean>

<jpa:repositories
base-package="com.morris.dao"

entity-manager-factory-ref="entityManagerFactory"

transaction-manager-ref="transactionManager"
/>

</beans>

1.1.10.          测试文件


TestPerson.java


package com.morris.test;

import org.junit.Test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.morris.entity.Person;

import com.morris.service.inter.IPersonService;

public
class
TestPerson {

@Test

public
void
save() {

ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("spring.xml");

IPersonService personService = (IPersonService) applicationContext.getBean("personService");

personService.save(new Person("morris131",131));

}

}

1.1.11.          结果


后台打印sql语句


Hibernate: insert into Person (age, name) values (?, ?)

时间: 2024-07-31 14:30:27

spring整合jpa的相关文章

JPA学习笔记-Spring整合JPA

Spring 整合 JPA 三种整合方式: -LocalEntityManagerFactoryBean:适用于那些仅使用 JPA 进行数据访问的项目,该 FactoryBean 将根据JPA PersistenceProvider 自动检测配置文件进行工作,一般从"META-INF/persistence.xml"读取配置信息,这种方式最简单,但不能设置 Spring 中定义的DataSource,且不支持 Spring 管理的全局事务 -从JNDI中获取:用于从 Java EE 服

spring整合jpa优化

本篇是针对上一篇<spring整合jpa>文章进行优化 1.1.  使用接口代替dao层 1.1.1.   删除IpersonDao和PersonDaoImpl 1.1.2.   新建PersonDao.java PersonDao.java package com.morris.dao; import org.springframework.data.repository.Repository; import com.morris.entity.Person; public interfac

Spring整合JPA改进办法

在标准JPA中,持久化单元默认被定义在META-INF/persistence.xml文件中,并且通过@Entity注解搜索获得.但是大多数情况下,持久化单元不会仅仅存在一个,并且数据源也不会是一个,基于这个原因,Spring提供了一个可选方案,即通过LocalEntityManagerFactoryBean和LocalContainerEntityManagerFactoryBean进行管理.localEntityManagerFactoryBean扩展功能太少,这个不说,我们以LocalCo

spring整合JPA(hibernate)以及jdbctemple

下面的基本的项目部署信息: [c-sharp] view plaincopy <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <!-- jpa  entityManagerFactory--> <bean id="entityManagerFactory" class="org.springf

Spring整合JPA时,为实体类添加@Entity注解时提示The type MultipartEntity is deprecated

这个情况是由于导入错了Entity包所导致的. 按住Alt+T时,会有两个关于@Entity的提示 org.hibernate.annotations.Entity 和 javax.persistence.Entity,我们应该使用javax.persistence.Entity.此时就不会出现过时的提示. @org.hibernate.annotations.Entity 和 @javax.persistence.Entity 的区别: JPA的Entity类和Hibernate的Entity

Spring笔记(五): spring 整合jdbc、hibernate、jpa

一.简介 (一)需要的jar包 1.需要的jar包:spring.hibernate.mysql.xml.apache-commons等等的jar包.        2.以上jar包,如spring.xml和commos都是冗余的. (二)分析 1.涉及到的实体.service.dao接口.jdbc配置文件以及service实现类都可以通用,只需要实现不同的dao实现类.配置.测试类. 2.通用的源码如下: 1)实体: <span style="font-size:18px;"&

spring data jpa学习笔记一:helloworld

在学习 JPA Spring Data之前,我们有必要了解一下JPA和Spring Data. JPA JPA全称Java Persistence API.即java持久化规范.JPA通过注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Spring Data Spring Data是Spring框架的一个子项目,就像Spring MVC是Spring的一部分一样.使得数据库访问变得方便和快捷.Spring Data 支持JPA. JPA Spring Data J

spring data jpa执行update和delete语句时报错处理

之前项目中使用spring data jpa时,遇到删除记录的需求时,主要利用spring data中自带的delete()方法处理,最近在dao层使用delete sql语句时报错,代码如下: [java] view plain copy @Query(value = "delete parcel,parcel_file,ms_files,t_order,route " + "from parcel left join route on parcel.route_id = 

java框架整合例子(spring、spring mvc、spring data jpa、hibernate)

这是自己参考springside开源项目整合的框架,主要整合了spring.spring mvc.spring data jpa.hibernate这几个框架,对于这几个框架其中感觉比较舒服的还是spring data jpa这个框架,这个框架在写dao类的时候,只需要写一个接口声明,spring data jpa会自动的实现其实现类,使用起来比较方便,至于详细的使用方法还请自己百度吧,因为我也不清楚.个人感觉还有一个比较不错的地方就是能够打印sql语句,都知道hibernate打印的sql语句