前言:

1,业务需求:使用原生的hibernate连接数据库,数据来源是两个数据库,并且为了后期维护,需要将数据库账号密码重hibernate.cfg.xml中抽离出来,放到properties文件中读取

2,网上有很多教程,说是hibernate进行配置,实质上是jpa

3,本文章适合对hibernate基本使用有了解的人

4,由于笔记本上只有一个数据库,所以模拟过程中有些不严谨,两个数据库连接,连的是同一个数据库,但过程是这么个过程

5,这里没有将与数据库相关的对象注入到spring容器中。

1,引入hibernate的pom.xml文件

2,编写hibernate.cfg.xml文件

3,编写hibernate.properties文件

4,编写实体类

5,编写测试案例

pom.xml   :这里有其它与本文无关的内容,根据需求进行删除

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>demo2</artifactId><version>0.0.1-SNAPSHOT</version><name>demo2</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.3.7.RELEASE</spring-boot.version></properties><dependencies><!--spring的web服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--便于生成set方法的lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--test模块--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><!--前端模板--><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf</artifactId><version>3.0.12.RELEASE</version></dependency><!--springboot整合前端模板--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!--springboot整合jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--mysql连接驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version><scope>runtime</scope></dependency><!-- springboot整合mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><!-- 操作Excel文件--><dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6</version></dependency><!-- hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.7.RELEASE</version><configuration><mainClass>com.example.demo2.Demo2Application</mainClass></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

hibernate1.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration><!-- 配置数据库连接 connection --><session-factory><!-- 数据库驱动 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- 数据库方言 MySQL --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><mapping class="com.example.demo2.pojo.Student" /></session-factory>
</hibernate-configuration>

hibernate2.cfg.xml  内容与上面的一样,我电脑上只有一个数据库只有这样模拟了,没办法

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration><!-- 配置数据库连接 connection --><session-factory><!-- 数据库驱动 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- 数据库方言 MySQL --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><mapping class="com.example.demo2.pojo.Student" /></session-factory>
</hibernate-configuration>

hibernate1.properties


hibernate.connection.url=jdbc:mysql://localhost:3306/test?severTimezone=UTC&useUnicode=true&characterEncoding=utf-8
hibernate.connection.password=123
hibernate.connection.username=root

hibernate2.properties  内容与上面的一样,我电脑上只有一个数据库只有这样模拟了,没办法


hibernate.connection.url=jdbc:mysql://localhost:3306/test?severTimezone=UTC&useUnicode=true&characterEncoding=utf-8
hibernate.connection.password=123
hibernate.connection.username=root

实体类 student.class

package com.example.demo2.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.*;@AllArgsConstructor
@NoArgsConstructor
@Data@Entity
@Table()
public class Student {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;private String name;private String password;
}

测试代码 test1.class

package com.example.demo2;import com.example.demo2.pojo.Student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.query.NativeQuery;
import org.junit.jupiter.api.Test;
import java.util.List;public class Test1 {public static StandardServiceRegistry registry1;public static Session session1;public static SessionFactory factory1;public static StandardServiceRegistry registry2;public static Session session2;public static SessionFactory factory2;static {registry1=new StandardServiceRegistryBuilder().configure("hibernate1.cfg.xml").loadProperties("hibernate1.properties").build();factory1=new MetadataSources(registry1).buildMetadata().buildSessionFactory();session1=factory1.openSession();registry2=new StandardServiceRegistryBuilder().configure("hibernate2.cfg.xml").loadProperties("hibernate2.properties").build();factory2=new MetadataSources(registry2).buildMetadata().buildSessionFactory();session2=factory1.openSession();}@Testpublic void getStudent1(){//两个session是不同的,他们是有不同的工厂创建出来的System.out.println(session1==session2);NativeQuery nativeQuery1 = session1.createSQLQuery("select * from student").addEntity(Student.class);List<Student> list1 = nativeQuery1.list();if (!list1.isEmpty())for (Student student:list1)System.out.println(student);session1.close();}@Testpublic void getStudent2(){NativeQuery nativeQuery2 = session2.createSQLQuery("select * from student").addEntity(Student.class);List<Student> list2 = nativeQuery2.list();if (!list2.isEmpty())for (Student student:list2)System.out.println(student);session2.close();}}

测试结果:

springboot+hibernate如何简单配置多个数据源相关推荐

  1. SpringBoot入门之简单配置

    今天下载了<JavaEE开发的颠覆者SpringBoot实战>这本书,发现Spring还有好多遗漏的部分,算是又恶补了一下,今天主要是学习下SpringBoot的配置. 一.基本配置 1. ...

  2. SpringBoot2/SpringBoot/Java动态数据源配置、动态连接池配置、多数据源负载均衡

    Java动态数据源配置.动态连接池配置.多数据源负载均衡 大家好,今天给大家推荐一个自产的连接池插件.废话不多说,本文接口分为以下主题: 1. 插件开发背景: 2. 插件提供的能力: 3. 插件的使用 ...

  3. springboot开启debug日志_SpringBoot日志快速上手简单配置

    默认配置 日志级别从低到高分为: TRACE < DEBUG < INFO < WARN < ERROR < FATAL. 如果设置为 INFO ,则低于 INFO 的信 ...

  4. SpringBoot+layui实现简单登录(项目创建+前后端配置)

    后端技术 开发工具 IDEA Java 1.8 项目构建 spring boot 2.6.7 项目管理 maven 3.6.3 持久层 mybatis-plus 3.5.0 数据库 MySQL 8.0 ...

  5. springboot配置多个数据源(两种方式)

    在我们的实际业务中可能会遇到:在一个项目里面读取多个数据库的数据来进行展示,spring对同时配置多个数据源是支持的. 本文中将展示两种方法来实现这个功能. springboot+mybatis 第一 ...

  6. springboot+jpa 实现不同数据库的多数据源配置(坑整理)

    在搭建springboot+jpa 实现不同数据库的多数据源配置过程中会遇到很多坑, SpringBoot引入mysql源的pom.xml等的配置:https://www.jianshu.com/p/ ...

  7. springboot profile_SpringBoot简单配置

    使用Spring Boot,配置工作将会变得更加简单,我们只需要在application.properties中定义属性,然后在代码中直接使用@Value注入即可. 如下: book.author=x ...

  8. Springboot环境下mybatis配置多数据源配置

    mybatis多数据源配置(本文示例为两个),方便实现数据库的读写分离,分库分表功能 本文基于springboot2进行的配置,如版本为springboot1系列则需修改yml的配置(在文末附带) m ...

  9. SpringBoot配置mybatis多数据源(包含单数据源)最终解决方案,带源码

    贴上我的github: https://github.com/mx342/testSpringbootMutipartDatasource.git 具体项目文件请查看github上面的项目 # tes ...

最新文章

  1. 图像边缘检测--OpenCV之cvCanny函数
  2. com.android.vivi删除,vivi命令详解
  3. 有了Gradle,还会选Maven吗?
  4. 使用CFree调用Win32 LoadLibrary 简单示例
  5. 百度2011招聘笔试题+答案解析
  6. java连接linux服务器执行shell命令(框架分析+推荐)
  7. post 请求 argument type mismatch_Flask-RESTful 请求解析
  8. python身份证号掩盖出生日期的代码_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...
  9. 设计模式 - (3)抽象工厂模式(创建型)
  10. 有朋自远方来——阿里软件专家作客武汉博文
  11. PDF虚拟打印机怎么虚拟打印
  12. GP数据库(Greenplum)单机版安装
  13. java-遍历Json
  14. 苏州真不能成为一线城市?
  15. python一张纸超过8848_「一张纸的厚度」JavaScript问题:一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米 - seo实验室...
  16. Lmp7721通过跨阻运放方式采集荧光信号踩坑
  17. Android自定义人脸识别框,android自定义虹软人脸识别框/人脸抓拍框/人脸追踪框...
  18. 共享锁和排它锁的区别
  19. 读书笔记:杨绛《我们仨》
  20. 明星为啥选嫁官家富家?

热门文章

  1. TI 模数ADC128S022芯片的应用例程
  2. android verticalviewpager 下拉刷新 上拉加载_设计规范 | 详解组件控件结构体系:加载类...
  3. linux系统运维核心笔试题-2020年9月1日最新
  4. android 单行文本滚动,android TextView 容纳不下内容,让字向左滚动的办法
  5. input回退消失 vue_vue中iE11 input select使用backspace使浏览器回退解决-Go语言中文社区...
  6. 【庖丁解牛】如何解决wordpress安装主题或者插件时候提示:“安装失败:无法创建目录”的问题
  7. 微信/企业微信-本地(MAC)VUE项目调用JS-SDK,开发测试环境搭建
  8. Vue05之ElementUI入门+nodejs环境搭建+运行nodejs项目
  9. CAN控制器总线错误分析之CAN节点BusOff恢复过程分析与测试
  10. 西北工业大学计算机专业课考什么,2020西北工业大学计算机考研初试科目、参考书目、招生人数...