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


相关推荐: 如何在万网ECS上快速搭建专属网站?  历史网站制作软件,华为如何找回被删除的网站?  Laravel如何使用Telescope进行调试?(安装和使用教程)  如何自定义建站之星网站的导航菜单样式?  南京网站制作费用,南京远驱官方网站?  香港服务器租用费用高吗?如何避免常见误区?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  开心动漫网站制作软件下载,十分开心动画为何停播?  香港服务器部署网站为何提示未备案?  如何用PHP快速搭建高效网站?分步指南  如何在阿里云ECS服务器部署织梦CMS网站?  Thinkphp 中 distinct 的用法解析  浅谈redis在项目中的应用  公司网站制作需要多少钱,找人做公司网站需要多少钱?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何快速生成可下载的建站源码工具?  如何在橙子建站上传落地页?操作指南详解  android nfc常用标签读取总结  打造顶配客厅影院,这份100寸电视推荐名单请查收  北京专业网站制作设计师招聘,北京白云观官方网站?  Android Socket接口实现即时通讯实例代码  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  高防服务器租用首荐平台,企业级优惠套餐快速部署  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel如何自定义分页视图?(Pagination示例)  如何在七牛云存储上搭建网站并设置自定义域名?  JS碰撞运动实现方法详解  php打包exe后无法访问网络共享_共享权限设置方法【教程】  如何在橙子建站中快速调整背景颜色?  魔方云NAT建站如何实现端口转发?  如何在服务器上配置二级域名建站?  油猴 教程,油猴搜脚本为什么会网页无法显示?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  jQuery 常见小例汇总  微信小程序 闭包写法详细介绍  Laravel怎么为数据库表字段添加索引以优化查询  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  文字头像制作网站推荐软件,醒图能自动配文字吗?  专业商城网站制作公司有哪些,pi商城官网是哪个?  Linux系统命令中screen命令详解  详解vue.js组件化开发实践  Laravel如何使用Eloquent进行子查询  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何用PHP工具快速搭建高效网站?  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】