zoukankan      html  css  js  c++  java
  • SpringDataJPA

    一、ORM思想

            主要目的:操作实体类就相当于操作数据库表
            建立两个映射关系:
            实体类和表的映射关系
            实体类中属性和表中字段的映射关系
            不再重点关注:sql语句

    二、整合SpringDataJpa与Spring

    <!--spring和spring data jpa的配置-->
        <!--    1.创建entityManageFactory对象交给spring管理-->
        <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!--自动扫描实体类的包,注入spring-->
            <property name="packagesToScan" value="com.li.domain"/>
            <!--jpa实现厂家-->
            <property name="persistenceProvider">
                <bean class="org.hibernate.jpa.HibernatePersistenceProvider"/>
            </property>
            <!--供应商适配器-->
            <property name="jpaVendorAdapter">
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                    <!--是否自动创建数据库表-->
                    <property name="generateDdl" value="false"/>
                    <!--指定数据库类型-->
                    <property name="database" value="MYSQL"/>
                    <!--数据库方言:支持特有的语法-->
                    <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
                    <!--是否显示sql语句-->
                    <property name="showSql" value="true"/>
                </bean>
            </property>
            <!--jpa方言:高级特性-->
            <property name="jpaDialect">
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
            </property>
        </bean>
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql:///mbase"/>
            <property name="user" value="root"/>
            <property name="password" value="123"/>
        </bean>
        <!--整合spring data jpa-->
        <jpa:repositories base-package="com.li.dao" transaction-manager-ref="transactionManager"
                          entity-manager-factory-ref="entityManagerFactory">
        </jpa:repositories>
        <!--配置事务管理器-->
        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="entityManagerFactory" ref="entityManagerFactory"/>
        </bean>
        <!--包扫描-->
        <context:component-scan base-package="com.li"/>
    </beans>

    三、编写实体类,使用Jpa注解配置映射关系

    /**
     * 配置映射关系:
     *      1.实体类和表的映射关系
     *      2.实体类中的属性和表中的字段的映射关系
     *         @Entity : 声明为实体类
     *         @Table : 配置实体类和表的映射关系
     *            name:配置数据库表的名称
     *
     */
    @Entity
    @Table(name="cst_customer")
    public class Customer implements Serializable {
        /**
         * @Id: 声明主键的配置
         * @GeneratedValue :主键生成策略
         *    GenerationType.IDENTITY:自增 Mysql
         *    GenerationType.SEQUENCE:序列 oracle
         *@Column : 配置属性和字段的映射关系
         *   name: 数据库表中字段名称
         */
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="cust_id")
        private Long custId;
        @Column(name="cust_name")
        private String custName;
        @Column(name="cust_source")
        private String custSource;
        @Column(name="cust_industry")
        private String custIndustry;
        @Column(name="cust_level")
        private String custLevel;
        @Column(name="cust_address")
        private String custAddress;
        @Column(name="cust_phone")
        private String custPhone;

    四、编写一个符合springDataJpa的dao层接口

               * 只需要编写dao层接口,不需要编写dao层接口的实现类
               * dao层接口规范
                  1.需要继承两个接口(JpaRepository,JpaSpecificationExecutor)
                  2.需要提供响应的泛型

    /**
     * 符合springDataJpa的dao层接口的规范
     *      JpaRepository<实体类的类型,实体类中主键属性的类型>
     *          封装了CRUD操作
     *      JpaSpecificationExecutor<实体类类型>
     *          封装复杂分页查询
     */
    public interface CustomerDao extends JpaRepository<Customer,Long>, JpaSpecificationExecutor<Customer> {
    }

    五、测试

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:applicationContext.xml")
    public class CustomerTest {
        @Autowired
        private CustomerDao customerDao;
    
        /**
         * 立即加载
         */
        @Test
        public void findOne(){
            Customer one = customerDao.findOne(1l);
            System.out.println(one);
        }
    }
  • 相关阅读:
    讨论一下,乌云漏洞库的学习方法
    a
    asss
    密码重置
    SQL注入2
    起名字真难
    Header
    SQL注入1
    伪装者
    ofbiz 代码日记
  • 原文地址:https://www.cnblogs.com/cqyp/p/12812737.html
Copyright © 2011-2022 走看看