java ‌Hibernate jpa 联合开发 人工智能时代的工程搭建

第一步在构建时间就要选 web  jpa

大约有相关的依赖

 

第二步集成 Spring Data JPA + Hibernate
   1)在com.immmm下面建一个配置包 包名config  下面建一个配置文件 名为 JAPConfig

    2) 在com.immmm下面 还要建一个仓库类 repository  这个是存放对表操作的增删改方法的类,如下图所示

 

 

 

    3) 在resources 下面建一个数据库配置文件,这个和上面的repositroy 相近,但是位置不一样。这个和main 一级

    4)还要在com.immmm 下面建一个enitty 包 用于放数据对库表对应对象,。

备注一下,对应数据表的时候,有时候表是有下划画的,而对象命名是驼峰的,所以在定义表对象的时候遇这到情问下要加注解@Columu

如下图如示:

因为表名是小写,对象是大写。也要注解下

 

 然后就定义数据连接的引挚

 

完成代码如下:

package com.imooc.config;

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; // 导入用于构建数据源的工具类
import org.springframework.boot.context.properties.ConfigurationProperties; // 导入用于绑定配置文件属性的注解
import org.springframework.context.annotation.Bean; // 导入用于声明Spring Bean的注解
import org.springframework.context.annotation.Configuration; // 导入用于标记配置类的注解
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; // 导入用于启用JPA仓库的注解
import org.springframework.orm.jpa.JpaTransactionManager; // 导入用于JPA事务管理的类
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; // 导入用于创建EntityManagerFactory的工厂类
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; // 导入Hibernate作为JPA供应商的适配器
import org.springframework.transaction.PlatformTransactionManager; // 导入事务管理器接口
import org.springframework.transaction.annotation.EnableTransactionManagement; // 导入用于启用事务管理的注解

import javax.sql.DataSource; // 导入数据源接口

@Configuration // 标记该类为Spring配置类
@EnableJpaRepositories(basePackages = "com.inggg.repository") // 启用JPA仓库支持,并指定仓库接口所在的包路径
@EnableTransactionManagement // 启用Spring事务管理
public class JPAConfig {

    // 定义数据源Bean,并从application.properties中加载配置
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource") // 绑定配置文件中以spring.datasource开头的属性
    public DataSource dataSource() {
        return DataSourceBuilder.create().build(); // 使用DataSourceBuilder构建数据源
    }

    // 定义EntityManagerFactory Bean
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {
        HibernateJpaVendorAdapter jpaVendor = new HibernateJpaVendorAdapter(); // 创建Hibernate作为JPA供应商的适配器
        jpaVendor.setGenerateDdl(false); // 设置是否自动生成DDL(数据库表结构)

        LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean(); // 创建EntityManagerFactory工厂
        entityManagerFactory.setDataSource(dataSource()); // 设置数据源
        entityManagerFactory.setJpaVendorAdapter(jpaVendor); // 设置JPA供应商适配器
        entityManagerFactory.setPackagesToScan("com.imgac.entity"); // 设置实体类所在的包路径,用于扫描@Entity注解的类

        return entityManagerFactory; // 返回EntityManagerFactory工厂Bean
    }

    // 定义事务管理器Bean
    @Bean
    public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
        JpaTransactionManager transactionManager = new JpaTransactionManager(); // 创建JPA事务管理器
        transactionManager.setEntityManagerFactory(entityManagerFactory); // 设置EntityManagerFactory
        return transactionManager; // 返回事务管理器Bean
    }
}

 

配置数据库application.properties  的连配置如下

 

 

 执行运行

启动时验证框架会要求登陆如下图,这儿是需要更改的

 增加下面配置可以优化掉,

 编写第一个测试功能,在主入口中测试

集成章元测试

JUnit
H2内存数据库

现在我们开始写一个单元测试,但是每个章元测试类的方法注解都一样,所以我先搞一个空父类

 空父类之间,删除里面的方法

 

 以下是一个完整的单元测试,其中红色部份是断言

import org.junit.jupiter.api.Test; // 导入JUnit 5的测试注解
import static org.junit.jupiter.api.Assertions.assertEquals; // 导入assertEquals断言方法
import org.springframework.beans.factory.annotation.Autowired; // 导入@Autowired注解,用于自动注入依赖
import com.imooc.repository.UserRepository; // 导入UserRepository接口

// 继承ApplicationTests,这是一个集成测试基类
public class UserRepositoryTest extends ApplicationTests {

    @Autowired
    private UserRepository userRepository; // 自动注入UserRepository

    @Test // 标记这是一个测试方法
    public void testFindone() {
        User user = userRepository.findOne(1L); // 调用UserRepository的findOne方法,根据ID查找用户
        assertEquals("wali", user.getName()); // 断言查询到的用户的名字是否为"wali"
    }
}

 编写第一个接口演示  java spring  boot JPA 开发 

 

第一步根据数据库映射一个对象类,再设计一个前端响应的字段dta类,将数据库类转成响应前端类时,我们还要一个工具库  modelMapper   由于我们向前端响应时还里要将数据格式规范一下,所以我们再设计一个格式响应类

 

posted @ 2025-02-18 15:40  谢双元小号  阅读(19)  评论(0)    收藏  举报