【问题标题】:Can we insert data into tables without entity in spring boot?我们可以在spring boot中将数据插入没有实体的表中吗?
【发布时间】:2022-01-08 20:28:28
【问题描述】:

我的数据量很大,不创建Entity类可以直接插入数据库吗?

【问题讨论】:

  • 是的,通过sql插入语句
  • 您能解释一下为什么要使用 JPA 但不想创建实体类吗?
  • 实体类是 jpa 知道哪些表映射到您的数据的方式。所以不,没有实体的 jpa 不是一个选择。如果你有很多数据,那么 jdbc 无论如何可能是错误的选择。数据库具有更快的批量加载实用程序。
  • 如果你使用hibernatejpa使用不同的方法来操作数据是没有意义的,否则不要使用hibernate

标签: spring spring-boot hibernate


【解决方案1】:

您可以使用 JdbcTemplate 进行插入、更新、删除等操作。

使用 Java Config 会是:

@Configuration
public class DBConfig {

   @Bean
   public DataSource dataSource() {
      //create a data source
   }

   @Bean
   public JdbcTemplate jdbcTemplate() {
      return new JdbcTemplate(dataSource());
   }

   @Bean
   public TransactionManager transactionManager() {
      return new DataSourceTransactionManager(dataSource());
   }

}

您应该创建一个使用 JdbcTemplate 的存储库:

@Repository
public class JdbcSomeRepository implements SomeRepository {

   private final JdbcTemplate jdbcTemplate ;

   @Autowired
   public JdbcSomeRepository(JdbcTemplate jdbcTemplate) {
      this.jdbcTemplate = jdbcTemplate;
   } 

   @Override
   @Transactional 
   public int someUpdate(SomeType someValue, SomeOtherType someOtherValue) {
      return jdbcTemplate.update("INSERT INTO SomeTable(column1, column2) VALUES(?,?)", someValue, someOtherValue)
   }
}

您也可以直接在控制器中自动装配。


@Autowired
 JdbcTemplate jdbcTemplate ;

【讨论】:

  • Spring boot 已经配置了 JdbcTemplateDataSource 所以你根本不需要那个配置。
猜你喜欢
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 2021-08-08
  • 2021-09-25
  • 1970-01-01
相关资源
最近更新 更多