zoukankan      html  css  js  c++  java
  • springboot 整合hibernate

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.ztsj</groupId>
      <artifactId>ztsj-demo</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.16.RELEASE</version>
      </parent>
      
       <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Edgware.SR4</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
      </dependencyManagement>
      <dependencies>
          <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
     
          <!-- 加了该配置文件 会自动启动数据库 -->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-data-jpa</artifactId>
          </dependency>
          
              
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
      </dependencies>
      
    </project>

    application.xml

    #mysql
    spring.datasource.url=jdbc:mysql://localhost:3306/ztsj?useunicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.max-idle=10
    spring.datasource.max-wait=10000
    spring.datasource.min-idle=5
    spring.datasource.initial-size=5
    # Specify the DBMS
    spring.jpa.database = MYSQL
    # Show or not log for each sql query
    spring.jpa.show-sql = true
    # Hibernate ddl auto (create, create-drop, update)
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.database=mysql
    spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
    # stripped before adding them to the entity manager
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

    配置类

    package com.ims;

    import java.util.Properties;

    import javax.persistence.EntityManagerFactory;
    import javax.sql.DataSource;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
    import org.springframework.orm.jpa.JpaTransactionManager;
    import org.springframework.orm.jpa.JpaVendorAdapter;
    import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
    import org.springframework.orm.jpa.vendor.Database;
    import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
    import org.springframework.transaction.PlatformTransactionManager;

    @Configuration
    public class HibernateConfig {

    @Value("${spring.jpa.properties.hibernate.current_session_context_class}")
    public String current_session_context_class;
    @Autowired
    private DataSource dataSource;

    /* // 配置实体管理器工厂
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(
    DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
    LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean();
    // 注入数据源
    emfb.setDataSource(dataSource);
    // 注入jpa厂商适配器
    emfb.setJpaVendorAdapter(jpaVendorAdapter);
    // 设置扫描基本包
    emfb.setPackagesToScan("com.ims");
    return emfb;
    }*/

    @Bean
    public LocalSessionFactoryBean sessionFactoryBean() {
    LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
    sessionFactoryBean.setDataSource(dataSource);
    sessionFactoryBean.setPackagesToScan("com.ims");//dao和entity的公共包
    Properties properties = new Properties();
    properties.setProperty("hibernate.current_session_context_class", current_session_context_class);
    properties.setProperty("hibernate.current_session_context_class", "thread");
    sessionFactoryBean.setHibernateProperties(properties);
    return sessionFactoryBean;
    }

    @Bean
    public JpaVendorAdapter jpaVendorAdapter() {
    HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
    // 设置数据库类型(可使用org.springframework.orm.jpa.vendor包下的Database枚举类)
    jpaVendorAdapter.setDatabase(Database.MYSQL);
    // 设置打印sql语句
    jpaVendorAdapter.setShowSql(false);
    // 设置不生成ddl语句
    jpaVendorAdapter.setGenerateDdl(false);
    // 设置hibernate方言
    jpaVendorAdapter.setDatabasePlatform("org.hibernate.dialect.MySQL5Dialect");
    return jpaVendorAdapter;
    }


    // 配置jpa事务管理器
    @Bean
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    // 配置实体管理器工厂
    transactionManager.setEntityManagerFactory(emf);
    return transactionManager;
    }

    }

    使用sessionFactory

    @Autowired
    private EntityManagerFactory sessionFactory;


    public Session getSession() {
    // Session session = (Session)entityManager.getDelegate();
    // return session;
    return sessionFactory.unwrap(SessionFactory.class).getCurrentSession();
    }

  • 相关阅读:
    《C++ Primer》笔记string,vector
    《C++ Primer》笔记创建动态数组new,delete
    《C++ Primer》笔记迭代器iterator
    浅析jQuery基础框架
    linux常用命令
    Javascript常用对象详细讲解
    Javascript兼容多种浏览器
    Vim常用命令
    提高 web 应用性能之 JavaScript 性能调优
    jQuery LigerUI使用教程入门篇
  • 原文地址:https://www.cnblogs.com/bignew/p/12853809.html
Copyright © 2011-2022 走看看