SpringBoot(17)——使用SpringDataJPA
使用Spring Data JPA
使用Spring Data JPA需要在pom.xml中新增spring-boot-starter-data-jpa
依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
之後就可以在應用中定義Entity了,並使用javax.persistence
相關注解了。比如下面就定義了一個簡單的User實體。
@Entity
@Table(name="tb_user")
@Data
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String name;
private String username;
}
之後可以定義自己的JpaRepository。
public interface UserJpaRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
}
如果你的目錄結構是按照Spring Boot建議的目錄結構,上面定義的Repository將自動被Spring Boot掃描到,並被註冊為一個Spring bean。Spring Boot預設會掃描標註了@SpringBootApplication
註解的Class所在的package下面的所有的package。如果需要掃描其它目錄下的Repository,則可以通過@EnableJpaRepositories("com.xxx.package")
來指定。
之後就可以在Service中注入定義好的Repository進行相應的增刪改查了,比如下面這樣:
@Service
public class UserService {
@Autowired
private UserJpaRepository userRepository;
public void save(User user) {
this.userRepository.save(user);
}
public void save(List<User> users) {
this.userRepository.saveAll(users);
}
public List<User> findByName(String name) {
return this.userRepository.findByName(name);
}
public Optional<User> findById(Long id) {
return this.userRepository.findById(id);
}
}
新增了spring-boot-starter-data-jpa
依賴後,預設會使用JPA的Hibernate實現。org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
將負責JPA的自動配置,其只有在bean容器中只定義了一個DataSource時才會進行自動配置。可以通過spring.jpa
字首的配置屬性配置Hibernate JPA的相關資訊,對應的配置屬性將由org.springframework.boot.autoconfigure.orm.jpa.JpaProperties
負責接收。可以通過spring.jpa.show-sql
指定是否需要列印SQL語句,可以通過spring.jpa.hibernate.*
指定Hibernate特定的配置資訊。比如通過spring.jpa.hibernate.ddl-auto
指定是否需要基於實體配置自動應用對應的DDL語句到資料庫,它相當於使用Hibernate時的hibernate.hbm2ddl.auto
。
spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
Spring Boot會自動註冊org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor
,以便可以在Web應用中使用懶載入。如果不需要自動註冊OpenEntityManagerInViewInterceptor
,則可以配置spring.jpa.open-in-view=false
。關於JPA可以配置的更多資訊請參考org.springframework.boot.autoconfigure.orm.jpa.JpaProperties
的API文件。
Spring Boot預設會自動掃描Jpa Repository,如果不希望自動掃描Repository,可以配置spring.data.jpa.repositories.enabled=false
。
本文主要介紹在Spring Boot應用中如何使用Spring Data Jpa,關於Spring Data Jpa的更多應用請參考相應的文件。
(注:本文是基於Spring Boot 2.0.3所寫)
相關文章
- springboot2.0 整合springDataJpaSpring Boot
- 使用springboot中的springdatajpa寫一個demo遇到一些問題Spring Boot
- SpringBoot(17)---SpringBoot整合RocketMQSpring BootMQ
- Thymeleaf+SpringBoot+SpringDataJPA實現的中小醫院資訊管理系統Spring Boot
- springDataJpa 最佳實踐Spring
- 框架系列——SpringData 、JPA 、SpringDataJPA框架Spring
- 17 scala集合使用
- springDataJpa多表級聯查詢(@ManyToOne @OneToOne)Spring
- springDataJpa聯表查詢之多對多Spring
- SpringDataJpa (二)-動態查詢&多表操作Spring
- SpringDataJPA入門就這麼簡單Spring
- SpringDataJpa列印Sql詳情(含引數)SpringSQL
- SpringBoot之:SpringBoot中使用HATEOASSpring Boot
- SpringBoot使用JdbcTemplateSpring BootJDBC
- SpringBoot使用LomBokSpring BootLombok
- SpringBoot使用JPASpring Boot
- SpringBoot使用WebSocketSpring BootWeb
- springboot 使用 rocketMQSpring BootMQ
- SpringBoot使用RedisSpring BootRedis
- SpringBoot使用WebJarsSpring BootWebJAR
- SpringBoot使用AOPSpring Boot
- springdatajpa 中get××方法與find××方法的區別Spring
- SpringBoot AOP的使用Spring Boot
- SpringBoot(11)——使用SpringCacheSpring BootGC
- SpringBoot使用外部tomcatSpring BootTomcat
- SpringBoot(14)——使用WebClientSpring BootWebclient
- springboot 使用mustcache模板Spring Boot
- SpringBoot使用快取Spring Boot快取
- SpringBoot 使用 Redis GeoSpring BootRedis
- springboot + activeMQ基本使用Spring BootMQ
- springboot整合使用JdbcTemplateSpring BootJDBC
- Vivado使用技巧(17):建立IBIS模型模型
- 2020-2-17-mongodb的使用MongoDB
- 效能加速包:SpringBoot 2.7&JDK 17,你敢嘗一嘗嗎Spring BootJDK
- _005_SpringBoot_使用IDEA建立SpringBoot專案Spring BootIdea
- Unity6 URP17使用初探Unity
- 使用C++17手擼JSON庫C++JSON
- SpringBoot 中使用 JDBC TempletSpring BootJDBC