zoukankan      html  css  js  c++  java
  • SpringData —— HelloWorld

    SpringData 简介

    优点

    简化数据库访问,减少数据访问层的开发量。

    支持的数据库类型

    1. 支持 NoSQL 存储,如 MongoDB,Redis
    2. 支持关系型数据存储技术,如 jdbc,jpa

    HelloWorld

    Spring 配置

    配置 Spring 基本信息

    <!-- 配置要扫描的包 -->
    <context:component-scan base-package="com.solverpeng.sd"/>
    <!-- 配置数据源 -->
    <context:property-placeholder location="db.properties"/>
    <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
        <property name="user" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="driverClass" value="${jdbc.driverClass}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
    </bean>
    

    配置 Spring 整合 JPA

    <!-- 配置 JPA 的 EntityManagerFactory -->
    <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
        <property name="dataSource" ref="dataSource"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
        </property>
        <!-- 替代 JPA 的 persistence.xml 扫描包下添加 @Entity 的实体类 -->
        <property name="packagesToScan" value="com.solverpeng.sd.bean"/>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>
    
    <!-- 配置事务管理器 -->
    <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>
    
    <!-- 配置注解支持 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    

    配置 Spring 整合 SpringData

    <!-- 配置 SpringData -->
    <jpa:repositories base-package="com.solverpeng.sd.repositories" entity-manager-factory-ref="entityManagerFactory"/>
    

    声明持久层的接口

    声明的持久层接口需要继承自 org.springframework.data.repository.Repository 接口,或者是该接口的子接口。

    在接口中声明方法

    public interface PersonRepository extends Repository<Person, Integer>{
        Person getByPersonName(String personName);
    }
    

    测试

    @org.junit.Test
    public void testRepository() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        PersonRepository personRepository = ctx.getBean(PersonRepository.class);
        String personName = "aa";
        Person person = personRepository.getByPersonName(personName);
        System.out.println(person);
    }
    

    测试出现的问题以及解决方案

    问题:src-resolve: 无法将名称 'repository:auditing-attributes' 解析为 'attribute group' 组件
    原因:spring-data-jpa-1.3.3.jarspring-data-commons-core-1.1.0.jar 不兼容导致。
    解决:将 spring-data-jpa-1.3.3.jar 更换为 spring-data-jpa-1.0.0.jar

    总结

    SpringData 是用了比 JPA 更加简洁的方式简化了开发,因为是建立在 JPA 的规范上,所以可以支持绝大多数的 ORM 框架,
    从 HelloWorld 中可以看出,主要要掌握的是如何在它接口中声明方法,声明该方法的规则是什么。同时本篇文章介绍了如何在 Spring 环境下集成 SpringData,以及出现的一些问题。

  • 相关阅读:
    围炉夜话(3)
    围炉夜话(2)
    一步步学习SPD2010--第十一章节--处理母版页(9)--导出母版页
    一步步学习SPD2010--第十一章节--处理母版页(8)--从母版页创建网页
    一步步学习SPD2010--第十一章节--处理母版页(7)--管理Content Placeholders
    一步步学习SPD2010--第十一章节--处理母版页(6)--改变默认母版页
    一步步学习SPD2010--第十一章节--处理母版页(5)--自定义母版页
    一步步学习SPD2010--第十一章节--处理母版页(4)--复制和保存母版页
    一步步学习SPD2010--第十一章节--处理母版页(3)--母版页上使用的控件
    如何使用外部数据列创建SP列表
  • 原文地址:https://www.cnblogs.com/solverpeng/p/5994459.html
Copyright © 2011-2022 走看看