iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Mobile Development

用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統系列 第 11

Day11 建立JPA實體與Repository:從資料庫到實體的過程

  • 分享至 

  • xImage
  •  

在 Java EE 開發中,JPA(Java Persistence API)是一個非常重要的技術,它允許開發者以面向對象的方式來操作資料庫資料。本文將一步一步地了解如何從資料庫到實體的過程,並建立相應的 Repository

首先,創建一個新的 Maven 專案,然後在 pom.xml 中添加 JPA 和資料庫驅動的依賴。例如,對於 MySQL 資料庫,可以添加以下依賴

<dependencies>
    <!-- Spring Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <!-- MySQL 驅動 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.25</version>
    </dependency>
    
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

在 src/main/resources/application.properties 文件中設置資料庫連接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

JPA 實體類對應於資料庫中的表。假設我們有一個用戶表 users,我們可以創建一個 User 實體類,具體如下:

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private String email;

    // Getter and Setter
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

接下來,我們需要創建一個 Repository 介面,這樣可以輕鬆地進行 CRUD 操作:

public interface UserRepository extends JpaRepository<User, Long> {
    // 可以自定義查詢方法
    User findByName(String name);
}

通常在實際應用中,會有一個服務層來處理業務邏輯,和一個控制器來處理請求。以下是簡單的服務層和控制器範例:

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<User> findAll() {
        return userRepository.findAll();
    }

    public User findById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    public User save(User user) {
        return userRepository.save(user);
    }

    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }
}

控制器:

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.findById(id);
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.save(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteById(id);
    }
}

透過以上步驟,就可以簡單的使用 JPA 實體與 Repository 對資料庫進行操作。這樣的設計不僅使我們的代碼更加清晰且可維護,同時也達到了高效的資料處理目的。


上一篇
Day10 Spring Data JPA簡介:為什麼選擇Spring Data JPA?
下一篇
Day12 使用Spring Data JPA進行SQL查詢:學習如何自定義查詢
系列文
用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言