Hibernate学习基本配置
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&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学习基本配置相关推荐
- Hibernate学习总结【比较与Mybatis框架之间的区别】
经过一周的Hibernate学习,我理解了作为以JPA为核心的持久层查询标准.JPA所涉及的思想为ORM(object relational mapping),它解释了为什么我们的实体关系要和数据库一 ...
- hibernate学习笔记二
上一篇关于hibernate学习笔记一,主要是作为hibernate的入门知识.没有和spring发生任何关系,这一篇我将把spring集成进去,看spring如何管理hibernate,还有和未使用 ...
- Hibernate学习笔记(一)
####1.1Hibernate框架的学习路线 第一天:Hibernate的入门(Hibernate的环境搭建.Hibernate的API.Hibernate的CRUD) 第二天:Hibernat ...
- Hibernate学习汇总
一.Hibernate的基本原理 1.什么是Hibernate Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了.其实对于对象来说就是持久化. Hibernate ...
- [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等...
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Hibernate学习记录
Hibernate是一个关于java方面的ORM(Object/Relation Mapping,对象关系映射)框架. ORM的思想:主要实现的功能就是将关系数据库中表的记录应映射成对象,以对象的形 ...
- hibernate学习笔记(总结)
hibernate学习笔记 课程内容 6 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0/R框架(了解 ...
- Hibernate 学习心得1: 多对多关系中,中间表无法插入数据。
Hibernate 学习心得之一 多对多关系中,中间表无法插入数据. 最近学习 spring4+hibernate4,学习中遇到了很多坑. 在这里我来说说我遇到的坑,这里就不介绍如何spring如何集 ...
- java hibernate 配置_JAVA语言之关于hibernate的核心配置
本文主要向大家介绍了JAVA语言之关于hibernate的核心配置,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.hibernate中的核心配置文件:hibernate.rfg. ...
最新文章
- 分享Kali Linux 2017年第11周镜像文件
- C语言指针高级部分:void指针和数据指针
- 软件工程 软件的估计为什么这么难
- 24个很赞的 Node.js 免费教程和在线指南
- boost::mpl模块实现single_view相关的测试程序
- [转载]Hot Door CADtools (实战篇)
- Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例
- 使用内容脚本将代码插入页面上下文
- 纯净的windows官方WinPE制作
- 如何在CentOS 7上安装Yarn
- Byond Compare软件
- 推荐基于深度学习实时同步生成2D动画口型算法
- 数据分析领域不同职位de薪酬职能差异
- lighting接口说明
- 计算机组成原理---输入输出设备
- 幂级数求和函数总结全在这里啦
- can-utils使用
- 用AntlR4实现简单的汇编编译器
- Top 7 PHP Security Blunders
- docker里mysql精简版_新手把mysql装进docker中碰到的各种问题
热门文章
- python类属性数据三维图_Python图表属性
- start uml怎么自动生成代码_基于UML-RT和Papyrus-RT的系统建模与代码生成
- 新DELL服务器在F2设置界面下raid的配置
- struts配置json需要的jar包
- 使用“管道”与“应用程序生命周期”重构:可插拔模块
- CentOS下yum安装mcrypt错误:No package php-mcrypt available.解决方法
- 特别推荐:开发者的10个最佳代码游乐场
- applicationcontext and webapplicationcontext
- make INSTALL_MOD_PATH=path_dir modules_install
- 根据周次显示日期范围_Elasticsearch根据日期价格范围搜索酒店且排序