• SpringData JPA的学习笔记之环境搭建


    一、环境搭建

    1、加入jar包

      spring jar+jpa jar +springData jar
    >>SpringData jar包
     
     
    2、配置applicationContext.xml
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4 xmlns:context="http://www.springframework.org/schema/context"
     5 xmlns:tx="http://www.springframework.org/schema/tx"
     6 xmlns:jpa="http://www.springframework.org/schema/data/jpa"
     7 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     8 http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
     9 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    10 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    11  
    12 <!-- 配置自动扫描的包 -->
    13 <context:component-scan base-package="com.atguigu.springdata"></context:component-scan>
    14  
    15 <!-- 1. 配置数据源 -->
    16 <context:property-placeholder location="classpath:db.properties"/>
    17  
    18 <bean id="dataSource"
    19 class="com.mchange.v2.c3p0.ComboPooledDataSource">
    20 <property name="user" value="${jdbc.user}"></property>
    21 <property name="password" value="${jdbc.password}"></property>
    22 <property name="driverClass" value="${jdbc.driverClass}"></property>
    23 <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    24  
    25 <!-- 配置其他属性 -->
    26 </bean>
    27  
    28 <!-- 2. 配置 JPA 的 EntityManagerFactory -->
    29 <bean id="entityManagerFactory"
    30 class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    31 <property name="dataSource" ref="dataSource"></property>
    32 <property name="jpaVendorAdapter">
    33 <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
    34 </property>
    35 <property name="packagesToScan" value="com.atguigu.springdata"></property>
    36 <property name="jpaProperties">
    37 <props>
    38 <!-- 二级缓存相关 -->
    39 <!--
    40 <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
    41 <prop key="net.sf.ehcache.configurationResourceName">ehcache-hibernate.xml</prop>
    42 -->
    43 <!-- 生成的数据表的列的映射策略 -->
    44 <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
    45 <!-- hibernate 基本属性 -->
    46 <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
    47 <prop key="hibernate.show_sql">true</prop>
    48 <prop key="hibernate.format_sql">true</prop>
    49 <prop key="hibernate.hbm2ddl.auto">update</prop>
    50 </props>
    51 </property>
    52 </bean>
    53  
    54 <!-- 3. 配置事务管理器 -->
    55 <bean id="transactionManager"
    56 class="org.springframework.orm.jpa.JpaTransactionManager">
    57 <property name="entityManagerFactory" ref="entityManagerFactory"></property>
    58 </bean>
    59  
    60 <!-- 4. 配置支持注解的事务 -->
    61 <tx:annotation-driven transaction-manager="transactionManager"/>
    62  
    63 <!-- 5. 配置 SpringData -->
    64 <!-- 加入 jpa 的命名空间 -->
    65 <!-- base-package: 扫描 Repository Bean 所在的 package -->
    66 <jpa:repositories base-package="com.atguigu.springdata"
    67 entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>
    68  
    69 </beans>
     
    //db.properties
    1 jdbc.user=root
    2 jdbc.password=123456
    3 jdbc.jdbcUrl=jdbc:mysql:///jpa
    4 jdbc.driverClass=com.mysql.jdbc.Driver
    3、创建实体类Person
    package com.atguigu.springdata;
     
    import java.util.Date;
     
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    @Table(name="t_person")
    @Entity
    public class Person {
     
    private Integer id;
    private String lastname;
    private String email;
    private Date birthday;
    @GeneratedValue
    @Id
    public Integer getId() {
    return id;
    }
    public void setId(Integer id) {
    this.id = id;
    }
    public String getLastname() {
    return lastname;
    }
    public void setLastname(String lastname) {
    this.lastname = lastname;
    }
    public String getEmail() {
    return email;
    }
    public void setEmail(String email) {
    this.email = email;
    }
    public Date getBirthday() {
    return birthday;
    }
    public void setBirthday(Date birthday) {
    this.birthday = birthday;
    }
    @Override
    public String toString() {
    return "Person [id=" + id + ", lastname=" + lastname + ", email=" + email + ", birthday=" + birthday + "]";
    }
     
     
    }
    

      

    4、继承Repository接口
    Repository<Class<T>clazz,Object obj>,其中Class<T>clazz是实体类,obj是主键类型
    package com.atguigu.springdata.dao;
     
    import org.springframework.data.repository.Repository;
     
    import com.atguigu.springdata.Person;
     
    public interface PersonRespository extends Repository<Person,Integer>{
     
    Person getByLastname(String lastname);
     
    }
    

      

    >>Repository接口说明:
    • Repository 接口是 Spring Data 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法 
    • public interface Repository<T, ID extends Serializable> { } 
    • Spring Data可以让我们只定义接口,只要遵循 Spring Data的规范,就无需写实现类。  
    • 与继承 Repository 等价的一种方式,就是在持久层接口上使用 @RepositoryDefinition 注解,并为其指定 domainClass 和 idClass 属性。如下两种方式是完全等价的
     1 package com.atguigu.springdata.dao;
     2  
     3 import org.springframework.data.repository.RepositoryDefinition;
     4  
     5 import com.atguigu.springdata.Person;
     6  
     7 @RepositoryDefinition(domainClass=Person.class,idClass=Integer.class)
     8 public interface PersonRepository2 {
     9 Person getByLastname(String lastname);
    10 }
    11  
     
    >>Repository的子接口
         基础的 Repository 提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。它们的继承关系如下: 
    • Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类
    • CrudRepository: 继承 Repository,实现了一组 CRUD 相关的方法 
    • PagingAndSortingRepository: 继承 CrudRepository,实现了一组分页排序相关的方法 
    • JpaRepository: 继承 PagingAndSortingRepository,实现一组 JPA 规范相关的方法 
    • 自定义的 XxxxRepository 需要继承 JpaRepository,这样的 XxxxRepository 接口就具备了通用的数据访问控制层的能力。
    • JpaSpecificationExecutor: 不属于Repository体系,实现一组 JPA Criteria 查询相关的方法 
     
  • 相关阅读:
    C# 打印多页tif
    页面动态加载js文件
    CPrintDialog 构造函数参数详解
    DEVMODE 结构体
    对C#对象的Shallow、Deep Cloning认识【转】
    PowerShell 启动应用程序【转】
    中文网页的字体
    css3自适应布局单位vw,vh你知道多少?
    微信小程序轮播图宽高计算
    更改wordpress的默认登录页面名称wp-login
  • 原文地址:https://www.cnblogs.com/hzhh123/p/4934093.html
Copyright © 2020-2023  润新知