hibernate4基本配置方式详解

发布时间 - 2026-01-11 03:13:00    点击率:

可编程的配置方式-1

如果在配置cfg.xml的时候,不想在里面配置hbm.xml怎么办呢?可在程序里使用可编程的配置方式,也就是使用程序来指定在cfg.xml里面的配置信息,不推荐这种方式。如下:

Configuration cfg= new Configuration()
.addResource("Item.hbm.xml")
.addResource("Bid.hbm.xml");

一个替代方法(有时是更好选择)是,指定被映射的类,让Hibernate帮你寻找映射定义文件:

Configuration cfg= new Configuration()
.addClass(org.hibernate.auction.Item.class)
.addClass(org.hibernate.auction.Bid.class);

这种方式消除了任何对文件名的硬编码

可编程的配置方式-2

还可以通过编程的方式来指定配置属性:

Configuration cfg= new Configuration()
.addClass(org.hibernate.auction.Item.class)
.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect")
.setProperty("hibernate.connection.datasource","
.setProperty("hibernate.order_updates", "true");

其他可以传入配置属性的方式:

1:properties文件

2:xml文件

3:设置Java的系统属性,形如:java–Dproperty=value

另外要注意一点:

org.hibernate.cfg.Configuration实例被设计成启动期间(startup-time)对象,一旦SessionFactory 创建完成它就被丢弃了。

与数据库连接的配置有两种方法,一种是JDBC,一种是DataSource

JDBC的配置



示例:

oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@localhost:1521:orcl
bjpowernode
bjpowernode

数据源的配置

 

示例如下:

java:/bjpowernodeDs

连接池c3p0的配置

由于Hibernate自己实现的连接池不太好,在项目中,建议使用工业级的连接池,比如:c3p0,Hibernate发行包中带有c3p0,下面就是其基本配置示例:

"connection.driver_class">oracle.jdbc.driver.OracleDriver
"connection.url">jdbc:oracle:thin:@localhost:1521:orcl
"connection.username">bjpowernode
"connection.password">bjpowernode
"c3p0.min_size">5
"c3p0.max_size">20
"c3p0.timeout">180
"c3p0.max_statements">50


连接池c3p0的配置

由于Hibernate自己实现的连接池不太好,在项目中,建议使用工业级的连接池,比如:c3p0,Hibernate发行包中带有c3p0,下面就是其基本配置示例:

"connection.driver_class">oracle.jdbc.driver.OracleDriver
"connection.url">jdbc:oracle:thin:@localhost:1521:orcl
"connection.username">bjpowernode
"connection.password">bjpowernode
"c3p0.min_size">5
"c3p0.max_size">20
"c3p0.timeout">180
"c3p0.max_statements">50


为了解决数据库中元素命名冲突的问题,引入catalog和schema来解决。

从概念上说,一个数据库系统包含多个Catalog,每个 Catalog又包含多个

Schema,而每个Schema又包含多个数据库对象(表、视图、字段等)。

比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,各种数据库系统对Catalog和Schema的支持具体可参见下表:

















为了让应用在JDBC事务和JTA事务环境中可以移植,建议使用可选的HibernateTransaction API, 它包装并隐藏了底层系统,通过设置Hibernate配置属性hibernate.transaction.factory_class来指定一个Transaction实例的工厂类。

有三个标准(内建)的选择:

1:委托给数据库(JDBC)事务(默认)

Hibernate4以前:org.hibernate.transaction.JDBCTransactionFactory

Hibernate4里面:org.hibernate.engine.transaction.internal.jdbc.JDBCTransactionFactory

2:JTA事务,如果在上下文环境中存在运行着的事务(如,EJB会话Bean的方法), 则委托给容器管 理的事务, 否则,将启动一个新的事务,并使用Bean管理的事务.

Hibernate4以前:org.hibernate.transaction.JTATransactionFactory

Hibernate4里面:org.hibernate.engine.transaction.internal.jta.JTATransactionFactory

3:委托给容器管理的JTA事务

Hibernate4以前:org.hibernate.transaction.CMTTransactionFactory

Hibernate4

里面:org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory

也可以定义属于你自己的事务策略 (如, 针对CORBA的事务服务)







1:Hibernate使用SLF4J来做日志记录,可以根据你选择的绑定把日志输出到日志框架(NOP、Simple、log4jversion 1.2、JDK 1.4 logging、JCL 或 logback)上。

2:需要在 classpath里加入 slf4j-api.jar 和你选择的绑定的 JAR 文件(使用 Log4J 时加入slf4j-log4j12.jar),当然别忘了加入log4j自己的jar包。

总结

以上所述是小编给大家介绍的hibernate4基本配置方式详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# hibernate4基本配置  # Hibernate 修改数据的实例详解  # Hibernate实现悲观锁和乐观锁代码介绍  # struts+spring+hibernate三个框架的整合  # Hibernate5新特性介绍  # hibernate和mybatis对比分析  # hibernate增删改查操作代码  # Hibernate 主清单文件配制的详细介绍  # 可编程  # 连接池  # 多个  # 自己的  # 基本配置  # 绑定  # 小编  # 包中  # 还可以  # 在此  # 和你  # 帮你  # 不太好  # 要注意  # 可在  # 给大家  # 数据库系统  # 可选  # 在里面  # 来做 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 5种Android数据存储方式汇总  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  教你用AI将一段旋律扩展成一首完整的曲子  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Linux系统运维自动化项目教程_Ansible批量管理实战  网站建设整体流程解析,建站其实很容易!  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  如何在Windows服务器上快速搭建网站?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  JS碰撞运动实现方法详解  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Android自定义listview布局实现上拉加载下拉刷新功能  如何在Windows虚拟主机上快速搭建网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在宝塔面板创建新站点?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  奇安信“盘古石”团队突破 iOS 26.1 提权  Laravel如何使用Blade模板引擎?(完整语法和示例)  轻松掌握MySQL函数中的last_insert_id()  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  香港服务器租用费用高吗?如何避免常见误区?  Laravel如何发送系统通知?(Notification渠道示例)  Bootstrap整体框架之JavaScript插件架构  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  如何为不同团队 ID 动态生成多个非值班状态按钮  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何快速生成ASP一键建站模板并优化安全性?  如何批量查询域名的建站时间记录?  js实现获取鼠标当前的位置  详解jQuery中基本的动画方法  高防服务器:AI智能防御DDoS攻击与数据安全保障  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Linux安全能力提升路径_长期防护思维说明【指导】  如何快速辨别茅台真假?关键步骤解析  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  如何快速查询网址的建站时间与历史轨迹?  html5的keygen标签为什么废弃_替代方案说明【解答】  如何用美橙互联一键搭建多站合一网站?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)