hibernate简单入门阶段一
hibernate简单入门1
什么是框架?
- 架是为了提高开发效率,将一些功能进行封装,使用的时候只需要调用即可。
- 框架主要是实现的是dao层的功能的封装,帮我们简化并完成数据库的相关操作。
什么是框架?
hibernate:操作数据库的时候,可以使用面向对象的方式来实现,从而省略了sql语句的书写。hibernate属于一种orm(对象关系型映射object-relation-mapping)框架,hibernate操作数据库的过程可以理解为:
搭建hibernate框架
导入所需jar包 和数据库的驱动包
创建数据库表以及操作的实体
- 书写orm元数据(对象和表的配置文件)
- 书写主配置文件
- 测试
hibernate框架配置文件详解
-
orm元数据配置文件:
- 根元素:配置表和实体对象的关系,package属性填写包名,即实体所在类,配置后在里面可以直接使用简单类名
<hibernate-mapping package="com.linchong.entity"> </hibernate-mapping>
- class属性:配置实体和表的对应关系,name表示完整类名,table表示数据库的表名
<class name="com.linchong.entity.Client" table="client"> </class> <!--如果配置了完整包名> <class name="Client" table="client"></class>
- id属性:id用来配置主键的映射属性,name用来指定主键对应的属性名,column用来填写表中对应的主键列名,其中的generator用来主键的生成策略
<id name="u_id" column="u_id"> <generator class="native"></generator> </id>
- property属性:配置除了id以外的普通属性映射,
name:属性名;
column(可选):列名,默认使用属性名;
type(可选):填写列的属性的类型,默认hibernate会自动检测实体的属性类型,每个类型有三种填法:java类型|hibernate类型|数据库类型;
not-null(可选):配置该属性(列)是否为空,默认为false
length(可选):配置数据库中列的长度,默认值:使用数据库类型的最大长度,这里是取varchar(255最大)
<property name="name" column="name"></property> <property name="age" column="age"></property> <property name="addr" column="addr"></property>
- 整个元数据配置文件的结构:
<!-- 配置表和实体对象的关系 --> <hibernate-mapping package=""> <class name="" table=""> <id name="" column=""> <generator class=""></generator> </id> <!-- property元素:配置除id以外的普通属性映射--> <property name="" column=""></property> </class> </hibernate-mapping>
-
hibernate主配置文件详解:
- 5个必选属性
- 3个可选属性:
- 元数据引入配置
hibernateAPI详解
-
Configuration:用来配置加载类,加载主配置以及管理映射,orm数据加载即
Hibernate 运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类;
数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件);
持久化类与数据表的映射关系(*.hbm.xml 文件)
- 创建:
//空参构造,它默认加载src目录下的hibernate.cfg.xml文件 Configuration conf = new Configuration(); //指定加载的配置文件 File file = new File("xml文件位置"); Configuration cfg = new Configuration().configure(file);
加载元数据,如果主配置文件中已经引入了映射文件位置就不需要加载
conf.addReource("映射文件位置");
//第二种方式:加载.properties格式的文件
Configuration conf = new Configuration();
conf.addResource("映射文件位置");
-
SessionFactory:
功能:
SessionFaction对象
SessionFaction功能:用于创建操作数据库核心对象session对象的工厂,简单说就是创建session对象
-
注意:
1.sessionFaction负责保存和使用所有配置信息,消耗内存资源大
2.sessionFactory属于线程对象设计
结论:保证在web项目中只创建一个sessionFactory
-
使用:
- 创建SessionFactory对象:
//4.根据配置创建SessionFactory对象 SessionFactory sf = conf.buildSessionFactory();
- 打开一个新的session对象
sf.getCurrentSession()
- 获得线程对象
sf.openSession();
-
Session:
-
功能:
- 表示hibernate框架与数据库之间的连接(会话),
- session类似于JDBC年代的connection对象。
- 还可以完成对数据库的增删改查操作,session是hibernate操作数据库的核心对象
-
操作:
//获得事务,session获得操作事务的Transation对象 //Transaction tx = session.getTransaction(); //开启事务并获得操作事务的tx对象 Transaction tx = session.beginTransaction(); //增 Client c = new Client(); c.setUsername("张三"); session.save(c); //删 Client c = session.get(Client.class,1); session.delete(c); //改 Client c = session.get(Client.class,1); c.setUsername("李四"); session.update(c); //查 Client c = session.get(Client.class,1); System.out.println(customer);
-
Transaction:封装了事务的操作
操作:
//打开事务 //方式1 Transaction tx = session.getTransaction(); tx.begin(); //方式2 //开启事务并获得操作事务的tx对象(建议) Transaction tx1 = session.beginTransaction(); //提交事务 tx1.commit(); //回滚事务 tx1.rollback();
-
封装工具类:
package com.linchong.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static SessionFactory sf;
static{
//1.创建空参构造
Configuration conf = new Configuration().configure();
//2.根据配置创建SessionFactory对象,一个web项目要保证创建一个sessionfactory对象
sf = conf.buildSessionFactory();
}
//获得session=>获得全新session
public static Session openSession(){
//3.获得session
Session session = sf.openSession();
return session;
}
//获得session=>获得与线程绑定的session
public static Session getCurrentSession(){
//3.获得session
//打开一个新的session对象
Session session = sf.getCurrentSession();
return session;
}
}
上一篇: 吐血整理出来的大数据相关知识点及面试题,确定不看看吗?
下一篇: 《java基础》7-事务的可见性
推荐阅读
-
hibernate简单入门阶段一
-
一个简单的Struts, Spring, Hibernate 示例 博客分类: Java StrutsSpringHibernate
-
MongoDB最简单的入门教程之一 环境搭建 MongoDB数据库开发环境
-
.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)
-
nodejs入门教程二:创建一个简单应用示例
-
8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍
-
一个简单的Nginx入门案例
-
可视化工具D3.js教程 入门 (第五章)—— 一个简单的图表
-
Java入门(一)——编写一个简单的Java程序
-
Java开发入门之第一阶段(五)