spring整合JPA入门案例

1、jpa(Java Persistence API)是一个Java 持久化 规范,所以它不是具体的实现
2、jpa典型的实现是hibernate。利用jpa写的代码,如果需要更换底层实现比如换掉hibernate,原则上不用改动代码,这就是规范的好处。


实现步骤:
1、新建maven项目
2、pom.xml引入依赖

        <!-- jpa规范 -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>2.1.4.RELEASE</version>
        </dependency>
        <!-- jpa的hibernate实现,当前版本已经被移动到hibernate-core,这里是个空包 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.version}</version>
        </dependency>

3、配置好web.xml和springmvc.xml
4、在applicationContext.xml中配置:

     <!-- 1、生成jpa-bean工厂 -->
    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource" />
        <!-- jpa适配器,这里使用hibernate的实现 -->
        <property name="jpaVendorAdapter">
            <bean
                class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <!-- 支持的数据库类型 -->
                <property name="Database" value="MYSQL" />
                <!-- 正向工程 -->
                <!-- <property name="generateDdl" value="false" /> -->
                <!-- 控制台输出sql -->
                <property name="showSql" value="true" />
            </bean>
        </property>
        <!-- 实体类的包路径扫描 -->
        <property name="packagesToScan">
            <list>
                <value>com.lwr.entity</value>
            </list>
        </property>
    </bean>
    <!-- 2、jpa的dao类的扫描路径,扫描自动生成bean交由spring管理 -->
    <jpa:repositories base-package="com.lwr.dao" 
        entity-manager-factory-ref="entityManagerFactory" 
        transaction-manager-ref="transactionManager"/>

    <!-- 3、配置jpa的事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory"
            ref="entityManagerFactory"></property>
    </bean>

根据以上配置,一个是扫描实体类,一个是扫描dao类,而实体类通过@Entity注解配置后不用在写映射xml文件,而dao类继承某个接口后自动被jpa识别

5、写一个实体类User :

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="user1")
public class User {
    @Id
    String id;
    
    @Column
    String name;
}

6、写一个jpa的dao类UserDao:

import org.springframework.data.repository.Repository;
import com.lwr.entity.User;

public interface UserDao extends Repository<User, String> {
    //根据jpa-api规范,get[]By[字段名]
    public User getUserById(String id);
}

7、注入这个dao查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值