前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java ORM框架(三)

java ORM框架(三)

原创
作者头像
堕落飞鸟
发布2023-04-04 10:15:08
4100
发布2023-04-04 10:15:08
举报
文章被收录于专栏:飞鸟的专栏

Spring Data JPA

Spring Data JPA 是一个基于 Spring Framework 和 JPA 规范的 ORM 框架。它提供了一种简单的方式来访问和操作关系型数据库。

示例

以下是一个简单的 Spring Data JPA 示例,它演示了如何使用 JPA 注解将一个简单的 Java 对象映射到数据库表中。

首先,我们创建一个名为 Student 的 Java 类:

代码语言:javascript
复制
@Entity
@Table(name = "students")
public class Student {
 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    @Column(name = "name")
    private String name;
 
    @Column(name = "age")
    private int age;
 
    // Getters and setters
}

然后,我们创建一个名为 StudentRepository 的接口来定义我们的数据访问方法:

代码语言:javascript
复制
public interface StudentRepository extends JpaRepository<Student, Long> {
}

在上面的接口中,我们继承了 JpaRepository 接口,并指定了 Student 类作为实体类和 Long 类作为主键类型。

最后,我们可以使用以下代码来访问数据库:

代码语言:javascript
复制
@Configuration
@EnableJpaRepositories(basePackages = "com.example")
public class AppConfig {
 
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("myuser");
        dataSource.setPassword("mypassword");
        return dataSource;
    }
 
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
        entityManagerFactory.setDataSource(dataSource());
        entityManagerFactory.setPackagesToScan("com.example");
        entityManagerFactory.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
        entityManagerFactory.setJpaProperties(jpaProperties());
        return entityManagerFactory;
    }
 
    @Bean
    public JpaTransactionManager transactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
        return transactionManager;
    }
 
    private Properties jpaProperties() {
        Properties properties = new Properties();
        properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
        properties.setProperty("hibernate.hbm2ddl.auto", "update");
        properties.setProperty("hibernate.show_sql", "true");
        properties.setProperty("hibernate.format_sql", "true");
        return properties;
    }
 
}

在上面的代码中,我们定义了一个名为 AppConfig 的类,用于配置 Spring Data JPA。首先,我们定义了一个名为 dataSource 的方法,用于创建 DataSource 对象并设置数据库连接参数。然后,我们定义了一个名为 entityManagerFactory 的方法,用于创建 LocalContainerEntityManagerFactoryBean 对象并设置实体类扫描包、JPA 供应商适配器和 JPA 属性。最后,我们定义了一个名为 transactionManager 的方法,用于创建 JpaTransactionManager 对象并设置 EntityManagerFactory 对象。

我们可以使用以下代码来访问数据库:

代码语言:javascript
复制
@SpringBootApplication
public class App implements CommandLineRunner {
 
    @Autowired
    private StudentRepository studentRepository;
 
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
 
    @Override
    public void run(String... args) throws Exception {
        Student student = new Student();
        student.setName("John");
        student.setAge(25);
 
        studentRepository.save(student);
 
        List<Student> students = studentRepository.findAll();
 
        for (Student s : students) {
            System.out.println(s.getName());
        }
    }
 
}

在上面的代码中,我们创建了一个名为 App 的 Spring Boot 应用程序,并使用 CommandLineRunner 接口来定义应用程序启动时要执行的代码。在 run 方法中,我们首先创建一个 Student 对象,并使用 studentRepository 的 save 方法将该对象保存到数据库中。接着,我们使用 studentRepository 的 findAll 方法获取所有学生对象,并使用 foreach 循环遍历每个学生对象并输出其姓名。最后,我们可以使用以下命令启动应用程序:

代码语言:javascript
复制
mvn spring-boot:run

以上就是 Spring Data JPA 的一个简单示例。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring Data JPA
    • 示例
    相关产品与服务
    关系型数据库
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档