使用idea构建Hibernate5项目
使用工具:IntelliJ IDEA 2017.2.5 x64
MySql-8.0.1
hibernate-release-5.3.1.Final
导入的jar包:

以及连接MySql的jdbc包、和log4j

hibernate配置文件:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/learn?useSSL=false&serverTimezone=GMT%2B8</property>
<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="connection.username">root</property>
<property name="connection.password">970603</property>
<property name="show_sql">true</property> <mapping class="com.entity.ItemsEntity"/>
<mapping resource="com/entity/ItemsEntity.hbm.xml"/>
<mapping class="com.entity.OrderdetailEntity"/>
<mapping resource="com/entity/OrderdetailEntity.hbm.xml"/>
<mapping class="com.entity.OrdersEntity"/>
<mapping resource="com/entity/OrdersEntity.hbm.xml"/>
<mapping class="com.entity.UserEntity"/>
<mapping resource="com/entity/UserEntity.hbm.xml"/> </session-factory>
</hibernate-configuration>
其中的解释
Hibernate配置文件
- Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性
- 每个Hibernate配置文件对应一个Configuration对象
- Hibernate配置文件可以有两种格式:hibernate.properties 和 hibernate.cfg.xml
- connection.url:数据库URL
- connection.username:数据库用户名
- connection.password:数据库用户密码
- connection.driver_class:数据库JDBC驱动
- dialect:配置数据库的方言,根据底层的数据库不同产生不同的语句,Hibernate会针对数据库的特性在访问时进行优化
- hibernate.c3p0.max_size:数据库连接池的最大连接数
- hibernate.c3p0.min_size:数据库连接池的最小连接数
- hibernate.c3p0.acquire_increment:当数据库连接池中的连接耗尽时,同一时刻获取多少个数据库连接
- hibernate.c3p0.timeout:数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁
- hibernate.c3p0.idle_test_period:表示连接池检测线程多长时间检测一次池内的所有连接对象是否超时。连接池本身不会把自己从连接池中移除,而是专门有有一个线程按照一定的时间间隔来做这件事,这个线程通过比较连接对象最后一次被使用时间和当前时间差来和timeout做对比,进而决定是否销毁这个连接对象。
- hibernate.c3p0.max_statements:缓存Statement对象的数量
- show_sql:是否将运行期生成的SQL输出到日志以供调试。取值true/fause
- format_sql:是否将SQL转化为格式良好的SQL。取值true/fause
- hbm2ddl.auto:在启动和停止时自动创建,更新或删除数据库模式。取值create/update/create-drop/validate
- hibernate.jdbc.fetch_size
- hibernate.jdbc.batch_size
<!-- 设定JDBC的Statement 读取数据的时候每次从数据库中取出的记录条数-->
<property name="hibernate.jdbc.fetch_size">100</property> <!-- 设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小 -->
<property name="hibernate.jdbc.batch_size">30</property
hibernate-release-5.2.12.Final\lib\optional\c3p0
-hibernate.c3p0.max_size:数据库连接池的最大连接数
-hibernate.c3p0.min_size:数据库连接池的最小连接数
-hibernate.c3p0.acquire_increment:当数据库连接池中的连接耗尽时,同一时刻获取多少个数据库连接
-hibernate.c3p0.timeout:数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁
-hibernate.c3p0.idle_test_period:表示连接池检测线程多长时间检测一次池内的所有连接对象是否超时。连接池本身不会把自己从连接池中移除,而是专门有有一个线程按照一定的时间间隔来做这件事,这个线程通过比较连接对象最后一次被使用时间和当前时间差来和timeout做对比,进而决定是否销毁这个连接对象。
-hibernate.c3p0.max_statements:缓存Statement对象的数量
Log4j的配置文件
log4j.rootCategory=INFO, stdout , R
#标准输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#输出格式
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#文件路径
log4j.appender.R.File=learnHibernate.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
log4j.logger.com.neusoft=DEBUG
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
log4j.logger.org.displaytag=ERROR
log4j.logger.org.springframework=DEBUG
log4j.logger.com.ibatis.db=WARN
log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN
#hibernate的配置
log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG
#log4j.logger.org.logicalcobwebs=WARN
然后idea连接数据库learn,通过持久化工具生成hibernate的表文件类和xml映射文件。
对hibernate进行封装
package com.utils; import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry; /**
* @author hyp
* Project name is LearnHibernate
* Include in com.utils
* hyp create at 2018/7/25
**/
public class HibernateUtil {
public static final SessionFactory sessionFactory;
//创建sessionFactory
static
{
try
{
// 采用默认的hibernate.cfg.xml来启动一个Configuration的实例
Configuration cfg = new Configuration()
.configure();
// 以Configuration实例来创建SessionFactory实例
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties()).build();
sessionFactory = cfg.buildSessionFactory(serviceRegistry);
}
catch (Throwable ex)
{
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
} // ThreadLocal可以隔离多个线程的数据共享,因此不再需要对线程同步
public static final ThreadLocal<Session> session
= new ThreadLocal<Session>();
//创建Session
public static Session currentSession()
throws HibernateException
{
//通过线程对象.get()方法安全创建Session
Session s = session.get();
// 如果该线程还没有Session,则创建一个新的Session
if (s == null)
{
s = sessionFactory.openSession();
// 将获得的Session变量存储在ThreadLocal变量session里
session.set(s);
}
return s;
}
//关闭Session
public static void closeSession()
throws HibernateException
{
Session s = session.get();
if (s != null) {
s.close();
}
session.set(null);
} }
在接下来是创建DAO类,并对DAO类进行测试。
使用idea构建Hibernate5项目的更多相关文章
- 使用EXtjs6.2构建web项目
一.项目简介 众所周知ext是一款非常强大的表格控件,尤其是里边的grid为用户提供了非常多的功能,现在主流的还是用extjs4.0-4.2,但是更高一点的版本更加符合人的审美要求.因此,在今天咱们构 ...
- 基于dubbo构建分布式项目与服务模块
关于分布式服务架构的背景和需求可查阅http://dubbo.io/.不同于传统的单工程项目,本文主要学习如何通过maven和dubbo将构建分布项目以及服务模块,下面直接开始. 创建项目以及模块 ...
- Jenkins中构建Testcomplete项目的方法介绍
Jenkins的部署在上一篇随笔中已经和大家介绍了,下面我们介绍一下再Jenkins中构建testcomplete项目.我这里使用的是Testcomplete11,下面详细介绍一下构建步骤. 1.Je ...
- maven - Eclipse构建maven项目
前面的博文已经介绍了如何安装maven,本文将记录如何在Eclipse下构建maven项目. 一.Eclipse maven插件安装 关于安装Eclipse maven插件,网上有很多方法,这里推荐一 ...
- vue-cli快速构建Vue项目
vue-cli是什么? vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. vue-cli怎么使用? 安装vue-cli之前,需要先装好vue 和 webpack npm i ...
- 【转】使用Eclipse构建Maven项目 (step-by-step)
安装eclipse 及配置maven时,参考的资料!!! from:http://blog.csdn.net/qjyong/article/details/9098213 Maven这个个项目管理和构 ...
- Eclipse构建Maven项目
1. 安装m2eclipse插件 要用Eclipse构建Maven项目,我们需要先安装meeclipse插件 点击eclipse菜单栏Help->Eclipse Marketpl ...
- 使用Maven构建Android项目
http://www.ikoding.com/build-android-project-with-maven/ 之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着 ...
- 使用Eclipse构建Maven项目 (step-by-step)
Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包.本文仅对Eclipse中如何安装.配置和使用Maven进行了介绍.完全step by step. 如果觉得本文 ...
随机推荐
- HDU-1160_FatMouse's Speed
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Sp ...
- Linus 本尊也来了!为什么 KubeCon 越来越火了?
2015年11月,第一届 KubeCon 在美国旧金山开始的时候,还只是个200人的小会议,2019年的7月,KubeCon 第二次在中国举办,就有 3500 多位云原生和开源领域工程师齐聚一堂. 连 ...
- MyBatis动态批量插入、更新Mysql数据库的通用实现方案
一.业务背景 由于需要从A数据库提取大量数据同步到B系统,采用了tomikos+jta进行分布式事务管理,先将系统数据源切换到数据提供方,将需要同步的数据查询出来,然后再将系统数据源切换到数据接收方, ...
- 2019-9-18-WPF-笔刷绑定不上可能的原因
title author date CreateTime categories WPF 笔刷绑定不上可能的原因 lindexi 2019-09-18 09:46:14 +0800 2019-9-18 ...
- ROW_NUMBER(),不允许并列名次、相同值名次不重复,结果如123456……
将score按ID分组排名:row_number() over(partition by id order by score desc) 将score不分组排名:row_number() over(o ...
- react+antd 点击分页为上次操作结果
最近项目中在使用antd的分页组件时发生了第一次点击分页无变化,再次点击时数据为上一次的分页结果,代码如下: setPageIndex = (pagination)=> { const page ...
- 宝塔linux
宝塔linux linux 定时任务管理
- mysql数据库之单表查询
单标查询 单表查询语句 关键字执行的优先级 简单查询 where约束 group by 聚合函数 HAVING过滤 order by 查询排序 LIMIT限制查询的记录数 使用正则表达式查询 单表查询 ...
- 15个非常重要的Apache开源项目汇总
15个非常重要的Apache开源项目汇总 自1999年创立以来,Apache软件基金会如今已成了众多重要的开源软件项目之家.本文列举了15个多年来非常重要的Apache项目,这些项目不仅对开源运动来说 ...
- 【tensorflow】】模型优化(一)指数衰减学习率
指数衰减学习率是先使用较大的学习率来快速得到一个较优的解,然后随着迭代的继续,逐步减小学习率,使得模型在训练后期更加稳定.在训练神经网络时,需要设置学习率(learning rate)控制参数的更新速 ...