跳转至

Spring Boot数据库访问

定义

Spring Boot提供了强大的数据库访问支持,通过Spring Data JPA、MyBatis等框架实现数据持久化。它简化了数据库操作的配置和实现,提供了自动配置、事务管理等功能。

作用

Spring Boot的数据库访问支持带来以下好处: 1. 简化数据库配置 2. 提供统一的数据访问接口 3. 自动管理数据库连接池 4. 支持多种数据库类型 5. 简化事务管理

例子

JPA实体类

@Entity
@Table(name = "users")
@Data
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String username;

    @Column(nullable = false)
    private String email;

    @Column(name = "created_at")
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
        createdAt = LocalDateTime.now();
    }
}

数据访问层

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByUsernameContaining(String username);

    @Query("SELECT u FROM User u WHERE u.email = :email")
    Optional<User> findByEmail(@Param("email") String email);

    @Modifying
    @Query("UPDATE User u SET u.username = :username WHERE u.id = :id")
    void updateUsername(@Param("id") Long id, @Param("username") String username);
}

服务层

@Service
@Transactional
public class UserService {

    @Autowired
    private UserRepository userRepository;

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

    public User updateUser(Long id, User user) {
        User existingUser = userRepository.findById(id)
            .orElseThrow(() -> new UserNotFoundException("User not found: " + id));

        existingUser.setUsername(user.getUsername());
        existingUser.setEmail(user.getEmail());

        return userRepository.save(existingUser);
    }

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

图表说明

graph TD
    subgraph Spring Boot数据库访问架构
        subgraph 数据访问层
            repo[Repository]
            entity[Entity]
        end

        subgraph 服务层
            service[Service]
            transaction[事务管理]
        end

        subgraph 数据库
            pool[连接池]
            tx[事务]
        end

        subgraph ORM框架
            jpa[JPA]
            mybatis[MyBatis]
        end
    end

    repo --> entity
    service --> repo
    service --> transaction
    transaction --> tx
    tx --> pool
    repo --> jpa
    repo --> mybatis

详细说明

数据库访问方式

  1. JPA:Java持久化API
  2. MyBatis:SQL映射框架
  3. JDBC:Java数据库连接
  4. Spring Data:数据访问抽象

事务管理

  1. 声明式事务:使用@Transactional注解
  2. 编程式事务:使用TransactionTemplate
  3. 事务传播行为:REQUIRED、REQUIRES_NEW等
  4. 事务隔离级别:READ_COMMITTED、SERIALIZABLE等

数据库配置

  1. 数据源配置:连接池设置
  2. JPA配置:实体扫描、方言设置
  3. MyBatis配置:映射文件、类型别名
  4. 多数据源配置:主从数据库

注意事项

  1. 连接池配置
  2. 事务管理
  3. SQL优化
  4. 数据安全
  5. 性能监控

    Spring Bootのデータベースアクセス機能は、アプリケーションのデータ永続化を効率化します。JPAやMyBatisなどのフレームワークを統合し、シンプルな設定で強力なデータアクセスを実現します。