一、Hibernate

  使用JDBC做数据库相关功能开发会做很多重复性的工作,创建连接,关闭连接,把字段逐一映射到属性中等。Hibernate把这些进行封装起来,使得数据库访问变得轻松简单。

1、创建数据库,数据表

--创建数据库
create database test;
--使用数据库
use test;
--创建数据表
CREATE TABLE product_table (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(30) ,
price float ,
PRIMARY KEY (id)
) DEFAULT CHARSET=UTF8;

2、创建一个java project,然后倒入hibernate所以来的jar包

导入jar包:右键project-->property-->java build path-->libaries-->add external jars

由于hibernate不同版本之间的jar包存在兼容性问题,应该使用对应的版本jar包。

3、创建实体类Bean

  实体类用于映射数据库中的表product_table

package com.demo.pojo;

public class Product{
private int id;
private String name;
private float price; //实现属性对应的getter/setter方法
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public float getPrice(){
return price;
}
public void setPrice(float price){
this.price=price;
}
}

4、配置Product.hbm.xml

  这个xml用来映射Product类对应数据库中的product_table表

文件名Product.hbm.xml,P一定要大写,和类名保持一致

<!--表示类Product对应表product_table-->
<class name="Product" table="product_table">
<!--表示属性id,映射表字段id-->
<id name="id" column="id">
<generator class="native"></generator><!--id的自增方式采用数据库本地方式-->
</id>

具体的配置的映射xml文件如下:

<?xml version="1.0"?>
<!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.how2java.pojo">
<class name="Product" table="product_">
<id name="id" column="id">
<generator class="native">
</generator>
</id>
<property name="name" />
<property name="price" />
</class> </hibernate-mapping>

5、配置hibernate.cfg.xml

  在src目录下创建hibernate.cfg.xml,用来配置访问数据库要用到的驱动,url,账号密码,数据库方言等 

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

数据库方言含义:因为在代码层面,开发的时候并不会关心底层到底使用Oracle还是用MySQL,写得代码都是一样的。可是Oracle和MySQL所用的sql语句的语法是有写区别,那么这件事就交给hibernate来做了,这时候告诉hibernate底层用到的是什么数据库,它才知道用什么样的方言去对话。

<property name="current_session_context_class">thread</property>

hibernate事务管理方式,也就是说每个线程就是一个事务。

<property name="show_sql">true</property>

表示是否在控制台显示执行的sql语句

<property name="hbm2ddl.auto">update</property>

表示是否会自动更新数据库的表结构,其实不需要创建表,因为hibernate会自动创建表结构,就是因为有这个配置属性。

<mapping resource="com/demo/pojo/Product.hbm.xml" />

表示hibernate会去识别Product这个实体类

6、创建一个测试类TestHibernate

创建一个Product对象,然后通过hibernate把这个对象,插入到数据库中。

hibernate执行的基本步骤是这样的:

6.1、首先获取SessionFactory

6.2、通过SessionFactory获取一个Session

6.3、在Session基础上开启一个事务

6.4、通过调用Session的save方法把对象保存到数据库

6.5、提交事务

6.6、关闭Session

6.7、关闭SessionFactory

package com.demo.test;

import org.hibernagte.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; import com.demo.pojo.Product; public class TestHibernate{
public static void main(String[] args){
SessionFactory sf=new Configuration.configure().buildSessionFactory();//建立SessionFactory
Session s=sf.openSession();//通过SessionFactory获取一个Session并打开
s.beginTransaction();//在Session的基础上打开事务
Product p=new Product();//创建Product对象
p.setName("demo");
p.setPrice(100);
s.save(p);//调用Session的save()方法保存对象的数据 s.getTransaction().commit();//提交事务
s.close();//关闭Session
sf.close();//关闭SessionFactory
}
}

基本原理:

应用程序通过Hibernate把一个Product对象插入到数据库的product_table中,首先通过配置文件hibernate.cfg.xml提供链接数据库的基本信息,账号,密码,数据库ip,端口等信息,建立数据库连接,然后通过Product.hbm.xml提供的对象与表的映射关系,映射到数据库表中去。

一、持久层框架(Hibernate)的更多相关文章

  1. 菜鸟学习Hibernate——持久层框架

    一.Java操作数据库的阶段. Java对数据库进行操作经历了三个阶段. 1.1操作JDBC阶段 这个阶段就是利用JDBC类来操作数据库.这个阶段出现了两个问题: 代码过度重复:在每一次数据库操作的是 ...

  2. Hibernate数据库持久层框架

    Hibernate是一种Java语言下的对象关系映射解决方案. 它是使用GNU宽通用公共许可证发行的自由.开源的软件.它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架.Hib ...

  3. Hibernate: 数据持久层框架

    Hibernate 是一种Java语言下的对象关系映射解决方案. 它是使用GNU宽通用公共许可证发行的自由.开源的软件.它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架.Hi ...

  4. MyBatis持久层框架使用总结

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis . 2 ...

  5. .NET平台下,关于数据持久层框架

    在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源: 1.NHibernate 2.NBear 3.Castle ActiveRecord 4.iBATIS ...

  6. 持久层框架之MyBatis

    1.mybatis框架介绍: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...

  7. Java数据持久层框架 MyBatis之背景知识三

    摘录自:http://www.cnblogs.com/lcngu/p/5437281.html 对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.or ...

  8. MyBatis持久层框架学习之01 MyBatis的起源和发展

    一.MyBatis的简介  MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.    MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyB ...

  9. MyBatis持久层框架使用总结 转载

    MyBatis持久层框架使用总结   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...

  10. 持久层框架:MyBatis 3.2(1)

    MyBatis 的前身就是 iBatis .是一个数据持久层(ORM)框架. iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架.iBATIS提供的持久 ...

随机推荐

  1. 【译】第16节---数据注解-Table

    原文:http://www.entityframeworktutorial.net/code-first/table-dataannotations-attribute-in-code-first.a ...

  2. HDU 3526 Computer Assembling(最小割)

    http://acm.hdu.edu.cn/showproblem.php?pid=3526 题意:有个屌丝要配置电脑,现在有n个配件需要购买,有两家公司出售这n个配件,还有m个条件是如果配件x和配件 ...

  3. Django2.2安装

    Django2.2安装 https://media.djangoproject.com/releases/2.2/Django-2.2.tar.gz 解压 tar -zvxf Django-2.2.t ...

  4. C/C++.文件是否存在

    1. 2._access, _waccess.html(https://msdn.microsoft.com/en-us/library/1w06ktdy.aspx) int _access( con ...

  5. DP入门基本问题

    个人对简单的dp问题的理解:找是否有重叠问题,明确递推关系,怎么推的(顺序千万不要搞错),找到状态方程,循环时注意边界条件和方程式是否严格成立. 转自:https://www.cnblogs.com/ ...

  6. Codeforces 1077 F2 - Pictures with Kittens (hard version)

    F2 - Pictures with Kittens (hard version) 思路: 单调队列优化dp 代码: #pragma GCC optimize(2) #pragma GCC optim ...

  7. Python redis 简单介绍

    Python redis 简单介绍 1.安装 终端输入: pip(or)pip3.6 install redis 安装成功 2.哈哈,发现我并没有redis服务可以访问,所以到这里,在本机安装了red ...

  8. Linux中apt与apt-get命令的区别与解释

    2019-01-15 14:35:39 随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版 ...

  9. Java通过ftp上传文件

    首先,pom.xml添加引用 <dependency> <groupId>commons-net</groupId> <artifactId>commo ...

  10. LeetCode--496--下一个更大元素I(java)

    给定两个没有重复元素的数组 nums1和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nums1 中数字 x 的下一个更大 ...