Hibernate 编程

前言

这篇文章主要讲述如何使用Kotlin语言编写集成Hibernate框架的Spring MVC后端API。

如何在Spring中集成Hibernate

  1. 配置数据源
    Spring提供了LocalSessionFactoryBean这个类,我们通过这个类配置Hibernate,从而可以在控制器中获得对Hibernate框架的主要接口SessionFactory的依赖注入。
    在此之前我们需要一个数据源实例,它应该实现接口javax.sql.DataSource,可以使用Tomcat DBCP,这是一种开源的数据库连接池实现,提供了BasicDataSource类。
    在Servlet配置类中注册bean:
    @Bean
    open fun initDataSource(): DataSource {
        return BasicDataSource().apply {
            with (JsonConfig("assets/config.json")) {
                driverClassName = get("db_driver")
                username = get("db_user")
                password = get("db_password")
                url = get("db_url")
            }
        }
    }
  1. 配置Hibernate
    向Spring应用程序上下文提供一个LocalSessionFactoryBeanbean实例:
    @Bean
    @Autowired
    open fun initSessionFactory(dataSource: DataSource): LocalSessionFactoryBean {
        return LocalSessionFactoryBean().apply {
            // 设置数据源
            setDataSource(dataSource)
            // 设置需要扫描的数据库实体类所在的包,这些类通过注解的方式表明要使用Hibernate进行持久化
            // 这些类可以使用的注解包括JPA的@Entity或@MappedSuperclass以及Hibernate的@Entity。
            setPackagesToScan("data")
            // 设置Hibernate参数
            hibernateProperties = Properties().apply {
                setProperty("hibernate.show_sql", "true") // 将hibernate生成的sql语句打印到控制台
                setProperty("hibernate.format_sql", "true") // 将hibernate生成的sql语句格式化(语法缩进)
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect") // 数据库方言, MySQL5.0+
                //setProperty("hibernate.hbm2ddl.auto", "update") // 自动更新实体类和数据库
            }
        }
    }
  1. 在控制器中使用SessionFactory依赖:
    @Autowired
    fun ctrl(factory: SessionFactory) {
        session: Session = factory.openSession()
    }

Hibernate 参数

  • hbm2ddl.auto
    可选值:create、create-drop、update、validate
create            启动时删数据库中的表,然后创建,退出时不删除数据表
create-drop       启动时删数据库中的表,然后创建,退出时自动删除所有表 
update            自动修改,如果表结构与实体类不一致,那么就修改表使它们一致,数据会保留 
validate          自动校验,如果表结构与实体类不一致,那么不做任何操作,报错 

依赖

  • 嵌入式Tomcat
  • Spring
  • Jackson json消息处理,MappingJackson2HttpMessageConverter依赖jackson
  • Hibernate
  • Tomcat DBCP 数据库连接池的一种开源实现
  • 具体数据库提供的JDBC驱动

参考

[Guide to Hibernate 4 with Spring] https://www.baeldung.com/hibernate-4-spring

原文地址:https://www.cnblogs.com/develon/p/12719626.html