• Spring Data之Hello World


    1. 概述

    • SpringData : 注意目标是使数据库的访问变得方便快捷;支持NoSQL和关系数据存储;
      • 支持NoSQL存储:
        • MongoDB(文档数据库)
        • Neo4j(图形数据库)
        • Redis(键/值存储)
        • Hbase(列族数据库)
      • 关系数据库存储:
        • JDBC
        • JPA

    2. Spring Data 入门程序 Hello World

    2.1 使用 Spring Data JPA 进行持久层开发需要的四个步骤:

    • 配置Spring整合JPA;
    • 在Spring配置中配置Spring Data,让Spring为声明的接口创建代理对象;
    • 声明持久层的接口,该接口继承Repository,Repository是一个标记型接口,它不包含任何方法,如果必要,
      Spring Data 可实现Repository其他子接口,其中定义了一些常用的增删改查,以及分页相关的方法;
    • 在接口中声明需要的方法;

    // Spring 配置文件 applicationContext.xml
    
    <!-- 1. 配置数据源 -->
        <context:property-placeholder location="classpath:db.properties"/>
    
    	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    		<property name="user" value="${jdbc.username}"></property>
    		<property name="password" value="${jdbc.password}"></property>
    		<property name="driverClass" value="${jdbc.driverClass}"></property>
    		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    	</bean>
    
    <!-- 2. 配置JPA 的 EntityManagerFactory -->
        <bean id="entityManagerFactory"
    		  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    		  <property name="dataSource" ref="dataSource"></property>
    		  <property name="jpaVendorAdapter">
    		 	<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
    		  </property>
    		  <property name="packagesToScan" value="com.noodles.springdata"></property>
    		  <property name="jpaProperties">
    		  	<props>
    		  		<!-- 生成的数据表的列的映射策略 -->
    		  		<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
    		  		<!-- hibernate 基本属性 -->
    		  		<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>
    
    <!-- 3. 配置事务管理器 -->
        <bean id="transactionManager"
              class="org.springframework.orm.jpa.JpaTransactionManager">
              <property name="entityManagerFactory" ref="entityManagerFactory"></property>  
        </bean>
    
    <!-- 4. 配置支持注解的事务 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
    
    <!-- 5. 配置SpringData -->
        <!-- 加入JPA 的命名空间-->
    	<!-- base-package: 扫描Repository Bean 所在的package -->
    	<jpa:repositories base-package="com.noodles.springdata"
    		entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>
    
    
    // db.properties
    jdbc.username=root
    jdbc.password=root
    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.jdbcUrl=jdbc:mysql:///jpa
    
    
    // com.noodles.springdata
    // Person 类
    @Table(name="JPA_PERSONS")
    @Entity
    public class Person{
        private Integer id;
        private String lastName;
        private String email;
        private Date birth;
    
        @GeneratedValue
        @Id
        privte Integer getId(){
            return id;
        }
        private void SetId(Integer id){
            this.id = id;
        }
    
        ...(省略getter和setter)
    }
    
    
    // PersonRepository.java(接口)
    public interface PersonRepository extends Repository<Person, Integer>{
    
        Person getByLastName(String lastName);
    }
    
    
    // 测试类com.noodles.springdata.test
    // SpringDataTest
    public class SpringDataTest{
        private ApplicationContext ctx = null;
    
        {
            ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        }
    
        @Test
        public void testHelloWorld(){
            PersonRepository pr = ctx.getBean(PersonRepository.class);
    
            Person person = pr.getByLastName("李四");
            System.out.println(person);
        }
    }
    

    参考资料:

  • 相关阅读:
    .net core 支付宝,微信支付 一
    .net core AES加密解密及RSA 签名验签
    .net core 使用webservice
    .net core 使用X509 私钥加密请求
    .net core mysql entity映射时字符串被截断
    VS 2017 RC .net core ef+ MySql 出现错误
    IdentityServer4 简单使用,包括api访问控制,openid的授权登录,js访问
    iOS面试题之内存管理
    iOS之tableView性能优化/tableView滑动卡顿?
    iOS面试题之runloop
  • 原文地址:https://www.cnblogs.com/linkworld/p/9163936.html
Copyright © 2020-2023  润新知