本文对Hibernate进行了一个快速入门,介绍如何使用,之后会对Hibernate进行进一步解析
1.写程序,使用框架以后,帮我们实现一部分功能,使用框架好处:少写一部分
代码实现功能
什么是orm思想
1. hibernate使用orm思想对数据库进行crud操作
2. 在web阶段用javabean,更正确的叫法 实体类
3. orm(object relational mapping): 对象关系映射
文字描述
(1)让实体类和数据库表进行一一对应
让实体类首先和数据库表对应
让实体类属性 和 表里面字段对应
(2)不需要直接操作数据库表,而操作表对应的实体类对象
public class User{ ----------create table t_user(
private int uid; ----------uid int,
private String username; ---------username varchar(100),
private String password; ---------password varchar(100)
//set and get... );
}
因为使用hibernate时,有日志信息输出,hibernate本身没有日志输出的jar包,导入其他日志的jar包 以及mysql驱动的jar包
public class User {
/* hibernate要求实体类有一个属性唯一的 */
private int uid;
private String username;
private String password;
private String address;
public int getUid() {
return uid; ...
}
ps:使用hibernate时,不需要自己手动创建表,hibernate会帮你创建
使用配置文件实现映射关系
映射配置文件名称和位置没有固定要求建议,在实体类所在的包中创建:实体类名称.hbm.xml
学过约束dtd,schema,在hibernate里面引入的约束:dtd约束
在hibernate-mapping-3.0.dtd文件中找到
<hibernate-mapping>
<class name="cn.itcast.entity.User" table="t_user">
<id name="uid" column="uid">
<generator class="native">generator>
id>
<property name="username" column="username">property>
<property name="password" column="password">property>
<property name="address" column="address">property>
class>
hibernate-mapping>
将注释去掉:
<class name="cn.itcast.entity.User" table="t_user">
<id name="uid" column="uid">
class="native">
id>
<property name="username" column="username">property>
<property name="password" column="password">property>
<property name="address" column="address">property>
class>
(1)核心配置文件的格式:xml 但是核心配置文件名称和位置固定的
位置: 必须src下面
名称: 必须hibernate.cfg.xml
(2)引入dtd约束
在hibernate-configuration-3.0.dtd中
(3)hibernate操作过程中.只会加载核心配置文件,其他配置文件不会进行加载
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>
<property name="hibernate.connection.url">jdbc:mysql:///day12property>
<property name="hibernate.connection.username">rootproperty>
<property name="hibernate.connection.password">124816qwertproperty>
<property name="hibernate.show_sql">trueproperty>
<property name="hibernate.format_sql">trueproperty>
<property name="hibernate.hbm2ddl.auto">updateproperty>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialectproperty>
<mapping resource="cn/itcast/entity/User.hbm.xml"/>
session-factory>
hibernate-configuration>
第一步 加载hibernate核心配置文件
第二步 创建SessionFacrory对象
第三步 使用SessionFactory创建 session对象
第四步 开启事务
第五步 写具体逻辑 crud操作
第六步 提交事务
第七步 关闭资源
@Test
public void testAdd() {
// 第一步 加载hibernate核心配置文件
// 到src下面找到名称是hibernate.cfg.xml
// 在hibernate中封装对象
Configuration cfg = new Configuration();
cfg.configure();
// 第二步 创建SessionFacrory对象
// 读取hibernate核心配置文件内容,创建sessionFactory
// 在这过程,根据映射关系,在配置数据库中把表创建
SessionFactory sessionFactory = cfg.buildSessionFactory();
// 第三步 使用SessionFactory创建 session对象
Session session = sessionFactory.openSession();
// 第四步 开启事务
Transaction tx = session.beginTransaction();
// 第五步 写具体逻辑 crud操作
// 添加功能
User user = new User();
user.setUsername("小王");
user.setPassword("123");
user.setAddress("成都");
// 调用session中的方法实现添加
session.save(user);
// 第六步 提交事务
tx.commit();
// 第七步 关闭资源
session.close();
sessionFactory.close();
}
看到效果.
(1)是否生成表
(2)看表是否有记录
hibernate映射配置文件
1. 映射配置文件名称和位置没有固定要求
2. 映射配置文件中,标签name属性值写实体类相关内容
- (1) class标签的name属性值:属性值实体类全路径
- (2) id标签和property标签name属性值:实体类属性名称
3. id标签和property标签,column属性是可以省略的
- (1) 不写值就和name属性值一样
4. property标签的type属性,设置生成表字段的类型,自动对应类型
1.配置写位置要求
2.配置三部分要求
(1)数据库部分必须的
(2)hibernate部分可选的
(3)映射文件必须的
3.核心配置文件名称位置应是固定的
名称:src下面
位置:hibernate.cfg.xml
Hibernate核心api
configuration configuration cfg=new Configuration();
cfg.configure();
(1)到src下面找到名称为hibernate.cfg.xml配置文件,创建对象,把配置文件
放到对象里面去(加载核心配置文件)
(1)创建sessionFactory对象过程中做事情
根据核心配置文件中,有数据库配置,有映射文件部分,到数据库里面根据
映射关系把表创建
update
(有表更新,没表创建)
(1)在hibernate操作中,建议一个项目一般创建一个sessionFactory对象
(1)写工具类,写静态代码块实现
静态代码块在类加载时候执行,执行一次
public class HibernateUtils {
static Configuration cfg = null;
static SessionFactory sessionFactory = null;
// 静态代码块实现
//类中静态代码块只执行一次
static {
// 加载核心配置文件
cfg = new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
// 提供方法返回sessionFactory
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
补充:解决配置文件没有提示的问题
1.可以上网就应该木问题
2.把约束文件引入到myeclipse中
Window—->preferences—->输入 xml calalog—->add—>
Location:
key type:URI
Key:http://www.hibernate.org/dtd/hibernate-mapping-3.0.dt