Hibernate常用的API
Configuration:配置类
- 作用:用于获得框架的信息,构建将会话工厂。
- 获得默认的配置文件
//1.创建一个Configuration的对象 Configuration config=new Configuration(); //2.读取默认路径下的hibernate.cfg.xml配置文件 config.configure();
- 获得指定文件名的配置文件
//1.创建一个Configuration的对象 Configuration config=new Configuration(); //2.读取默认路径下的hibernate.cfg.xml配置文件 config.configure("config.xml");
SessionFactory:会话工厂
作用:类似DataSource。用于管理数据库的连接。
openSession():打开session
- getCurrentSession():获得当前线程的session(线程绑定)
- close():关闭会话工厂。
//2.获得Session public static Session getSession(){ return sessionFactory.openSession(); }
Transaction:事务处理类
- 就是用于处理事务。
- begin(): 启动
- commit():提交
- rollback():回滚
Session:会话操作类
Session会话操作类
作用:类似JDBC的Statement。用于操作数据库的数据。Session操作是必须先映射,后操作。
方法名 | 作用 |
---|---|
save() | 保存数据库到数据库 |
saveOrUpdate() | 如果数据库没有记录就保存,如果有记录就更新,重要的判断是OID是否相同,OID(Object ID)就是在配置文件配置为属性。 |
delete() | 用于通过OID删除数据库记录 |
update() | 用于通过OID更新数据的记录 |
load() | 用于通过OID,获得一条记录,有延迟 |
get() | 用于通过OID,获得一条记录,无延迟 |
beginTransaction() | 打开并且启动事务(增删改操作必须,) |
getTransation() | 打开了事务,没有开启。 |
clear() | 清除session所有对象的持久态。 |
close() | 关闭session对象 |
evit() | 清除指定的对象的持久态 |
createQuery() | 获得使用HQL查询的Query对象 |
createSQLQuery() | 获得使用SQL查询的Query对象 |
createCriteria() | 获得标准查询的Criteria对象 |
配置文件
–总配置文件常用属性
属性 | 说明 |
---|---|
hibernate.connection.driver_class | 驱动 |
hibernate.connection.url | 连接字符串 |
hibernate.connection.username | 用户名 |
hibernate.connection.password | 密码 |
hibernate.show_sql | 作用: 设置是否显示操作的 SQL 语句, true |
hibernate.format_sql | 格式化输出 SQL 语句, 前提是 show_sql 为 true。 |
true | false |
hibernate.dialect | 配置方言。 |
hibernate.hbm2ddl.auto | 配置通过代码生成数据库的表。create:不管数据库里是否有表, 覆盖update:数据库有表就使用原来的表,没有的表就增加新表drop-create:如果显示关闭SessionFactory, 会在程序结束后删除表 |
数据库方言 :
所有的数据库的SQL语言都有在标准的SQL语言的基础做了扩展。我们将每一种数据库的SQL语言称为方言。- 我们知道,每一种数据库的方言都和标准的SQL语言有差异的。
Hibernate将每一种数据库不同的实现写在方言类里面
- 我们知道,每一种数据库的方言都和标准的SQL语言有差异的。
数据库的方言其实已经默认根据连接的信息自动加载了。不用配置也可以。
- 但是我们还是建议手工配置
- 因为,自动加载的方言不是最优化的。建议配置的方言和数据库的引擎以及版本一致
配置方言
如:配置数据库InnoDB引擎的方言
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
Mapping中的标签
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<!-- 1.实体类名和表名的关联关系 -->
<class name="com.pojo.Customer" table="cst_customer" >
<!-- 实体类的属性名与表字段名的关联关系 -->
<!-- 主键 -->
<id name="custId" column="cust_id">
<!-- ID 生成策略 -->
<!-- native表示使用数据库自身提供的ID自增长策略 -->
<generator class="native"></generator>
</id>
<!-- 普通的字段 -->
<property name="custIndustry" column="cust_industry"></property>
<property name="custLevel" column="cust_level"></property>
<property name="custName" column="cust_name"></property>
<property name="custSource" column="cust_source"></property>
</class>
</hibernate-mapping>
class标签:作用就是配置实体类和表的关联关系
- name:指定类名,使用的是类的全限制名
- table:指定实体类对应的表名
- id标签:配置主键字段,配置了主键的属性称为OID,(Object ID)
- name:就是指定实体类的属性名
- column:就是指定表的字段名
- generator标签:作用就是指定使用的ID生成策略
- property标签:指定非主键的普通指定的关系
- name:就是指定实体类的属性名
- column:就是指定表的字段名