Hibernate 总结2:配置方法

17.2:Java的Hibernate的配置和使用方法!(课程共8300字,10个代码举例) Hibernate是Java中一个重要的开源框架,可以帮助我们简化Java应用程序与数据库之间的交互。通过本课程的学习,我们可以掌握Hibernate的基本使用方法和一些注意事项,从而更加熟练地使用Hibernate来开发Java应用程序。 阅读详情

关于Struts2 + spring + hibernate进Q群: 130529143交流。
有偿技术支持Q群:
398162181 


注意:数据库基本配置信息(如数据库方言)参考:

hibernate-release-5.0.1.Final\project\etc\hibernate.properties  ;


1.加入相应的 *.jar包:

1.1 官方下载:hibernate-release-5.0.1.Final.zip,解压后得到:hibernate-release-5.0.1.Final 文件夹。

    hibernate-release-5.0.1.Final\lib\required\ 路径下所有jar包;

1.2 不同数据库连接所需的jdbc     *.jar包:

mysql:   mysql-connector-java-5.1.25-bin.jar   ;

oracle:  ojdbc14.jar ;

sqlserver:sqljdbc4.jar;

1.3 加入到lib下,并add to build path ;



2.配置hibernate.cfg.xml文件:

2.1 在类路径下新建  hibernate.cfg.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <!-- 配置连接数据库的基本信息 -->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate5</property>


<!-- 配置hibernate的基本信息 -->
<!-- hibernate所使用的数据库方言 -->
<property name="dialog">org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- 执行操作时是否在操作台打印SQL -->
<property name="show_sql">true</property>
<!-- 是否对SQL进行格式化 -->
<property name="format_sql">true</property>
<!-- 指定自动生成数据表的策略 create:每次运行都删除上一次的表,重新生成表,即使第二次没有任何改变; create-drop:SessionFactory一关闭,表就自动删除; 
update:若.hbm.xml文件和数据库中对应的数据表的表结构不同,Hibernate将更新数据表结构,但不会删除已有的行与列;这个属性最常用 
validate:会与数据库中的表进行比较,若.hbm.xml文件中的列在数据表中不存在,则抛出异常。 -->
<!-- 设置Hibernate自动生成表结构 -->
<property name="hbm2ddl.auto">update</property>
<!-- 设置Hibernate的事务隔离级别 -->
<property name="connection.isolation">2</property>
<!-- 删除对象后,使其OID置为null -->
<property name="use_identifier_rollback">true</property>


<!-- 配置c3p0数据源 

官方下载:hibernate-release-5.0.1.Final.zip,解压后得到:hibernate-release-5.0.1.Final 文件夹。

   hibernate-release-5.0.1.Final\lib\optional\c3p0路径下所有jar包;

加入配置:
hibernate.c3p0.max_size:数据库连接池的最大连接数
hibernate.c3p0.min_size:数据库连接持的最小连接数
hibernate.c3p0.aquire_increment:数据库连接池的连接耗尽时,同一时刻获取多少数据库连接
hibernate.c3p0.timeout:数据库连接池中连接对象在多长时间内没有连接过,就应该销毁
hibernate.c3p0.idle_test_period:表示连接池检测线程多长时间检测一次池内的所有连接对象是否超时。连接池本身不会把自己
从连接池中移除,而是专门有一个线程按照一定的时间间隔来做这件事。
这个线程通过将连接对象最后一次使用时间与当前时间的时间差来和timeout作对比,从而决定是否销毁这个连接对象。
hibernate.c3p0.max_statements:缓存Statement对象的数量

-->
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="c3p0.acquire_increment">2</property>
<property name="c3p0.idle_test_period">2000</property>
<property name="c3p0.timeout">50000</property>
<property name="c3p0.max_statements">10</property>
<!-- 下面这两个属性对mysql数据库无效, 但对oracle数据库有效 -->
<!-- 设定JDBC的statement读取数据的时候每次从数据库中取出的记录条数 -->
<property name="hibernate.jdbc.fetch_size">100</property>
<!-- 设定对数据库进行批量删除、批量更新和批量插入的时候的批次大小 -->
<property name="hibernate.jdbc.batch_size">30</property>


<!-- 需要关联的 hibernate 映射文件 .hbm.xml -->
<mapping resource="com/lixuan/hibernate/entities/n2n/Category.hbm.xml" />
<mapping resource="com/lixuan/hibernate/entities/n2n/Item.hbm.xml" />
</session-factory>
</hibernate-configuration>



3.生成实体类相应的 *.hbm.xml文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.lixuan.hibernate.entities.n2n">
    <class name="Category" table="CATEGORYS">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <!-- table: 指定中间表 -->
        <set name="items" table="CATEGORYS_ITEM">
            <key>
                <column name="C_ID" />
            </key>
            <!-- 使用many-to-many指定多对多的关联关系 
            column:Set集合中的持久化类在中间表的外键列的名称
            -->
            <many-to-many class="Item" column="I_ID"></many-to-many>
        </set>
    </class>
</hibernate-mapping>



4.将 *.hbm.xml文件引入到hibernate.cfg.xml文件中:

将3.中的  *.hbm.xml 加入 2.种的hibernate.cfg.xml。



5.配置c3p0数据源:

5.1 官方下载:hibernate-release-5.0.1.Final.zip,解压后得到:hibernate-release-5.0.1.Final 文件夹。

将hibernate-release-5.0.1.Final\lib\optional\c3p0路径下所有jar包添加到类路径下;

  5.2 在hibernate.cfg.xml文件中配置c3p0数据源 如 2 所示:

ibernate.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 对象的数量



6.hibernate缓存:

6.1 一级缓存:在Session中;

hibernate-release-5.0.1.Final.zip,解压后得到:hibernate-release-5.0.1.Final 文件夹。

   hibernate-release-5.0.1.Final\lib\optional\c3p0路径下所有jar包;

   6.2  二级缓存:在SessionFactory中;

1). 加入二级缓存插件的 jar 包及配置文件:

I. 复制   hibernate-release-5.0.1.Final\lib\optional\ehcache*.jar   到当前 应用的类路径下.
II. 复制  hibernate-release-5.0.1.Final\project\etc\ehcachexml       到当前 WEB 应用的类路径下


2). 配置 hibernate.cfg.xml 

I.   配置启用 hibernate 的二级缓存
<property name="cache.use_second_level_cache">true</property>


II.  配置hibernate二级缓存使用的产品
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>


III. 配置对哪些类使用 hibernate 的二级缓存
<class-cache usage="read-write" class="com.atguigu.hibernate.entities.Employee"/>

实际上也可以在 .hbm.xml 文件中配置对哪些类使用二级缓存, 及二级缓存的策略是什么. 


3). 集合级别的二级缓存的配置

I. 配置对集合使用二级缓存 :在hibernate.cfg.xml中配置:

<collection-cache usage="read-write" collection="com.atguigu.hibernate.entities.Department.emps"/>

也可以在 .hbm.xml 文件中进行配置

<set name="emps" table="GG_EMPLOYEE" inverse="true" lazy="true">
<cache usage="read-write"/>
  <key><column name="DEPT_ID" /></key>
            <one-to-many class="com.atguigu.hibernate.entities.Employee" />
</set>


II. 注意: 还需要配置集合中的元素对应的持久化类也使用二级缓存! 否则将会多出 n 条 SQL 语句. 


4). ehcache 的 配置文件: ehcache.xml


5).  查询缓存: 默认情况下, 设置的缓存对 HQL 及 QBC 查询时无效的, 但可以通过以下方式使其是有效的

I.  在 hibernate 配置文件中声明开启查询缓存

<property name="cache.use_query_cache">true</property>

II. 调用 Query 或 Criteria 的 setCacheable(true) 方法

III. 查询缓存依赖于二级缓存



关于Struts2 + spring + hibernate进Q群: 130529143交流。
有偿技术支持Q群:
398162181 





如何适配自定义激光雷达数据到LIO-SAM:解决ring和time参数缺失问题 本文详细解析了如何将非标准激光雷达(如速腾、Livox)适配到LIO-SAM框架中,重点解决ring和time参数缺失问题。提供了从源码修改到通用适配中间件的多层级解决方案,并包含实机测试与性能调优指南,帮助开发者高效完成雷达数据适配。 阅读详情

相关推荐

SLG大地图实战:从Tilemap到Shader的地表渲染与数据分层架构

本文深入探讨了SLG大地图开发中的关键技术挑战与解决方案,包括Tilemap系统的深度改造、地表渲染的Shader优化以及数据分层架构设计。通过实战案例,展示了如何实现视觉表现丰富、性能开销可控的SLG大地图,特别适合Unity开发者和游戏技术美术参考。

weixin_28693309的博客 517

hibernate 配置文件详细解析

xml version="1.0" encoding="UTF-8"?>           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">   hibernate-configu

ljl18566743868的博客 361

别再为模糊的3D重建头疼了!手把手教你用3DSlicer处理DICOM数据,搞定医学影像三维可视化

本文详细解析了医学影像三维重建中常见的模糊问题,并手把手教你使用3DSlicer处理DICOM数据,实现精准的三维可视化。从层厚设置到数据格式转换,再到重建算法选择和渲染参数微调,提供了一套完整的优化方案,特别适合临床医生和医学影像处理人员提升工作效率。

weixin_28693447的博客 246

Hibernate 参数设置

属性名 用途 hibernate.dialect 一个HibernateDialect类名允许Hibernate针对特定的关系数据库生成优化的SQL.取值full.classname.of.Dialect hibernate.show_sql 输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug。eg.true|false hibernate.format_sql 在log和conso...

thlzjfefe的博客 257

NT35310 LCD屏的初始化与图形显示实战:从画点到UI设计的完整指南

本文详细介绍了NT35310 LCD屏的初始化与图形显示实战,从硬件配置到UI设计全流程。内容包括8080总线连接、初始化序列、基础图形绘制算法、显示优化技巧以及UI框架实现,帮助开发者快速掌握TFT-LCD驱动开发技术,适用于工业控制和智能家居等嵌入式应用场景。

table的专栏 370

Win11桌面图标小箭头去除与恢复:解决任务栏关联错误的完整指南

本文提供了一份完整的Win11桌面图标小箭头去除与恢复指南,重点解决了因错误方法导致的任务栏关联错误问题。通过分析注册表中IsShortcut键值与Shell Icons的原理,推荐安全的“替换图标资源法”,并提供了可一键执行的批处理脚本,确保在美化桌面的同时不影响系统功能与默认应用设置。

weixin_29288313的博客 941

Hibernate事务和并发控制

Hibernate事务和并发控制                                           ++YONG原创,转载请注明1.    事务介绍:1.1.       事务的定义:事务就是指作为单个逻辑工作单元执行的一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性。1.2.       事务具有ACID属性:o 原子

Java之道 2万+

游戏服务器框架之跨服(一)

如今的游戏开发,不搞个跨服玩法都不好意思说在做游戏了(当然,也跟游戏类型有关,一些轻度休闲游戏可以排除在外)。跨服玩法的设计,可以进一步激发玩家追求高战力的虚荣心,也可以汇聚玩家数量,避免单服日活跃低呈现死服现象。 几种常见的跨服玩法拓扑结构 一,不同游戏服的玩家进入中立服务器进行战斗,例如跨服天梯类玩法。 游戏服有很多个节点,中心服务器也有很多节点。只要保证对战的双方同时进入同一个中心服游戏进程即可。 二,若干个游戏服组成一个社区,全部服务器包含多个社区,例如世界服玩法。 三,游戏服A玩

littleschemer的博客 5771

hibernate设置事物隔离级别

1、事物的概念 事物指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功 2、事物的四大特性 (1)原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL语句, 要么全部执行成功,要么全部执行失败。 (2)一致性(Consis...

白面小生的博客 2220

【无人机编队】基于matlab虚拟leader无人机编队仿真【含Matlab源码 3279期】

虚拟leader无人机编队仿真 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 835

喷涂机器人系列编程:ABB IRB 5500_(7).喷涂质量控制与优化

通过编程手段对ABB IRB 5500喷涂机器人进行质量控制和优化,可以显著提高喷涂的均匀性和附着力,减少涂层缺陷。具体的方法包括喷涂参数的调整、路径规划的优化、喷涂效果的检测与反馈,以及喷涂参数的动态调整。综合评估系统可以进一步确保喷涂质量的稳定性和一致性,帮助汽车制造企业提高产品质量和生产效率。

zhubeibei168的博客 851

我的Hibernate配置文件(附注释)

<?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> <session-fa

WanAkiko. 203

Altium Designer (AD) 设计软件高频面试题及参考答案(3万字长文)

在Altium Designer(AD)中,设计复用是一种关键的策略,它允许设计师在多个项目中重复使用经过验证的设计元素,如原理图符号、PCB布局、元器件封装和设计规则集。在Altium Designer (AD) 中,手动布线和交互式布线是PCB设计中常见的两种布线模式,它们提供了设计师对布线路径的直接控制,特别是在处理复杂或关键信号路径时尤为有用。在Altium Designer (AD) 中进行电路级仿真是一项重要的设计验证步骤,它允许设计师在实际制造之前对电路的行为进行预测和分析。

大模型大数据攻城狮的专栏 4781

struts2+hibernate+spring2.5用properties集成整合配置方法

在一些项目中可能需要用properties代替hibernate.cfg.xml数据库相关配置, 可以简化管理, 方便维护或者用于动态属性加载. 首先SSH三大框架中的jar包导入到项目中, 接下来进行配置:1.首先配置WEB.XML文件                 org.springframework.web.context.ContextLoaderListener        c

Mirson - 多一些分享, 多一些进步 1582

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

struts2和Hibernate的配置和一些用法

组长不在,我是来代写的欢迎来到组员代写系列本周学习内容Struts2部分:Hibernate部分:没了 欢迎来到组员代写系列 Hello,Everybody,这周我的组长NIAN不在所以由我来写这周的blog,实不相瞒这是我人生中第一次写blog,如有看着不爽的童鞋请直接close就OK了。 本周学习内容 Struts2和Hibernate的配置及使用方法(大标题就是,个人认为比较重要的做了代码演...

weixin_43659466的博客 307

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

hibenate5.1配置mysql_hibernate5.2的基本配置方法(详解)

目标:将Student实体对象加入数据库1、首先需要下载三个东西:hibernate,slf4j,mysql。2、分别取他们的包导入新建的项目中,我这里的版本是:hibernate-release-5.2.10里面lib目录下的required中的全部文件 slf4j-1.7.25下的受slf4j-nop-1.7.25.jar mysql的mysql-connector-java-5.1.42-b...

weixin_36331429的博客 154

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

配置SSH的一种实践方法(Spring,Struts2,Hibernate)

  近来做了一个小项目,用到了SSH,自己配了下,记录下怕以后忘了。       第一步当然下载建工程下JAR包,我用MAVEN,个人觉得比较方便。贴下我用的版本。     &lt;spring.version&gt;3.1.1.RELEASE&lt;/spring.version&gt; &lt;struts2.version&gt;2.3....

zlhades的专栏 137

struts2,hibernate4,spring3配置时有关问题汇总及解决方法

struts2,hibernate4,spring3配置时问题汇总及解决办法 1.java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor 缺少asm-3.3.jar 2.java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor 缺

hello 412

使用注释消除hibernate中配置文件 - Spring 2.5 JPA hibernate 使用方法的点滴整理(一)使用注释消除hibernate中配置文件...

以下几篇文章简单的介绍一下jpa 和 spring2.5 hibernate3.2 整合配置的一个过程。纯粹个人经验只谈。如果有错误,请各位留言指出。 本系列重点是涉及 配置过程 ,对注释的用法不多介绍。 注释语法越来越多的被业界所使用,并且注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。注释和 J...

iteye_9118的博客 128

配置SSH的一种实践方法(Spring,Struts2,Hibernate) 续

  SPRING: 这里主要用到是IOC的东西,所以主要说和struts,hibernate的集成。重点看一下applicationContext.xml怎么配。 为了以后少写点配置,前面就得多配点:) 根目录beans 里面加个属性:     default-autowire="byName" 再加上自动扫描的。     &lt;aop:aspectj-autoprox...

zlhades的专栏 143

Hibernate2升级为Hibernate3

关于将Hibernate2升级为Hibernate3的基本步骤说明 第一步:换jar包 即将hibernate2.1.jar包换成hibernate3.jar,这一步很简单这里就不具体说了。 第二步:修改Hibernate.cfg.xml文件(由于项目有遗留的原因)这里有部份模块采用的是Struts+Hibernate框架的 即将hibernate.cfg.xml文件中的 "-//Hibernat

jbgtwang的专栏 706

使用Hibernate连接h2数据库的配置文件写的方法(连接字符串)

org.h2.Driver jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE sa 1 org.hibernate.dialect.H2Dialect

有 prepare , No out 3198

struts2与hibernate 复合主外键在映射文件*.hbm.xml中的配置,为双外键的配置方法

代码 <?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">&lt...

weixin_30432179的博客 127

CXF2.1.1+Spring2.5+Hibernate3.2开发Web Service的配置方法

   CXF(http://cxf.apache.org/)和Spring(http://cxf.apache.org/)无缝集成的Web Service开发框架。CXF目前是APACHE的孵化项目,也是目前JAVA领域十分热门和有前途的Web Service开发框架。最近在一个研发项目中需要提供Web Service服务,调用方是.NET开发的系统。通过分析选择,最终决定采用CXF来做。    ...

leegene 183

5Hibernate配置及使用方法----青软S2SH(笔记)

关于hibernate的简单配置,先看结构图,我们需要 1.还要弄一下需要的 jar包. 2.配置两个文件(hibernate配置文件和映射文件),不过映射文件可以用注解替代. 3.写一个pojo类,写一个示例demo 1.关于jar包,下载网站http://hibernate.org/orm/downloads/ 下载的完整版的压缩包,解压后,lib里有一个req...

weixin_30822451的博客 186

hibernate级联关系list的配置使用

最近在练习一个List的级联关系的例子,遇到点问题,现在已经解决,现在把一些配置方法做一个简单的说明,希望对初学者有一定的帮助!        使用框架:Struts2 + hibernate + spring          Question.java   private Integer id; private String questionname; private Lis...

jiangzhen8492的专栏 239
上一篇: Hibernate学习及使用总结:121&12n&n2n
下一篇: hibernate学习总结之子类关系映射
eplusing
博客等级 码龄12年 45粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值