配置文件详解和核心api讲解
一、配置文件详解
1、映射文件详解
1、映射配置文件的位置和名称没有限制。
-建议:位置:和实体类放在统一目录下。
名称:实体类名称.hbm.xml。

2、在映射配置文件中,标签内的name属性的值要和实体内的属性对应。
(1)class标签内的name的值为实体类的全路径。
(2)property标签内的name的值为实体类的属性。
(3)id标签内的name的值为实体类的属性。
(4)id和property标签内的column属性可以不写。
(5)id和property标签内有一个type属性,可以指定生成数据表的字段的类型,
一般类型由Hibernate自动推断,不设置该属性

2、核心配置文件详解
1、核心配置文件的位置和名称都有要求
位置:必须要在src目录下
名称:必须是hibernate.cfg.xml。

2、配置内容必须要写在<SessionFactory></SessionFactory>标签内。

3、配置内容有三部分组成
第一部分:数据库配置部分,此部分是必须要配置的。
第二部分:hibernate配置部分,该部分不是必须的,可以不配置
第三部分:加载映射文件部分,该部分也是必须的,因为hibernate只会加载核心配置文件,
所有必须要通过这种方式引入映射文件,才能加载。

二、核心API详解
1、Configuration
该API主要用来加载配置文件。在使用Hibernate时,首先要创建Configuration对象,该对象用来启动、加载和管理Hibernate的配置文件信息。
该实例的创建方法有以下几种:
第一种:用于加载位置在src目录下,并且名字为hibernate.cfg.xml的配置文件。
Configuration cfg = new Configuration().configure()
第二种:加载指定目录下的核心配置文件
Configuration cfg = new Configuration().configure("xml 文件的位置")
第三种:加载映射文件
Configuration cfg = new Configuration().configure("xml 文件的位置");
cfg.addResource("com/jack/entity/User.hbm.xml");
2、SessionFactory
该接口负载Hibernate的初始化和Session对象的创建。
创建SessionFactory时会根据核心配置文件中数据库的配置和映射文件中的映射关系去数据库中吧数据表创建出来。
SessionFactory的特点:1、它是线程安全的,它的一个实例可以供多个线程共享。
2、它是重量级的,不能随意的创建或销毁它的实例。
3、在创建过程中特别的耗费资源。
由于以上的特点,因此在一个项目中只需要一个SessionFactory对象即可,所以在Hibernate项目中一般抽取一个工具类来获取该实例。
工具类代码:
public class HibernateUtils {
private static Configuration configuration= null;
private static SessionFactory sessionFactory = null;
/**
* 静态代码块,在类加载时只会执行一次,这样就可以保证只有一个SessionFactory对象
*/
static{
configuration = new Configuration();
configuration.configure();
sessionFactory = configuration.buildSessionFactory();
}
/**
* 提供一个返回SessionFactory对象的方法
*/
public static SessionFactory getFactory(){
return sessionFactory;
}
}
3、Session
1、session类似于JDBC中的Connection对象。
2、session是线程不安全的,一个session对象只能供一个线程使用。
3、session提供了大量的常用操作方法。
- save()、update()和saveOrUpdate()方法:用于增加和修改对象。
- delete()方法:用于删除方法。
- get()和load()方法:用于根据主键查询。
- createQuery()和createSQLQuery()方法:用于数据库操作对象
- createCriteria()方法:用于条件查询。
4、获取该实例方法:
第一种:
Session session = sessionFactory.openSession();
第二种:
Session session = sessionFactory.getCurrentSession();
两种方法的区别:使用第一种方法获取该实例时,SessionFactory会直接创建一个Session对象,在操作完毕后,必须要通过调用Session对象
的close()方法来手动关闭该实例。
使用第二种方法创建的实例会被绑定到当前线程中,在提交或回滚操作时会自动关闭。
4、Transaction
Transaction接口主要用于事物管理。
1、获取实例方法
Transaction tx = session.beginTransaction();
2、提供的方法
commit()方法:用于提交相关联的Session实例。
rollback()方法:用于撤销事物。
三、编写配置文件时没有提示问题。
在编写配置文件时如果电脑不能连接外网,则没有提示。解决方式如下.
1、编写映射文件处理方法
(1)去网站http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd下载hibernate-mapping-3.0.dtd文件。
(2)打开该文件,拷贝如下代码
(3)在eclipse中打开window--->preference窗口,搜索XML Catalog,进行如下配置

2、编写核心配置文件处理方法
(1)去网站http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd下载hibernate-configuration-3.0.dtd文件。
(2)打开hibernate-configuration-3.0.dtd文件拷贝如下代码

(3)在eclipse中打开window--->preference窗口,搜索XML Catalog,进行如下配置

配置文件详解和核心api讲解的更多相关文章
- Hibernate_day01--Hibernate配置文件详解_核心api
Hibernate映射配置文件(重点) 1 映射配置文件名称和位置没有固定要求 2 映射配置文件中,标签name属性值写实体类相关内容 (1)class标签name属性值实体类全路径 (2)id标签和 ...
- 【JAVAEE学习笔记】hibernate01:简介、搭建、配置文件详解、API详解和CRM练习:保存客户
今日学习:hibernate是什么 一.hibernate是什么 框架是什么: 1.框架是用来提高开发效率的 2.封装了好了一些功能.我们需要使用这些功能时,调用即可.不需要再手动实现. 3.所以框架 ...
- JAVAEE学习——hibernate01:简介、搭建、配置文件详解、API详解和CRM练习:保存客户
今日学习:hibernate是什么 一.hibernate是什么 框架是什么: 1.框架是用来提高开发效率的 2.封装了好了一些功能.我们需要使用这些功能时,调用即可.不需要再手动实现. 3.所以框架 ...
- MyBatis核心配置文件详解
------------------------siwuxie095 MyBatis 核心配置文件详解 1.核心 ...
- Hibernate入门核心配置文件和orm元数据配置文件详解
框架是什么? 框架是用来提高开发效率的 封装了一些功能,我们需要使用这些功能时,调用即可,不用手动实现 所以框架可以理解为一个半成品的项目,只要懂得如何使用这些功能即可 Hibernate是完全面向对 ...
- AndroidManifest.xml配置文件详解(转载)
AndroidManifest.xml配置文件详解 2013-01-05 10:25:23 分类: Android平台 AndroidManifest.xml配置文件对于Android应用开发来说是 ...
- 源码详解系列(六) ------ 全面讲解druid的使用和源码
简介 druid是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,druid还扩展 ...
- 源码详解系列(七) ------ 全面讲解logback的使用和源码
什么是logback logback 用于日志记录,可以将日志输出到控制台.文件.数据库和邮件等,相比其它所有的日志系统,logback 更快并且更小,包含了许多独特并且有用的特性. logback ...
- 源码详解系列(八) ------ 全面讲解HikariCP的使用和源码
简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...
随机推荐
- Linq分区操作之Skip,SkipWhile,Take,TakeWhile源码分析
Linq分区操作之Skip,SkipWhile,Take,TakeWhile源码分析 二:linq的分区操作 常用的分区操作:Take,TakeWhile,Skip,SkipWhile 三:Take ...
- How to design a product table for many kinds of product where each product has many parameters
https://stackoverflow.com/questions/695752/how-to-design-a-product-table-for-many-kinds-of-product-w ...
- (zxing.net)一维码Code 39的简介、实现与解码
一.简介 一维码Code 39:由于编制简单.能够对任意长度的数据进行编码.支持设备广泛等特性而被广泛采用. Code 39码特点: 能够对任意长度的数据进行编码,其局限在于印刷品的长度和条码阅读器的 ...
- CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- SystemID
A:BJQUANYONG-B:CCC332322987612323008002DDD A:JHDUJIA-B:CCC1365323754641263423809708001DDD A:GUANGZHO ...
- IoC概要
控制反转基本上说的是功能调用者与功能实现者之间应该如何交互,即二者之间没有直接的强耦合(调用者new一个被调用者),而是都依赖同一个抽象,这个抽象规定了二者交互的接口.反转的意思是实现了依赖倒置,在程 ...
- CSS:如何清除a标签之间的默认留白间距
即使我们使用了类似 *{margin: 0;padding: 0;} 这样的代码重置了浏览器默认样式,也会发现类似<a>标签这种inline-block元素,它们之间也还存在着间距. de ...
- “全栈2019”Java第七十三章:外部类里多个静态非静态内部类详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Python多继承的C3算法
C3算法 一.知识点补充: 拓扑排序:在图论中,拓扑排序(Topological Sorting) 是一个 有向无环图(DAG,Directed Acyclic Graph) 的所有顶点的线性序列.且 ...
- java里面的标识符、关键字和类型
1. 注释 Java中有三种注释: (1) // -单行注释,注释从“//”开始,终止于行尾: (2) -多行注释,注释从““结束: (3) -是Java特有的doc注释,这种注释主 ...