hibernate是一个持久层框架,是一个ORM(object,relattional mapping)对象关系映射框架,对jdbc进行了轻量级对象框架。

所谓的对象关系映射是指,一个java对象和关系型数据库里的表简历一种映射关系,从而操作对象就可以操作表。

入门学习


所需jar包

创建实体类

创建映射

映射需要通过XML的配置文件来完成,这个配置文件可以任意命名。尽量统一命名规范(类名.hbm.xml)

<?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">
<hibernate-mapping package="com.gream"><!-- <建立类与表的映射> --><class name="com.gream.Cstomer" table ="cst_customer" ><!--表主键和类关联  --><id name="cust_id" column="cust_id" ><!--主键生成策略 --><generator class="increment"  /></id><!-- 普通的对象属性和表属性对应 --><property name="cust_name" column="cust_name"  /><property name="cust_source" column="cust_source"  /><property name="cust_industry" column="cust_industry"  /><property name="cust_level" column="cust_level"  /><property name="cust_phone" column="cust_phone"  /><property name="cust_mobile" column="cust_mobile"  /></class></hibernate-mapping>

创建一个Hibernate的核心配置文件

Hibernate的核心配置文件的名称:hibernate.cfg.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5     <hibernate-configuration>
 6         <session-factory>
 7         <!--连接数据库基本参数  -->
 8             <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
 9             <!--  2种写法,防止插入数据库出现乱码 -->
10             <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=utf8</property>
11 <!--         <property name="hibernate.connection.url"><![CDATA[jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8]]></property> -->
12             <property name="hibernate.connection.username">root</property>
13             <property name="hibernate.connection.password">root</property>
14             <!--配置hibernate方言  -->
15             <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
16             <!--打印sql -->
17             <property name="hibernate.show_sql">true</property>
18             <!-- 格式化sql -->
19             <property name="hibernate.format_sql">true</property>
20             <!-- 自动创建表 -->
21             <property name="hibernate.hbm2ddl.auto">update</property>
22
23             <!-- 配置C3P0连接池 -->
24         <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
25         <!--在连接池中可用的数据库连接的最少数目 -->
26         <property name="c3p0.min_size">5</property>
27         <!--在连接池中所有数据库连接的最大数目  -->
28         <property name="c3p0.max_size">20</property>
29         <!--设定数据库连接的过期时间,以秒为单位,
30         如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
31         <property name="c3p0.timeout">120</property>
32          <!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
33         <property name="c3p0.idle_test_period">3000</property>
34
35             <!-- 设置事物隔离级别  -->
36             <property name="hibernate.connecton.isolation">8</property>
37             <!-- 设置当前线程绑定session  -->
38             <property name="hibernate.current_session_context_class">thread</property>
39             <!-- 记载配置文件 -->这里一定要配置好,不然找不到实体类对象映射文件
40             <mapping resource="com/gream/Cstomer.hbm.xml" />
41
42         </session-factory>
43     </hibernate-configuration>

测试代码

 1 package com.gream;
 2
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.Transaction;
 6 import org.hibernate.cfg.Configuration;
 7 import org.junit.Test;
 8
 9 public class Demo01 {
10
11     @Test
12     public static void main(String[] args) {
13         // TODO Auto-generated method stub
14         //保存客户案例
15         //1、加载hibernate核心配置文件
16         Configuration cg = new Configuration().configure();
17         //2、创建sessionfactory对象,类似jdbc
18         SessionFactory sf = cg.buildSessionFactory();
19         //3、通过sessionfactory获取session对象,类似jdbc中connection
20         Session session = sf.openSession();
21         //4、开启事物
22         Transaction tt = session.beginTransaction();
23         //5、编写代码
24         Cstomer co = new Cstomer();
25         co.setCust_name("王2");
26         //保存
27         session.save(co);
28         //事物提交
29         tt.commit();
30         session.close();
31     }
32
33 }

Hibernate的映射的配置

实体类对象映射的配置

【class标签的配置】

标签用来建立类与表的映射关系

属性:

name :类的全路径

table :表名(类名与表名一致,table可以省略)

catalog :数据库名

【id标签的配置】

标签用来建立类中的属性与表中的主键的对应关系

属性:

name :类中的属性名

column :表中的字段名(类中的属性名和表中的字段名如果一致,column可以省略)

length :长度

type :类型

【property标签的配置】

标签用来建立类中的普通属性与表的字段的对应关系

属性:

name :类中的属性名

column :表中的字段名

length :长度

type :类型

not-null :设置非空

unique :设置唯一

核心文件的配置

必须的配置

连接数据库的基本的参数:

驱动类

url路径

用户名

密码

方言

可选的配置

显示SQL :hibernate.show_sql

格式化SQL :hibernate.format_sql

自动建表 :hibernate.hbm2ddl.auto

none :不使用hibernate的自动建表

create :如果数据库中已经有表,删除原有表,重新创建,如果没有表,新建表。(测试)

create-drop :如果数据库中已经有表,删除原有表,执行操作,删除这个表。如果没有表,新建一个,使用完了删除该表。(测试)

update:如果数据库中有表,使用原有表,如果没有表,创建新表(更新表结构)

validate:如果没有表,不会创建表。只会使用数据库中原有的表。(校验映射和表结构)。

映射文件的引入

引入映射文件的位置,位置写全

<mapping resource="com/gream/Cstomer.hbm.xml" />



核心API

Configuration:加载核心配置

2种加载方法:

1、加载hibernate核心配置文件
Configuration cg = new Configuration().configure();

2、手动加载映射

configuration.addResource("com/itheima/hibernate/demo1/Customer.hbm.xml");

SessionFactory:Session工厂

SessionFactory内部维护了Hibernate的连接池和Hibernate的二级缓存(不讲)。是线程安全的对象。一个项目创建一个对象即可

创建sessionfactory对象,类似jdbc
SessionFactory sf = cg.buildSessionFactory();

Session:类似Connection对象是连接对象

Session代表的是Hibernate与数据库的链接对象。不是线程安全的。与数据库交互桥梁。

Session中的API

保存方法:

Serializable save(Object obj);

查询方法:

T get(Class c,Serializable id);

T load(Class c,Serializable id);

get和load方法的区别:

get是立即执行,返回数据,当他查不到对象的时候返回null。load是懒执行,只有到最后提交事务的事务才会执行,当他查不到对象的时候报异常。

修改方法:

void update(Object obj);

 删除方法:

void delete(Object obj);

保存或更新

void saveOrUpdate(Object obj);

查询所有

转载于:https://www.cnblogs.com/wangrongchen/p/11433038.html

Hibernate学习基本配置相关推荐

  1. Hibernate学习总结【比较与Mybatis框架之间的区别】

    经过一周的Hibernate学习,我理解了作为以JPA为核心的持久层查询标准.JPA所涉及的思想为ORM(object relational mapping),它解释了为什么我们的实体关系要和数据库一 ...

  2. hibernate学习笔记二

    上一篇关于hibernate学习笔记一,主要是作为hibernate的入门知识.没有和spring发生任何关系,这一篇我将把spring集成进去,看spring如何管理hibernate,还有和未使用 ...

  3. Hibernate学习笔记(一)

    ####1.1Hibernate框架的学习路线 第一天:Hibernate的入门(Hibernate的环境搭建.Hibernate的API.Hibernate的CRUD) 第二天:Hibernat ...

  4. Hibernate学习汇总

    一.Hibernate的基本原理 1.什么是Hibernate Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了.其实对于对象来说就是持久化. Hibernate ...

  5. [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等...

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Hibernate学习记录

     Hibernate是一个关于java方面的ORM(Object/Relation Mapping,对象关系映射)框架. ORM的思想:主要实现的功能就是将关系数据库中表的记录应映射成对象,以对象的形 ...

  7. hibernate学习笔记(总结)

    hibernate学习笔记 课程内容 6 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0/R框架(了解 ...

  8. Hibernate 学习心得1: 多对多关系中,中间表无法插入数据。

    Hibernate 学习心得之一 多对多关系中,中间表无法插入数据. 最近学习 spring4+hibernate4,学习中遇到了很多坑. 在这里我来说说我遇到的坑,这里就不介绍如何spring如何集 ...

  9. java hibernate 配置_JAVA语言之关于hibernate的核心配置

    本文主要向大家介绍了JAVA语言之关于hibernate的核心配置,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.hibernate中的核心配置文件:hibernate.rfg. ...

最新文章

  1. 分享Kali Linux 2017年第11周镜像文件
  2. C语言指针高级部分:void指针和数据指针
  3. 软件工程 软件的估计为什么这么难
  4. 24个很赞的 Node.js 免费教程和在线指南
  5. boost::mpl模块实现single_view相关的测试程序
  6. [转载]Hot Door CADtools (实战篇)
  7. Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例
  8. 使用内容脚本将代码插入页面上下文
  9. 纯净的windows官方WinPE制作
  10. 如何在CentOS 7上安装Yarn
  11. Byond Compare软件
  12. 推荐基于深度学习实时同步生成2D动画口型算法
  13. 数据分析领域不同职位de薪酬职能差异
  14. lighting接口说明
  15. 计算机组成原理---输入输出设备
  16. 幂级数求和函数总结全在这里啦
  17. can-utils使用
  18. 用AntlR4实现简单的汇编编译器
  19. Top 7 PHP Security Blunders
  20. docker里mysql精简版_新手把mysql装进docker中碰到的各种问题

热门文章

  1. python类属性数据三维图_Python图表属性
  2. start uml怎么自动生成代码_基于UML-RT和Papyrus-RT的系统建模与代码生成
  3. 新DELL服务器在F2设置界面下raid的配置
  4. struts配置json需要的jar包
  5. 使用“管道”与“应用程序生命周期”重构:可插拔模块
  6. CentOS下yum安装mcrypt错误:No package php-mcrypt available.解决方法
  7. 特别推荐:开发者的10个最佳代码游乐场
  8. applicationcontext and webapplicationcontext
  9. make INSTALL_MOD_PATH=path_dir modules_install
  10. 根据周次显示日期范围_Elasticsearch根据日期价格范围搜索酒店且排序