Hibernate知识点小结(一)--快速入门
一、Hibernate的简介
1、Hibernate是一个开放源代码的对象关系映射框架
2、对象关系映射:ORM Object Relation Mapping
对象与数据表的映射
对象的属性与数据表的字段的映射
Customer实体 cust_customer表
cust_name cust_name
cust_phone cust_phone
只要操作实体---->ORM框架----->实体的属性映射到表的字段位置
二、Hibernate的快速入门
开发步骤:
1、导入hibernate的jar包
hibernate-release-5.0.7.Final\lib\required\*.jar
日志相关的jar
数据库驱动
2、创建实体和表
表结构:
cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
`cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
`cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
`cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
`cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
`cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
`cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话'
实体结构:
private Long cust_id;
private String cust_name;
private String cust_source;
private String cust_industry;
private String cust_level;
private String cust_phone;
private String cust_mobile;
3、配置实体与表的关系
创建xml文件 该文件的命名约定 实体名.hbm.xml
约束:/org/hibernate/hibernate-mapping-3.0.dtd
<hibernate-mapping>
<!-- 配置实体与表的关系 -->
<class name="com.itheima.domain.Customer" table="cst_customer">
<!-- 配置实体的属性和表的字段的关系 -->
<id name="cust_id" column="cust_id">
<generator class="native"></generator>
</id>
<property name="cust_name" column="cust_name"></property>
<property name="cust_source" column="cust_source"></property>
<property name="cust_industry" column="cust_industry"></property>
<property name="cust_level" column="cust_level"></property>
<property name="cust_phone" column="cust_phone"></property>
<property name="cust_mobile" column="cust_mobile"></property>
</class>
</hibernate-mapping>
4、配置数据源的信息
配置hibernate的核心文件
在src下创建 hibernate.cfg.xml文件
约束:/org/hibernate/hibernate-configuration-3.0.dtd
配置的name查看hibernate.properties 位置:hibernate-release-5.0.7.Final\project\etc\hiebernate.properties
<hibernate-configuration>
<session-factory>
<!-- 数据源信息 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///ssh324</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
</session-factory>
</hibernate-configuration>
5、测试:操作实体
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//实体操作
Customer customer = new Customer();
customer.setCust_name("百度");
session.save(customer);
transaction.commit();
session.close();
sessionFactory.close();
三、Hibernate的配置
1、映射文件 mapping文件
<?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>
<!-- 配置实体与表的关系
name: 要映射的实体的全限定名
table: 要映射的表的名称
-->
<class name="com.itheima.domain.Customer" table="cst_customer">
<!-- 配置实体的属性和表的字段的关系
在hibenrate中id具备特殊地位 修改、删除等默认都是根据id执行的
id标签
name:实体中的id的属性名称
column:表中的id的字段名称
主语:不管是id还是普通属性 当实体的属性名称 与 表的字段名称 一致时 此时column可以省略
-->
<id name="cust_id">
<!-- 主键生成策略 -->
<generator class="native"></generator>
</id>
<!-- 配置普通属性
name:实体中的属性名称
column:表中的字段名称
-->
<property name="xxx"></property>
<property name="cust_name"></property>
<property name="cust_source"></property>
<property name="cust_industry" column="cust_industry"></property>
<property name="cust_level" column="cust_level"></property>
<property name="cust_phone" column="cust_phone"></property>
<property name="cust_mobile" column="cust_mobile"></property>
</class>
</hibernate-mapping>
2、核心配置文件
<?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工厂:造session对象
session对象:会话对象 hibernate与数据库的连接对象
session工厂内部需要配置三部分内容
1、数据源信息
2、hibernate其他配置参数
3、加载映射关系
-->
<session-factory>
<!-- 1、数据源信息 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///ssh324</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 2、hibernate的其他配置参数 -->
<!-- 2.1 配置数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 2.2 控制台是否打印sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 2.3 格式化sql语句 -->
<property name="hibernate.format_sql">true</property>
<!-- 2.4 ddl策略
PS:
ddl:数据定义语言:定义数据表和数据库
dml:数据操作语言:对数据的增删改操作
dql:数据查询语言:对数据的查询操作
dcl:数据控制语言:对数据库的权限 用户等操作
取值:
create-drop: 创建删除 用于测试
create:创建 用于测试
validate: 检测 必须存在表且映射关系与表的结构一致 可以用于生产环境
update: 更新 档映射关系与数据表结构只要不一致 自动更新表结构 可以用于生产环境(使用最多)
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 2.5 指定第三方的数据源 c3p0
导入hibernate-release-5.0.7.Final\lib\optional\c3p0\*.jar
-->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!-- 2.6 配置session与当前线程绑定:了解
注意:后期集成spring之后 与线程绑定这件事情不需要我们操作 spring自动操作
-->
<property name="hibernate.current_session_context_class">thread</property>
<!-- 3、加载映射 -->
<mapping resource="com/itheima/domain/Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
四、Hibernate的相应API
1、session获取相关API
//创建配置对象
//Configuration configuration = new Configuration();
//加载类加载路径下(src)hibernate.cfg.xml文件
//configuration.configure();
//等同于
Configuration configuration = new Configuration().configure();
//通过配置对象 去构建session工厂(session工厂的创建下需要使用到hibernate的核心配置文件)
//sessionFactory是一个重量级对象(对象创建与销毁很消耗资源) 线程安全的
SessionFactory sessionFactory = configuration.buildSessionFactory();
//会话对象,hibernate与数据库的连接会话,session是一个轻量级对象 线程不完全
Session session = sessionFactory.openSession(); //通过工厂获得一个信息的session
//Session session = sessionFactory.getCurrentSession(); //从当前线程上获得session
//开启事务
Transaction transaction = session.beginTransaction();
//实体操作
Customer customer = new Customer();
customer.setCust_name("5555");
session.save(customer);
//事务回滚
//transaction.rollback();
//事务提交
transaction.commit();
//释放资源
session.close();
sessionFactory.close(); //从线程上获得session 那么不需要手动关闭
Hibernate知识点小结(一)--快速入门的更多相关文章
- Finecms模板标签调用小结 方便快速入门
最近接了一个单子客户要求用finecms进行建站,由于也是php代码,也可以直接调用相关函数,所以上手相对比较快,ytkah总结了一些常用的函数方便您快速入门Finecms.一个网站一般由主页.栏目页 ...
- Hibernate知识点小结(四)--JPA
一.jpa的简介和入门 JPA:Java Persistence API,接口规范 Hinernate内部为JPA规范提供实现 开发步骤(EntityManager): ...
- Hibernate知识点小结(三)-->一对多与多对多配置
一.多表关系与多表设计 1.多表关系 一对一: 表的设计原则(分表原则): 优化表的性能 基于语意化分表 ...
- Hibernate知识点小结汇总
Hibernate部分 1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复 ...
- Hibernate知识点小结(二)
一.持久化对象和标识符 1.持久化类 配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id) 3.持久 ...
- CUDA编程之快速入门
CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构.做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要 ...
- CUDA编程之快速入门【转】
https://www.cnblogs.com/skyfsm/p/9673960.html CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架 ...
- Hibernate第一篇【介绍Hibernate,简述ORM,快速入门】
前言 前面已经学过了Struts2框架了,紧接着就是学习Hibernate框架了-本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门 什么是Hibernate框架? Hib ...
- Kotlin新语言简介和快速入门知识点
Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...
随机推荐
- java版两人聊天程序
server.java import java.io.*; import java.net.*; import java.text.SimpleDateFormat; import java.util ...
- SQL Server 数据库定时自动备份(转)
本文转载自:http://www.cnblogs.com/zhangq723/archive/2012/03/13/2394102.html 作者:清风寻梦 在SQL Server中出于数据安全的考虑 ...
- IO流之序列化流与反序列化流
序列化流与反序列化流 用于从流中读取对象的 操作流 ObjectInputStream 称为 反序列化流 用于向流中写入对象的操作流 ObjectOutputStream 称为 序列化流 l ...
- scss-@for 指令
此指令用于循环输出,具有两种循环方式,下面分别做一下介绍. (1).@for $var from <start> through <end>: 此种方式的遍历索引区间是[sta ...
- Javascript:各种宽高
Javascript: IE中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY对象高度d ...
- Android 使用RecyclerView优雅实现悬浮标题通讯录
项目地址:https://github.com/hgDendi/ContactsList 界面概览: ContactsListDemo ContactsListDemo2 概要 如图,主要简单划分为两 ...
- dispatchTouchEvent,onTouchEvent与onInterceptTouchEvent
1.首先明白一个常识:View 没有onInterceptTouchEvent事件,而ViewGroup这三个事件都有,是viewgroup继承View之后才加了一个方法叫onIntercepTouc ...
- ubuntu14.04安装rabbitmq
ubuntu14.04安装rabbitmq及配置 1.修改/etc/apt/sources.list文件 命令:vi /etc/apt/sources.list 在最后一行加上:deb http: ...
- PHP 运行环境和服务器相关配置
1.在DOS命令窗口输入 mysql -hlocalhost -uroot -p回车 进入mysql数据库, 其中-h表示服务器名,localhost表示本地:-u为数据库用户名,root是mysql ...
- Markdown 使用方法总结
标题: [#] 表示一级标题 [##] 表示二级标题 [###]表示三级标题 引用块:在引用文本前插入 Tab,具体几个 Tab 根据文本所处的位置不同而不同 列表:[ - ]即一个空格加上一个中划 ...