SSH框架搭建之配置数据源和会话工厂

一、基础环境

1、Windows10、Java17、Maven3.8.8、Tomcat9.0.76、IDEA2022.3.3

2、已完成Maven项目的创建

2、已完成Struts2、Spring、Hibernate依赖配置

3、已完成实体类创建、Hibernate映射配置、第一种方式的sessionFactory配置,并且以上配置已测试通过

二、框架版本

struts2:2.5.31

spring:5.3.27

hibernate:5.6.15.Final

三、数据源和会话工厂配置

方法一:定义独立的Hibernate配置文件(包括数据源信息的配置和实体类映射文件的引用),由Spring导入并创建会话工厂。

方法二:在Spring配置文件中进行集中配置

1、创建数据库连接属性文件,配置数据库连接信息

2、加载数据库连接属性文件

3、配置数据源dataSource

4、配置会话工厂(包含数据源、实体类映射文件(配置的方式有三种)、hibernateProperties等)

方法一:

1、配置hibernate.cfg.xml

2、导入hibernate.cfg.xml创建会话工厂

方法二:

1、使用C3P0连接池进行配置

1.1、创建数据库连接属性文件,配置数据库连接信息

进入C3P0官网,地址:https://www.mchange.com/projects/c3p0/

下载项目,将项目中的c3p0.properties复制到目标项目中

启用c3p0.properties中的参数

1.2、配置目标项目的applicationContext.xml文件

1.2.1、注释掉方法一的代码

1.2.2、加载数据库连接属性文件、配置数据源、创建会话工厂

代码如下:   

<!-- 第二种方式:在Spring配置文件中集中配置数据源和会话工厂 -->

<!-- 配置c3p0连接池:加载数据库属性文件、配置数据源 -->

<context:property-placeholder location="classpath:c3p0.properties" />

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

    <property name="driverClass" value="${c3p0.driverClass}"/>

    <property name="jdbcUrl" value="${c3p0.jdbcUrl}"/>

    <property name="user" value="${c3p0.user}"/>

    <property name="password" value="${c3p0.password}"/>

    <property name="minPoolSize" value="${c3p0.minPoolSize}"/>

    <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>

</bean>

<!-- 配置sessionFactory -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

    <property name="dataSource" ref="dataSource"/>

    <!-- 指定实体类映射文件 -->

    <property name="mappingResources">

        <list>

            <value>demo/employee/entity/employee.hbm.xml</value>

        </list>

    </property>

    <!-- hibernate属性配置,如数据库方言、显示实际操作数据库时的SQL、规范SQL排版 -->

    <property name="hibernateProperties">

        <value>

            hibernate.dialect=org.hibernate.dialect.MySQLDialect

            hibernate.show_sql=true

            hibernate.format_sql=true

        </value>

    </property>

</bean>

1.3、测试配置是否正确

2、使用Hikaricp连接池进行配置

2.1、查看hikaricpHibernate中的配置

进入GitHub中的hikaricp项目,地址:https://github.com/brettwooldridge/HikariCP

图中的“com.mysql.jdbc.jdbc2.optional.MysqlDataSource”根据MySQL驱动的版本会有所区别,8.0.33应使用“com.mysql.cj.jdbc.MysqlDataSource”。

2.2、添加数据库属性配置文件database.properties

 代码如下:

jdbc.url=jdbc:mysql://192.168.127.128:3306/employees?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai

jdbc.username=root

jdbc.password=123456

2.3、注释掉c3p0连接池配置,并配置hikaricp

代码如下:

<!-- 配置hikaricp连接池:加载数据库属性文件、配置数据源 -->

<context:property-placeholder location="classpath:database.properties" />

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">

    <property name="poolName" value="springHikariCP" />

    <property name="connectionTestQuery" value="SELECT 1" />

    <property name="dataSourceClassName" value="com.mysql.cj.jdbc.MysqlDataSource" />

    <property name="minimumIdle" value="${jdbc.minimumIdle}" />

    <property name="maximumPoolSize" value="${jdbc.maximumPoolSize}" />

    <property name="dataSourceProperties">

        <props>

            <prop key="url">${jdbc.url}</prop>

            <prop key="user">${jdbc.username}</prop>

            <prop key="password">${jdbc.password}</prop>

        </props>

    </property>

</bean>

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">

    <constructor-arg ref="hikariConfig" />

</bean>

<!-- 配置sessionFactory -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

    <property name="dataSource" ref="dataSource"/>

    <!-- 指定实体类映射文件 -->

    <property name="mappingResources">

        <list>

            <value>demo/employee/entity/employee.hbm.xml</value>

        </list>

    </property>

    <!-- hibernate属性配置,如数据库方言、显示实际操作数据库时的SQL、规范SQL排版 -->

    <property name="hibernateProperties">

        <value>

            hibernate.dialect=org.hibernate.dialect.MySQLDialect

            hibernate.show_sql=true

            hibernate.format_sql=true

        </value>

    </property>

</bean>

2.4、测试配置是否正确

三、解决控制台的标红提示

org.log4j.slf4j.impl.Static加载类失败

在pom.xml文件中引入log4j-slf4j-impl依赖,解决标红

四、配置日志打印

1、在项目resource目录下新建log4j2.xml文件

2、将“HikariCP-dev\src\test\resources\log4j2-test.xml”文件中的内容复制到新建的log4j2.xml文件中

 代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration status="OFF">

    <appenders>

        <Console name="Console" target="SYSTEM_ERR">

            <PatternLayout pattern="%d{ABSOLUTE_MICROS} [seq%5sn] [%-40.40t] %-5level %-20c{1} - %msg%n"/>

        </Console>

    </appenders>

    <Loggers>

        <Root level="debug">

            <AppenderRef ref="Console"/>

        </Root>

    </Loggers>

</configuration>

3、测试是否生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值