SpringData整合JPA(具体实现为(Hibernate));

这里以Maven举例 先发图再发Maven以及配置文件的文字信息(方便复制粘贴); Oracle11g 数据库 jar包在Oracle数据库安装的lib目录下,这里不做具体介绍
Spring整合Jpa配置文件: 一定要仔细,仔细再仔细;
在这里插入图片描述

      第二步 根据以上配置的信息所指向的包创建映射关系实体类

在这里插入图片描述
第三步: 编写DAO接口(注意是接口 Mybatis用过的都明白)

在这里插入图片描述

第四步: 单元测试 自动创建表和插入数据
在这里插入图片描述

第5步,测试OK Oracle自动创建表并添加数据;
在这里插入图片描述

pom文件所需要的依赖

<properties>
    <spring.version>4.2.4.RELEASE</spring.version>
    <hibernate.version>5.0.7.Final</hibernate.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.12</log4j.version>
    <c3p0.version>0.9.1.2</c3p0.version>
    <mysql.version>5.1.6</mysql.version>
</properties>
<dependencies>
    <!-- junit单元测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
        <scope>test</scope>
    </dependency>

    <!-- spring beg -->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.6.8</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!-- spring end -->

    <!-- hibernate beg -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.2.1.Final</version>
    </dependency>
    <!-- hibernate end -->

    <!-- c3p0 beg -->
    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>${c3p0.version}</version>
    </dependency>
    <!-- c3p0 end -->

    <!-- log end -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <!-- log end -->

    <!-- https://mvnrepository.com/artifact/oracle/ojdbc6 -->
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.1.0</version>
    </dependency>


    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.9.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.2.4.RELEASE</version>
    </dependency>

    <!-- el beg 使用spring data jpa 必须引入 -->
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>2.2.4</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>javax.el</artifactId>
        <version>2.2.4</version>
    </dependency>
    <!-- el end -->
</dependencies>

applicationContext.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>


<context:property-placeholder location="oracleDataConnection.properties"></context:property-placeholder>
<!--1,配置DataSource (这里测试为Oracle)数据库连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${oracleDriver}"></property>
    <property name="jdbcUrl" value="${oracleUrl}"></property>
    <property name="user" value="${oracleUser}"></property>
    <property name="password" value="${oraclePassword}"></property>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <!--配置数据库连接池-->
   <property name="dataSource" ref="dataSource"/>
    <!--配置扫描包实体类-->
    <property name="packagesToScan" value="com.out.entity"/>
    <!--注入Hibernate对Jpa的实现-->
    <property name="persistenceProvider" ref="hibernateId" />
    <!--Jpa的供应商适配器-->
    <property name="jpaVendorAdapter">
      <bean  class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" >
          <!--在适配器中配置对应的一些连接信息   是否自动创建(如果没有必须指定否则就报错了 ) true就是原生配置(update)-->
          <property name="generateDdl" value="true"/>
          <!--选型数据库,看源码都是有枚举的,MySQL,SQLService都是有的-->
          <property name="database" value="ORACLE"/>
          <!--是否显示方言-->
          <property name="showSql" value="true"/>

          <!--指定数据库平台-->
       <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect"></property>
      </bean>
    </property>
    <!--配置JPA方言信息,源码也是有的,Mysql的Oracle的都是可见的-->
    <property name="jpaDialect" >
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"></bean>
    </property>
</bean>
<!--这里声明Hibernate  可以直接配置到 persistenceProvider 中,但是为了清楚没有这么做-->
<bean id="hibernateId" class="org.hibernate.jpa.HibernatePersistenceProvider"></bean>
 <!--3,配置事务管理器       事务管理器是不同的此时注意-->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<!--开启声明事务,当然你可以使用指定的切面进行控制事务-->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!--开始整合操作  这里的扫描包是扫描DAO层,不需要写实现类就可以完成操作数据库操作-->
<jpa:repositories base-package="com.out.dao"
                  transaction-manager-ref="transactionManager"
                     entity-manager-factory-ref="entityManagerFactory" />
<!--装配其它类容器-->
<context:component-scan base-package="com.out"/> 
</beans>

Entity映射类:
package com.out.entity;

import javax.persistence.*;

/**

  • @author misterWei

  • @mailbox @gmail.com
    */
    //声明映射关系
    @Entity
    @Table(name = “s_student”)
    public class Student {
    //配置主键 以及其它字段名称
    @Id//主键生成策略
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = “s_id” )
    private Integer sid;
    @Column(name = “s_name”,length = 20)
    private String sname;
    @Column(name = “s_gender”,length = 1)
    private Integer gender;
    @Column(name=“s_age”,length = 3)
    private Integer age;

    public String getGrade() {
    return grade;
    }

    public void setGrade(String grade) {
    this.grade = grade;
    }

    @Column(name=“s_grade”,length = 10)
    private String grade;

    public Integer getSid() {
    return sid;
    }

    public void setSid(Integer sid) {
    this.sid = sid;
    }

    public String getSname() {
    return sname;
    }

    public void setSname(String sname) {
    this.sname = sname;
    }

    public Integer getAge() {
    return age;
    }

    public void setAge(Integer age) {
    this.age = age;
    }

    public Integer getGender() {
    return gender;
    }

    public void setGender(Integer gender) {
    this.gender = gender;
    }

    @Override
    public String toString() {
    return “Person{” +
    “sid=” + sid +
    “, sname=’” + sname + ‘’’ +
    “, age=” + age +
    “, gender=” + gender +
    ‘}’;
    }

}

DAO接口
package com.out.dao;

import com.out.entity.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

/**
*
*/
//此时这个Dao层就是一个接口只需要继承2个接口就使用API
//JpaRepository 用来进行基本的CRUD <实体类,对应的主键类型>
//JpaSpecificationExecutor用来进行复杂的查询分页操作等<实体类>
public interface StudentDao extends
JpaRepository<Student,Long>,JpaSpecificationExecutor {
}

单元测试:
package com.out;

import com.out.dao.StudentDao;
import com.out.entity.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**

*/
//进行简单的单元测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = “classpath:applicationContext.xml”)
public class JavaConnectionOrcleTest {
@Autowired
private StudentDao studentDao;
@Test
public void insertOne(){
Student student = new Student();
student.setSname(“小明同学”);
student.setAge(18);
student.setGender(1);
student.setGrade(“三年级二班”);
studentDao.save(student);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值