版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ITdevil/article/details/84074800
记录下来,供自己日后参考
映射文件解释 xxx.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--导入约束 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"a
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- package属性是用于设定包的名称,接下来改配置文件中凡是用到此包中的对象时可以省略 -->
<hibernate-mapping package="com.hei.domin">
<!--class标签
作用:建立实体和表之间的对应关系
属性:
name:指定实体类的名称
table:制定数据库表的名称
-->
<class name="Customer" table="cst_customer">
<!--id标签
作用:用于映射主键
属性:
name:指定的是javaBean中的属性的名称,也就是get/set方法后面的部分
column:指定的是数据库表的字段名称(可以省略:默认表中的列名与实体类中的列名是一样的)
-->
<id name="custId" column="cust_id">
<!--generator标签
作用:配置主键的生成策略
属性:
class:指定生成方式的取值
取值之一:native,使用本地数据库的自动增长能力
mysql数据库的自动增长能力是为了让某一列自动增+1,但不是所有的数据库都支持这种方式
-->
<generator class="native"></generator>
</id>
<!-- property标签
作用:映射其他字段
属性:
name:指定javaBean属性的名称。和id标签的name属性含义一致
column:制定数据库表中的字段名称
-->
<property name="cust_name" ></property>
<property name="cust_source" ></property>
<property name="cust_industry" ></property>
<property name="cust_level" ></property>
<property name="cust_phone" column="cust_phone" ></property>
</class>
</hibernate-mapping>
配置文件的解析hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!--
SessionFactory就是一个工厂,用于生产Session对象的
Session就是我们使用Hibernate操作数据库的核心对象
明确:
创建SessionFactory由三部分组成,缺一不可
1.连接数据库的基本信息
2.hibernate的基本配置
3.映射文件的位置
-->
<session-factory>
<!-- 1.连接数据库的基本信息 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/day55</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 2.hibernate的基本配置 -->
<!-- #将hibernate生成的sql语句打印到控制台-->
<property name="hibernate.show_sql">true</property>
<!-- #将控制台的sql语句进行格式化(缩进) -->
<property name="hibernate.format_sql">true</property>
<!-- #自动建表
create:每次启动hibernate框架时自动建表(初始化)
create-drop:每次启动hibernate框架时自动建表,hibernate结束时会自动删除
update:如果没有表时会自动创建,有表会比对表结构与映射配置是否一致.不一致将更新表结构.
validate :对映射关系进行校验,只使用原来的表
none : 不使用自动键表属性.不校验|不更性|不创建
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--3.映射文件的位置 -->
<!-- 引入映射 :将映射文件注册到主配置文件中
注意: 引入路径填写相对路径. 相对src目录
-->
<mapping resource="cn/hei/domain/Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
hibernate入门案例(将一个客户保存到数据库表中)
步骤分析:
1.加载主配置文件
2.根据配置文件中的配置构建SessionFactory
3.使用工厂创建一个session对象
4.使用session对象开启事务
5.执行保存客户的操作
6.提交事务
7.释放资源
Customer customer = new Customer();
customer.setCust_name("清醒");
//1.加载主配置文件
Configuration config = new Configuration().configure();
//2.根据配置文件创建session工厂
SessionFactory sessionFactory = config.buildSessionFactory();
//3.根据工厂创建session对象
Session session = sessionFactory.openSession();
//4.使用session对象开启事务
Transaction tx = session.beginTransaction();
//5.执行保存客户的操作
session.save(customer);
//6.提交事务
tx.commit();
//7.释放资源
session.close();
执行过程:
首先创建Configuration类的实例,并通过它来读取并解析配置文件hibernate.cfg.xml。然后创建SessionFactory读取并解析映射文件信息,并将Configuration对象中的所有配置信息拷贝到sessionFactory内存中,接下来,打开session,让sessionFactory提供链接,并开启一个事物,之后创建对象,并行对象中添加数据,通过session.save()方法保存到数据库中。最后提交事务,并关闭资源。