hibernate详细教程

Posted csh520mjy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate详细教程相关的知识,希望对你有一定的参考价值。

一、下载hibernate开发环境

1.https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/

2.创建一个项目,首先引入jar包。

 技术图片

 

3. 创建数据库表

CREATE TABLE `customer` (

  `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT ‘客户编号(主键)‘,

  `cust_name` varchar(32) COLLATE utf8_unicode_ci NOT NULL COMMENT ‘客户名称(公司名称)‘,

  `cust_source` varchar(32) COLLATE utf8_unicode_ci DEFAULT ‘null‘ COMMENT ‘客户信息来源‘,

  `cust_industry` varchar(32) COLLATE utf8_unicode_ci DEFAULT ‘null‘ COMMENT ‘客户所属行业‘,

  `cust_level` varchar(32) COLLATE utf8_unicode_ci DEFAULT ‘null‘ COMMENT ‘客户级别‘,

  `cust_phone` varchar(64) COLLATE utf8_unicode_ci DEFAULT ‘null‘ COMMENT ‘固定电话‘,

  `cust_mobile` varchar(16) COLLATE utf8_unicode_ci DEFAULT ‘null‘ COMMENT ‘移动电话‘,

  PRIMARY KEY (`cust_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

4. 创建实体类Customer

 

private int 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;

 

5. 创建映射文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.itheima.bean">

<class name="Customer" table="customer">

<id name="cust_id">

<!-- generator:主键生成策略 -->

<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>

 

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

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<!-- 配置数据库驱动 -->

<property name="connection.driver_class">

com.mysql.jdbc.Driver

</property>

<!-- 配置数据库连接URL -->

<property name="connection.url">

jdbc:mysql://localhost:3306/cst_cuntmoer

</property>

<!-- 数据库user -->

<property name="connection.username">root</property>

<!-- 数据库user密码 -->

<property name="connection.password">admine</property>

<!-- 配置JDBC内置连接池 -->

<property name="connection.pool_size">1</property>

<!-- 配置数据库方言 -->

<property name="dialect">

org.hibernate.dialect.MySQLDialect

</property>

<!-- 输出运行时生成的SQL语句 -->

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

<!-- 配置对输出的SQL语句进行格式化 -->

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

 

<!-- 配置映射文件 -->

<mapping resource="com/itheima/bean/Customer.hbm.xml" />

</session-factory>

</hibernate-configuration>

6. 映射的配置(重要)

class标签的配置】

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

 属性:

 name :类的全路径

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

 catalog :数据库名

 id标签的配置】

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

 属性:

 name :类中的属性名

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

 length :长度

 type :类型

 property标签的配置】

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

 属性:

 name :类中的属性名

 column :表中的字段名

 length :长度

 type :类型

 not-null :设置非空

 unique :设置唯一

7. 核心配置文件(了解,自行百度即可,hibernate.cfg.xml

必须的配置

 连接数据库的基本的参数

 驱动类

 url路径

 用户名

 密码

 方言

 可选的配置

 显示SQL hibernate.show_sql

 格式化SQL hibernate.format_sql

 自动建表 hibernate.hbm2ddl.auto

 none :不使用hibernate的自动建表

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

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

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

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

 映射文件的引入

 引入映射文件的位置

 

 

8. 编写测试类

package com.itheima.hibernate.demo1;

 

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import org.junit.Test;

 

import com.itheima.bean.Customer;

import com.itheima.utils.HibernateUtils;

 

/**

 * 入门案例

 *

 * @author csh

 *

 */

public class HibernateDemo1

 

/**

 * 增加操作

 */

@Test

public void demo1()

// 加载核心配置文件

Configuration configuration = new Configuration().configure();

// 创建一个session工厂,类似于jdbc连接池

SessionFactory sessionFactory = configuration.buildSessionFactory();

// 获取session对象

Session session = sessionFactory.openSession();

// 手动开启事务

Transaction tranction = session.beginTransaction();

// 编写代码

Customer customer = new Customer();

customer.setCust_name("杨玉环");

session.save(customer);

 

tranction.commit();

session.close();

 

/**

 * 修改操作

 */

@Test

public void demo2()

// 加载核心配置文件

Session session = HibernateUtils.OpenSession();

Transaction tx = session.beginTransaction();

Customer customer = session.get(Customer.class, 1);

customer.setCust_name("暗杀回电话");

session.update(customer);

tx.commit();

session.close();

 

/**

 * 删除操作

 */

@Test

public void demo3()

// 加载核心配置文件

Session session = HibernateUtils.OpenSession();

Transaction tx = session.beginTransaction();

Customer customer = session.get(Customer.class, 1);

session.delete(customer);

tx.commit();

session.close();

 

/**

 * 保存或更新操作

 */

@Test

public void demo4()

// 加载核心配置文件

Session session = HibernateUtils.OpenSession();

Transaction tx = session.beginTransaction();

Customer customer = new Customer();

customer.setCust_id(1);

customer.setCust_name("刘鹗恶化");

session.saveOrUpdate(customer);

tx.commit();

session.close();

/**

 * 查询所有

 */

@Test

public void demo5()

// 加载核心配置文件

Session session = HibernateUtils.OpenSession();

Transaction tx = session.beginTransaction();

//接受HQL语句(面向对象查询语言)

/* Query query2 = session.createQuery("from Custonmer");

List<Customer> list2 = query2.list();

for (Customer customer : list2)

System.out.println(customer);

*/

 

//接受Sql语句

SQLQuery query = session.createSQLQuery("select * from customer");

List<Object[]> list = query.list();

for (Object[] object : list)

System.out.println(Arrays.toString(object));

tx.commit();

session.close();

 

 

 

HibernateUtils工具类:

package com.itheima.utils;

 

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

 

/**

 * hibernate抽取工具类

 * @author csh

 *

 */

public class HibernateUtils

 

private static final Configuration cfg;

private static final SessionFactory sf;

static

cfg= new Configuration().configure();

sf = cfg.buildSessionFactory();

 

public static Session OpenSession()

return sf.openSession();

9. Transaction:事务对象

Hibernate中管理事务的对象。

l commit();

rollback();一般在出错后面

以上是关于hibernate详细教程的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate入门程序

从零打造在线网盘系统之Hibernate框架起步

从零打造在线网盘系统之Hibernate查询与更新技术

SSH框架搭建 详细图文教程

从零打造在线网盘系统之Hibernate配置O/R映射

Hibernate不能实时获取MySQL数据库的更新