目录
Hibernate核心配置文件(hibernate.cfg.xml)
Hibernate核心配置文件(hibernate.cfg.xml)
在工程目录下添加Hibernate配置文件(可在project\etc目录下找到示例文件),默认文件名为“hibernate.cfg.xml”,该文件需要配置数据库连接信息和Hibernate的参数
// 加载默认配置文件
Configuration config = new Configuration().configure();
// 加载指定配置文件
Configuration config = new Configuration().configure("hibernateCopy.cfg.xml");
注意:hibernate默认加载的文件hibernate.cfg.xml
专业术语
SQL (Structured Query Language):结构化查询语言
HQL (Hibernate Query Language):查询语言
基本结构
<!-- 根节点 -->
<hibernate-configuration>
<!-- 节点内包含所有会话的有关设置 -->
<session-factory>
<!-- 设置会话的中的不同属性 -->
<property name=””></property>
<!-- 导入映射文件 -->
<mapping resource=””/>
</session-factory>
</hibernate-configuration>
property元素的name值
注意:前置hibernate.可以省略
property元素的name值 | 描述 |
---|---|
connection.driver_class | 数据库驱动 |
connection.url | 数据库URL |
connection.username | 数据库用户名 |
connection.password | 数据库用户密码 |
dialect | 用于配置Hibernate使用的数据库类型。Hibernate支持几乎所有的主流数据库(方言) |
current_session_context_class | org.hibernate.context.CurrentSessionContext.currentSession()方法得到的Session由谁跟踪管理。thread指Session由当前执行的线程来跟踪管理 |
hbm2ddl.auto | 配置创建表的类型 |
create | 每次启动都会新建一个表 |
update | 有表就更新,没表就创建 |
create-drop | 新建之后,完毕后会删除,一般用于测试 |
validate | 验证 |
show_sql | 设置为true,则程序运行时在控制台输出SQL语句 |
format_sql | 设置为true,则程序运行时在控制台输出格式化后的SQL语句 |
connection.characterEncoding | 连接数据库时数据的传输字符集编码方式,最好设置为gbk |
connection.useUnicode | 连接数据库时是否使用Unicode编码 |
connection.pool.size | 数据库连接池的大小 |
jdbc.batch_size | 指Hibernate批量插入,删除和更新时每次操作的记录数。Batch Size越大,批量操作的向数据库发送Sql的次数越少,速度就越快,同样耗用内存就越大 |
jdbc.fetch_size | 指Hibernate每次从数据库中取出并放到JDBC的Statement中的记录条数。FetchSize设的越大,读数据库的次数越少,速度越快。Fetch Size越小,读数据库的次数越多,速度越慢 |
use_scrollable_resultset | 是否允许Hibernate用JDBC的可滚动的结果集。对分页的结果集。对分页时的设置;非常有帮助 |
方言(dialect)
实现HQL语句向不同数据库的SQL语句转换时,解决不同数据库之间的差异而制定的一套”规范” 。
举例来说:在MySQL数据库里进行分页查询,只需使用limit关键字就可以了;而标准SQL并不支持limit关键字,例如Oracle则需要使用行内视图的方式来进行分页。同样的应用程序,当在不同数据库之间迁移时,底层数据库的访问细节会发生改变,而Hibernate也为这种改变做好了准备,需要做的就是:告诉Hibernate应用程序的底层即将使用哪种数据库——这就是Hibernate方言