本文对Hibernate进行了一个快速入门,介绍如何使用,之后会对Hibernate进行进一步解析
##1.Hiberate 概述
###什么是框架
1.写程序,使用框架以后,帮我们实现一部分功能,使用框架好处:少写一部分
代码实现功能
###什么是Hibernate框架(重点)?
- hibernate框架是应用在javaee三层架构中dao层架构
- 在dao层里面作对数据库的crud操作,使用hibernate实现crud操作,hibernate 底层代码就是jdbc,hibernate对jdbc进行封装.
使用hibernate好处:不需要写复杂的jdbc代码,不需要写sql语句实现 - hibernate是开源(免费的,源码随便看的)的轻量级(不需要很多jar包,不要其他什么东西)框架
- hibernate版本(3.x 4.x 5.x)
什么是orm思想
-
hibernate使用orm思想对数据库进行crud操作
-
在web阶段用javabean,更正确的叫法 实体类
-
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入门
####搭建ibernate环境
#####第一步 导入hibernate的jar包 lib\required lib\jpa
因为使用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会帮你创建
#####第三步 配置实体类和数据库表一一对应关系(映射关系)
使用配置文件实现映射关系
######(1)创建xml格式的配置文件
映射配置文件名称和位置没有固定要求建议,在实体类所在的包中创建:实体类名称.hbm.xml

######(2)配置是xml格式,在配置文件中首先映入xml约束
学过约束dtd,schema,在hibernate里面引入的约束:dtd约束
在hibernate-mapping-3.0.dtd文件中找到
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
######(3)配置映射关系
<hibernate-mapping>
<!-- 1.配置类和表对应
class标签 : name属性:实体类全路径 table属性:数据库表的名称
-->
<class name="cn.itcast.entity.User" table="t_user">
<!-- 2.配置实体类id和表id对应
hibernate要求实体类有一个属性唯一值
hibernate要求表有字段作为唯一值
-->
<!-- id标签
name属性:实体类id属性名称
column属性:生成的表的字段名称
-->
<id name="uid" column="uid">
<!-- 设置数据库id增长策略
native:生成id值就是主键自动增长
-->
<generator class="native"></generator>
</id>
<!-- 配置其他属性和表的字段对应
name属性:实体类属性名称
column属性:生成表字段名称
-->
<property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="address" column="address"></property>
</class>
</hibernate-mapping>
将注释去掉:
<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>
#####第四步 创建hibernate的核心配置文件
(1)核心配置文件的格式:xml 但是核心配置文件名称和位置固定的
位置: 必须src下面
名称: 必须hibernate.cfg.xml
(2)引入dtd约束
在hibernate-configuration-3.0.dtd中
(3)hibernate操作过程中.只会加载核心配置文件,其他配置文件不会进行加载
<?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>
<session-factory>
<!-- 第一部分,配置数据库信息 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///day12</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">124816qwert</property>
<!-- 第二部分,配置hibernate到核心配置文件 可选的-->
<!-- 输出底层的sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 对底层sql语句进行格式化 -->
<property name="hibernate.format_sql">true</property>
<!-- hibernate帮创建表,需要配置之后
update:如果已经有表,更新,若果没有,创建
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 配置数据库方言
在mysql实现里面分页 关键字limit,只能在mysql使用
在oracle数据库,实现分页rownum
让hibernate框架识别不同数据库的语句
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 第三部分,把映射文件放到核心配置文件中 -->
<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配置文件详解
hibernate映射配置文件
- 映射配置文件名称和位置没有固定要求
- 映射配置文件中,标签name属性值写实体类相关内容
- (1) class标签的name属性值:属性值实体类全路径
- (2) id标签和property标签name属性值:实体类属性名称
- id标签和property标签,column属性是可以省略的
- (1) 不写值就和name属性值一样
- property标签的type属性,设置生成表字段的类型,自动对应类型
####hibernate核心配置文件
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配置文件,创建对象,把配置文件
放到对象里面去(加载核心配置文件)
####SessionFactory(重点)
#####1.使用configuration对象创建sessionFactory对象
(1)创建sessionFactory对象过程中做事情
根据核心配置文件中,有数据库配置,有映射文件部分,到数据库里面根据
映射关系把表创建
update
(有表更新,没表创建)
#####2.创建sessionFactory过程中,这个过程特别耗资源
(1)在hibernate操作中,建议一个项目一般创建一个sessionFactory对象
#####3.具体实现
(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;
}
}
####Session(重点)
- session类似于jdbc中的connection
- 调用session里面不同的方法实现crud操作
(1)添加:save方法
(2)修改:update方法
(3)删除:delete方法
(4)根据id查询:get方法 - session对象单线程对象
(1)session 只能自己用,不能共用
####Transaction对象 - 开启事务
Transaction tx=session.beginTransaction(); - 事务提交和回滚方法
tx.commit();
tx.rollback(); - 事务概念
(1)事务四个特性
原子性,一致性,隔离性,持久性
补充:解决配置文件没有提示的问题
1.可以上网就应该木问题
2.把约束文件引入到myeclipse中
Window---->preferences---->输入 xml calalog---->add—>
Location:
key type:URI
Key:http://www.hibernate.org/dtd/hibernate-mapping-3.0.dt
本文介绍了Hibernate框架的基本概念及其在Java EE项目中的应用。通过实例演示了如何配置环境、创建实体类及映射文件,并实现了基本的添加操作。
461

被折叠的 条评论
为什么被折叠?



