返回

如何利用 Spring Boot 集成 JPA 与 SQL Server

java

在 Spring Boot 中使用 JPA 与 SQL Server

引言

在本文中,我们将探讨如何利用 Spring Boot 框架和 SQL Server 数据库集成 JPA(Java 持久性 API)。我们将深入探讨配置、模型、DAO、服务以及示例代码,指导你成功实现 JPA。

先决条件

  • Spring Boot 2.x 或更高版本
  • SQL Server 数据库
  • Java 开发环境(JDK 8 或更高版本)

配置

1. Maven 依赖项

首先,在你的 Maven 项目中添加必要的依赖项:

<dependency>
    <groupId>com.hynnet</groupId>
    <artifactId>sqljdbc-chs</artifactId>
    <version>4.0.2206.100</version>
</dependency>
<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.2</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

2. application.properties

接着,在 application.properties 文件中配置数据源和 JPA 设置:

spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=quanlybanhang
spring.datasource.username=sa
spring.datasource.password=1
spring.jpa.hibernate.ddl-auto=create
spring.datasource.initialize=true
spring.jpa.database=SQL_SERVER

模型

Account.class

定义映射到数据库表 taikhoanAccount 模型类:

@Entity
@Table(name="taikhoan",uniqueConstraints=@UniqueConstraint(columnNames = {    "tendangnhap" }) )
public class Account {
    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    @NotNull

    private String tendangnhap;
    @NotNull
    private String matkhau;
    public Account(String tendangnhap, String matkhau) {
        super();
        this.tendangnhap = tendangnhap;
        this.matkhau = matkhau;
    }
    public Account() {
        super();
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getTendangnhap() {
        return tendangnhap;
    }

    public void setTendangnhap(String tendangnhap) {
        this.tendangnhap = tendangnhap;
    }
    public String getMatkhau() {
        return matkhau;
    }
    public void setMatkhau(String matkhau) {
        this.matkhau = matkhau;
    }   
}

DAO

AccountDAO

定义一个数据访问对象 (DAO) 接口,用于访问 Account 模型:

public interface AccountDAO extends JpaRepository<Account, Integer>{

}

服务

ServerAccount

定义一个服务类来处理业务逻辑:

@Service
public class ServerAccount {
    @Autowired
    AccountDAO server;
    public void them(Account acc){
        server.save(acc);   
    }
    public List<Account> lietke(){

        return server.findAll();    
    }
}

控制器

在控制器中调用 addAccount() 方法以添加帐户:

@Controller
public class Controller{
    @Autowired
    ServerAccount server;
    @RequestMapping("/addAccount")
    public String add(){
        server.addAccount();
        return "redirect:/";
    }
}

常见问题解答

1. 如何解决 "java.lang.NoClassDefFoundError" 异常?

此异常表明缺少 Spring JPA 库。请确保在 Maven 依赖项中已添加 spring-boot-starter-data-jpa 依赖项。

2. 如何在 Spring Boot 中使用 SQL Server?

application.properties 文件中配置数据源信息,并使用 com.microsoft.sqlserver.jdbc.SQLServerDriver 作为 JDBC 驱动程序类名。

3. 如何创建 JPA 实体类?

使用 @Entity 注释声明一个 Java 类,并使用 @Table 注释指定与之关联的数据库表。

4. 什么是 JPA DAO?

JPA DAO 是一个接口,它扩展了 JpaRepository,用于执行 CRUD(创建、读取、更新、删除)操作。

5. 如何在 Spring Boot 中注入服务?

使用 @Autowired 注释在控制器中注入服务,以便在你的代码中使用它们。

结论

通过遵循本文中的步骤,你将能够在 Spring Boot 项目中有效使用 JPA 和 SQL Server。本文提供了逐步指南、代码示例和常见问题解答,以帮助你实现 JPA。