Hibernate框架介绍以及入门 【二】
Hibernate的常见配置
一、关于XML提示的配置
1、配置hibernate-mapping-3.0.dtd - XML
配置这三个地方
第一个;location
第二个:URL
第三个:
2、配置hibernate-configuration-3.0.dtd - XML
第二个:URL
第三个:
其它步骤与上面类似
完整代码:
二、关于hibernate映射的配置
映射
1、【class标签的配置】
这个标签是来建立类与表(数据库)的映射关系
属性:
name:类的一个全路径
table: 表名(类名如果和表名一致那么table可以省略)
catalog:数据库名
2、【id标签的配置】
标签用来建立类中的属性
name:类当中的属性名
column:表中的字段(类当中的属性名和表当中的字段名如果一致则column省略)
length:长度
type:类型
3、【property标签的配置】
标签用来建立类中的普通属性与表的字段的对应关系:
属性:
name:类当中的属性名
column:表中的字段
length:长度(建表的时候指定长度)
type: 类型 type=“string”
或者可以添加一个子标签
一般情况下都可以自动转换
not-null: 设置是否允许为空
unique:设置是否是唯一的
Hibernate的核心配置方式
一种方式:属性文件的方式:hibernate.properties
—》hibernate.connection.driver_class=com.mysql.jdbc.Driver
—》hibernate.show_sql=true
与下面的第二种方式效果一样
以上属性文件的方式不能引入映射文件的方式(手动编写代码去加载映射文件)
二种方式:XML文件的方式:hibernate.cfg.xml
如下
三、核心的配置hibernate.cfg.xml
配置
配置的详细分解:
(1)必须的配置
链接数据库的基本参数
a、驱动类
b、URL路径
c、用户名
d、密码
e、方言
(2)可选的配置
a、显示SQL语句:hibernate.show_sql
b、格式化SQL语句:hibernate.format_sql
c、自动建表:hibernate.hbm2ddl.auto
none:不使用hibernate的自动建表
create:如果数据库当中已经有表了会删除已有表,重新创建,如果没有表那么就新建表
create-drop:数据库当中已经有表了会删除已有表,执行操作,执行完之后会删除这个表,如果没有表,会新建一个,使用完了删除该表。
设置好该项的时候需要关闭工厂sessionFactory.close();
在java代码当中
update:如果数据库当中有表,使用原有的表,如果没有表,创建一个新表(更新表结构)
java当中的变量和表当中的相同如果不同时不会报错会创建新的列
validate:如果没有表,不会创建表。只会使用数据库当中原有的表。(校验映射和表的结构)
java当中的变量必须和表当中的相同如果不同则会报错
(3)映射文件的引入
引入映射文件的位置
hibernate.cfg.xml
测试代码:
/*
* Hibernate入门案例
*/
public class HibernateDemo01 {
@Test
// 保存客户的案例
public void demo01() {
// 1、加载Hibernate核心配置文件
Configuration configuration = new Configuration().configure();// 该方法加载了Customer.hbm.xml
// 2、创建SessionFactory对象:类似于JDBC中的链接池
SessionFactory sessionFactory = configuration.buildSessionFactory();// sessionFactory工厂
// 3、通过SessionFactory获取到Session对象:类似于我们JDBC中的Connection
Session session = sessionFactory.openSession();// Hibernate以及和mysql数据库建立起链接
// 4、手动开启事务:
Transaction transaction = session.beginTransaction();
// 5、编写代码
Customer customer = new Customer();
customer.setCust_name("张三");
session.save(customer);
// 6、事务提交
transaction.commit();
// 7、资源释放
session.close();
}
}