zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Connected Components? Codeforces
    洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control
    洛谷 P4174 [NOI2006]最大获利 && 洛谷 P2762 太空飞行计划问题 (最大权闭合子图 && 最小割输出任意一组方案)
    表达式求值
    费用流(自用,勿看)
    二分图??(自用,勿看)
    C 标准库
    Linux-socket使用
    C 标准库
    C 标准库
  • 原文地址:https://www.cnblogs.com/develon/p/12719626.html
Copyright © 2011-2022 走看看