Hibernate框架入门学习

版权声明:翀版 https://blog.csdn.net/biggerchong/article/details/84229658

1.Hibernate框架入门


目录

1.Hibernate框架入门

1.1什么是Hibernate框架?

1.2为什么使用Hibernate框架?

1.3怎样使用Hibernate框架?

1.3.1 搭建Hibernate环境

1.3.2 创建表与实体类

1.3.3 创建文件映射(关键)

1.3.4 创建Hibernate核心映射(关键)

1.3.4 使用Hibernate API


 

1.1什么是Hibernate框架?

框架:软件的半成品,已经实现部分功能。

 

Hibernate框架是一种持久层的ORM(object relational mapping)框架,实现了数据库中表、字段与持久层中的类、成员变量之间的映射关系,使得我们可以通过操作类对象来对数据库中的表进行CRUD(create 、retrieve、update、delete)操作。

 

J2EE经典三层结构:

 

ORM概述:


1.2为什么使用Hibernate框架?


1.3怎样使用Hibernate框架?

1.3.1 搭建Hibernate环境

Hibernate5.x是目前较新的版本,也是目前企业流行的版本,这里以Hibernate5.0.7为例进行Hibernate的学习.

下载Hibernate5.0.7:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/

        

Hibernate文件目录说明:

1. DocumentationHibernate开发文档

2. LibHibernate 的Jar包Required:

  •                    Hibernate核心也是必须的Jar包
  •                   Optional: Hibernate可选择的Jar包

3. ProjectHibernate官方提供的实例

 

引入Jar包支持:

创建一个Java Object项目来进行Hibernate入门学习,并引入如下的jar包支持,Java Object中还用手工将jar包build path一下;引入jar包如下:

  1. Hibernate必须包
  2. C3p0支持包(可选jar包)
  3. log支持包
  4. 数据库驱动包

 

1.3.2 创建表与实体类

创建数据表cust_customer(MYSQL数据库):

CREATE TABLE `cst_customer` (

  `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 '移动电话',

  PRIMARY KEY (`cust_id`)

) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

 

创建实体类Customer (并添加setter/getter方法、重写toString方法)

1.3.3 创建文件映射(关键)

创建文件映射Customer.hbm.xml文件:

         标签及属性介绍:

1. Class标签:实体类与数据表之间的映射关系

  1. Name属性      :实体类路径
  2. Table属性        :对应的数据表名
  3. Catalog属性   :对应的数据库名(可省略)

 

2. Id标签:特定成员变量与主键之间的映射关系

  1. Name属性      :特定成员变量名
  2. Column属性   :表中的主键字段名(类中的属性名和表中的字段名如果一

                                                                                    column可以省略)

  1. Length属性     :长度
  2. type 属性         :类型
  3. Generator属性:标识符生成器

 

3. Property标签:普通成员变量与数据库普通字段之间的映射关系

  1. Name属性      :普通成员变量名
  2. Column属性   :表中的普通字段名
  3. Length属性     :长度
  4. type 属性         :类型

  

 

1.3.4 创建Hibernate核心映射(关键)

创建Hibernate映射文件hibernate.cfg.xml文件:

 

Hibernate的核心配置:

 1. 必须的配置

    连接数据库的基本的参数

  1. 驱动类
  2. url路径
  3. 用户名
  4. 密码

  2. 方言

  3.可选的配置

  1. 显示SQL           :hibernate.show_sql
  2. 格式化SQL      :hibernate.format_sql
  3. 自动建表         :hibernate.hbm2ddl.auto
    1. none                   :不使用hibernate的自动建表
    2. create                :如果数据库中已经有表,删除原有表,重新创建,如果没有表,新建表。(测试)
    3. create-drop      :如果数据库中已经有表,删除原有表,执行操作,删除这个表。如果没有表,新建一个,使用完了删除该表。(测试)
    4. update              :如果数据库中有表,使用原有表,如果没有表,创建新表(更新表结构)
    5. validate            :如果没有表,不会创建表。只会使用数据库中原有的表。(校验映射和表结构)。

 

  映射文件的引入       

    1. 引入映射文件的位置

 

  加入C3p0支持:

 

1.3.4 使用Hibernate API

Hibernate API使用步骤:

         //1.加载hibernate核心配置

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

 

         //2.创建一个SessionFactory对象:jdbc连接池

         SessionFactory sessionFactory=configuration.buildSessionFactory();

                  

         //3.获得session对象:jdbc中的Connection

         Session session=sessionFactory.openSession();

                  

         //4.手动开启事务

         Transaction transaction=session.beginTransaction();   

                  

         //5.编写代码

         ---------处理事情--------

                  

         //6.事务提交

         transaction.commit();

                                    

         //7.资源释放

         session.close();

 

详细介绍:

(1)Configuration用来加载hibernate的核心配置文件,配置文件可以是xml格式、属性文件格式。

         1.Xml格式加载配置文件的方法:

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

         2.属性文件格式加载配置文件的方法:

Configuration configuration=new Configuration();

由于属性文件中不能将文件映射到hibernate的核心文件中,故这种方法需要编程将文件映射进来:

configuration.addResource(“ com/sc/demo1/Customer.hbm.xml ”);

 

(2) SessionFactory: session工厂,内部维护了Hibernate线程池和二级缓存,是线程安全的,一个项目创建一次即可。

使用:     SessionFactory sessionFactory = configuration.buildSessionFactory( );

                   Session session = sessionFactory.openSession( );

 

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

  1. session.save( );                                 保存操作
  2. session.get( ); session.load( );      都是查询操作,load是延时查询;get是立即查询
  3. session.update( );                           更新操作
  4. session.delete( );                               删除操作

  

4Transaction: Hibernate中管理事务的对象。

  1. transaction transaction=session.beginTransaction( );        手动开启事务
  2. transaction.commit( );                                                                    提交事务
  3. transaction.rollback( );                                                                   事务回滚

 

session对数据库的CRUD操作:

                   //保存

                   Customer customer=new Customer();

                   customer.setCust_id(201622);

                   customer.setCust_name("xiao");

                   session.save(customer);

                  

                   //id查询

                            //(1)get方法

                   Customer customer11=session.get(Customer.class, 7l);

                   System.out.println("get方法customer11:"+customer11);

                           //(2)load方法

                   Customer customer12=session.load(Customer.class, 7l);

                   System.out.println("load方法customer12:"+customer12);

                  

                   //修改

                           //(1)直接修改

                   Customer customer21=new Customer();

                   customer21.setCust_id(7l);

                   customer21.setCust_name("汪雪飞");

                   session.update(customer21);

                   System.out.println("直接修改方法customer21:"+customer21);

                            //(2)间接修改

                   Customer customer22=session.get(Customer.class, 12l);

                   customer22.setCust_name("xiao飞飞");

                   session.update(customer22);

                   System.out.println("间接修改方法customer22:"+customer22);

                  

                  //删除

                            //(1)直接删除

                   Customer customer31=new Customer();

                   customer31.setCust_id(7l);

                   session.delete(customer31);

                            //(2)间接删除(适合级联删除)

                   Customer customer32=session.get(Customer.class, 12l);

                   session.delete(customer32);


下接Hibernate持久化类详解:https://blog.csdn.net/biggerchong/article/details/84260707

                                                                  ---------谢谢您的阅读!加油!              ----------知飞翀

猜你喜欢

转载自blog.csdn.net/biggerchong/article/details/84229658
今日推荐