hibernate学习

 

 

  Hibernate的核心配置信息

 

属性名

用途

数值

hibernate.connection.driver_class

设置数据库的驱动类

驱动类名

hibernate.connection.url

设置连接数据库的URL

URL

hibernate.connection.username

设置连接数据库的用户名

用户名

hibernate.connection.password

设置连接数据库的密码

密码

hibernate.connection.pool_size

设置连接池的最大容量

一个整数

hibernate.connection.datasource

设置数据源的JNDI名字

JNDI

hibernate.dialect

针对不同的数据库提供的方言类,允许Hibernate针对特定的数据库生成优化的SQL语句

方言类名

hibernate.show_sql

是否输出Hibernate操作数据库使用的SQL语句

true或者false(默认)

hibernate.format_sql

是否格式化输出的SQL语句

true或者false(默认)

hibernate.connection.isolation

设置JDBC事务隔离级别,不是所有的数据库都支持所有的隔离级别

取值为1(默认)、23或者4

hibernate.connection.auotocommit

设置是否启用数据库事务的自动提交

true或者false(默认)

hibernate.max_fetch_depth

为单向关联的一对一和多对一的外连接抓取(outer join fetch)设置最大深度,数值为0将关闭默认的外连接抓取

建议数值为0~3

hibernate.default_batch_fetch_size

设置关联的批量抓取数量

建议取值为4816

hibernate.default_entity_mode

指定默认的持久化实体表现形式

dynamic-mappojo(默认)或dom4j

续表 

属性名

用途

数值

hibernate.default_entity_mode

指定默认的持久化实体表现形式

dynamic-mappojo(默认)或dom4j

hibernate.order_updates

强制Hibernate按照被更新数据的主键,为SQL更新排序,可以减少在高并发系统中事务的死锁几率

true或者false(默认)

hibernate.generate_statistics

是否激活收集性能调节的统计数据

true或者false(默认)

hibernate.use_sql_comments

是否生成有助于调试的注释信息

true或者false,(默认)

 

 

 

在MS SQLServer及Oracle等数据库中可以在Hibernate配置文件中设置属性hibernate.jdbc.batch_size来控制达到多少数据后送至数据库处理。如果在插入或者删除大量记录时使用这个属性,可以提高系统的性能。具体设置参考下面的代码:


  1. <property name="hibernate.jdbc.batch_size">100</property> 

MySQL数据库不支持这个功能。

 

数据库方言类

Hibernate可以连接不同的数据库,但是需要使用不同的数据库方言类。这是因为多数关系数据库都支持标准的SQL,均有各自的SQL方言,hibernate.dialect属性用于指定被访问数据库使用的方言类(DB Dialect Class)。当Hibernate生成SQL查询语句,或者使用native作为标识符属性生成策略时都会参考数据库的方言类。表2 2所示不同数据库对应的方言类。

 

数据库

方言类

DB2

org.hibernate.dialect.DB2Dialect

HypersonicSQL

org.hibernate.dialect.HSQLDialect

Informix

org.hibernate.dialect.InformixDialect

Interbase

org.hibernate.dialect.InterbaseDialect

Pointbase

org.hibernate.dialect.PointbaseDialect

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

Microsoft SQL Server

org.hibernate.dialect.SQLServerDialect

MySQL

org.hibernate.dialect.MySQLDialect

Oracle 9i/10g/11g

org.hibernate.dialect.Oracle9iDialect

Oracle 9i/10g/11g

org.hibernate.dialect.Oracle9iDialect

FrontBase

org.hibernate.dialect.FrontbaseDialect

SAP DB

org.hibernate.dialect.SAPDBDialect

Sybase

org.hibernate.dialect.SybaseDialect

Sybase Anywhere

org.hibernate.dialect.SybaseAnywhereDialect

 

 

  Transaction接口

Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC事务或者JTA等。这样设计允许开发人员能够使用一个统一的事务操作接口使得自己的项目可以在不同的环境和容器(Container)之间方便地迁移。

Hibernate中的事务是通过配置hibernate.cfg.xml文件选择使用JDBC或者是JTA事务控制。参考下面的配置内容:


  1. <property name="transaction.factory_class">      
  2.     org.hibernate.transaction.JDBCTransactionFactory  
  3. </property> 

上面的配置内容表示Hibernate中的事务使用JDBC的事务控制,使用JTA事务控制的配置内容如下:


  1. <property name="transaction.factory_class">  
  2.     org.hibernate.transaction.JTATransactionFactory  
  3. </property> 

如果hibernate.cfg.xml文件中没有针事务的配置,则默认使用JDBC的事务控制Hibernate中的事务。

在Transaction接口中主要定义了commit()和rollback()两个方法,前者是提交事务的方法;后者是回滚事务的方法。

 

 

 

 Query接口

使用Query类型的对象可以方便查询数据库的数据,它使用QBC、QBE、HQL或者原生SQL(Native SQL) 查询数据。Query对象不仅能查询数据,还可以绑定参数、限制查询记录数量,以及批量删除和批量更新等。使用Query对象的示例代码如下:


  1. Configuration config = new Configuration().configure();  
  2. SessionFactory sessionFactory = config.buildSessionFactory();  
  3. Session session = sessionFactory.getCurrentSession();  
  4. Transaction tx = session.beginTransaction();  
  5. Query query = session.createQuery("from Guestbook");  
  6. List list = query.list();  
  7. tx.commit(); 

上面代码表示Query对象通过Session对象的createQuery()方法创建,其中的方法参数值"from Guestbook"是HQL语句,表示要读取所有Guestbook类型的对象。即读取Guestbook表中的所有记录,把每条记录封装成Guestbook对象后保存到List对象中并返回List对象。

Query对象只在Session对象关闭之前有效,否则就会抛出SessionException类型的违例。因为Session对象就像JDBC中的Connection对象,表示与数据库的一次连接。关闭Connection对象,Statement对象则不能使用。所以关闭Session对象,也就不能使用Query对象。参考下面示例的错误代码:


  1. Configuration config = new Configuration().configure();  
  2. SessionFactory sessionFactory = config.buildSessionFactory();  
  3. Session session = sessionFactory.getCurrentSession();  
  4. Transaction tx = session.beginTransaction();  
  5. Query query = session.createQuery("from Guestbook");  
  6. List list = query.list();  
  7. tx.commit();  
  8. query.list();//此行会抛出org.hibernate.SessionException 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://book.51cto.com/art/200909/153587.htm

内容概要:本文深入探讨了金属氢化物(MH)储氢系统在燃料电池汽车中的应用,通过建立吸收/释放氢气的动态模型和热交换模型,结合实验测试分析了不同反应条件下的性能表现。研究表明,低温环境有利于氢气吸收,高温则促进氢气释放;提高氢气流速和降低储氢材料体积分数能提升系统效率。论文还详细介绍了换热系统结构、动态性能数学模型、吸放氢特性仿真分析、热交换系统优化设计、系统控制策略优化以及工程验证与误差分析。此外,通过三维动态建模、换热结构对比分析、系统级性能优化等手段,进一步验证了金属氢化物储氢系统的关键性能特征,并提出了具体的优化设计方案。 适用人群:从事氢能技术研发的科研人员、工程师及相关领域的研究生。 使用场景及目标:①为储氢罐热管理设计提供理论依据;②推动车载储氢技术的发展;③为金属氢化物储氢系统的工程应用提供量化依据;④优化储氢系统的操作参数和结构设计。 其他说明:该研究不仅通过建模仿真全面验证了论文实验结论,还提出了具体的操作参数优化建议,如吸氢阶段维持25-30°C,氢气流速0.012g/s;放氢阶段快速升温至70-75°C,水速18-20g/min。同时,文章还强调了安全考虑,如最高工作压力限制在5bar以下,温度传感器冗余设计等。未来的研究方向包括多尺度建模、新型换热结构和智能控制等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值