[toc] 基於Java Persistant API, 提供簡單的關連式資料庫訪問方式。 可透過類別來表示table,自動生成SQL語句。 ```maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` ### <font color="yellow">@EntityScan</font> 掃描當前package及所有子package的 <font color="yellow">@Entity</font> class ```java== import org.springframework.boot.autoconfigure.domain.EntityScan; @EntityScan(basePackages = "com.example.myapp") public class AppConfig { } ``` ### <font color="yellow">@EnableJpaRepositories</font> 有繼承JpaRepository/CrudRepository的類都會被掃描/註冊成Spring Data JPA代理類, 他會被註冊為Bean. ### <font color="yellow">@Entity</font> ```java== import jakarta.persistence.*; @Entity // 標註class是 JPA實體, 對應到資料庫表。 @Table(name = "users") //specify table name public class User { @Id // PK private Long id; @Column(nullable = false) // not full private String name; } ``` ### JpaRepository Spring Data JPA 提供JpaRepository, 不用SQL進行CRUD ```java JpaRepository<T, ID> /* T (JPA實體) ID (PK) */ ``` 繼承自PagingAndSortingRepository<T, ID>與CrudRepository<T, ID> 提供CRUD/Sort ```java== import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { }