Hibernate框架入门配置

た 入场券 2022-12-02 04:21 358阅读 0赞

Hibernate框架入门

第一章

1、Hibernate框架的学习路线

第一篇:Hibernate的入门(Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD)。
第二篇:Hibernate的一级缓存、其他的API。
第三篇:Hibernate的一对多配置、Hibernate的多对多的配置。
第四篇:Hibernate的查询方式、抓取策略。


2、CRM

(1)CRM的概述(了解)

(2)什么是CRM
CRM:Customer Relationship Management(客户关系管理)。

(3)CRM有哪些模块?
6大模块:
客户信息管理,联系人管理,客户拜访管理。
综合查询,统计分析,联系管理。


3、Hibernate的框架的概述

(1)什么是框架?
框架:指的是软件的半成品,已经完成了部分功能。

(2)Java EE的三层架构:
在这里插入图片描述


(3)什么是Hibernate框架?
Hibernate是一个持久层的ORM框架。

具体信息百度去。


(4)那什么是ORM?

ORM:Object Relational Mapping(对象关系映射)。
指的是将一个Java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表。

在这里插入图片描述


第二章:Hibernate的安装

1、下载Hibernate的开发环境
Hibernate3.x,Hibernate4.x,Hibernate5.x

下载链接:
https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/


2、下载解压后:
documentation:Hibernate开发的文档
lib:Hibernate开发包

  • required:Hibernate开发的必须的依赖包
  • optional:Hibernate开发的可选的jar包

project:Hibernate提供的项目案例


3、创建一个项目,引入jar包:

  • 数据库驱动包
  • Hibernate开发的必须的jar包
  • Hibernate引入日志记录包

在这里插入图片描述


4、配置文件

(1)数据库中应该有你想要操作的表结构。
例如study_test数据库中有个表t_user。
其字段为:id(自动增长),username,password。

(2)创建实体类
类名最好和表名一致。

  1. package com.pipi.hibernate;
  2. public class User {
  3. // 属性尽量全部用包装类,即用引用类型
  4. private Integer id;
  5. private String username;
  6. private String password;
  7. // setter and getter
  8. // ....
  9. // 无参构造一定要写,有参数构造也可以加上
  10. public User() { }
  11. @Override
  12. public String toString() {
  13. //....
  14. }
  15. }

(3)创建映射文件
映射需要通过XML的配置文件来完成,这个配置文件可以任意命名。
尽量统一命名规范(类名.hbm.xml)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  3. <hibernate-mapping>
  4. <!-- 建立类与表的映射 -->
  5. <class name="com.pipi.hibernate.User" table="t_user">
  6. <!-- 建立类中的属性与表中的主键对应 -->
  7. <id name="id" column="id" >
  8. <!-- 配置主键生成策略 -->
  9. <generator class="native"/>
  10. </id>
  11. <!-- 建立类中的普通的属性和表的字段的对应 -->
  12. <property name="username" column="username" length="16" />
  13. <property name="password" column="password" length="16"/>
  14. </class>
  15. </hibernate-mapping>

(4)创建一个Hibernate的核心配置文件(重点)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  3. <hibernate-configuration>
  4. <session-factory>
  5. <!-- 连接数据库的基本参数 -->
  6. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  7. <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/study_test</property>
  8. <property name="hibernate.connection.username">root</property>
  9. <property name="hibernate.connection.password">123456</property>
  10. <!-- 配置Hibernate的方言 -->
  11. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  12. <!-- 可选配置================ -->
  13. <!-- 打印SQL -->
  14. <property name="hibernate.show_sql">true</property>
  15. <!-- 格式化SQL -->
  16. <property name="hibernate.format_sql">true</property>
  17. <!-- 自动创建表 -->
  18. <property name="hibernate.hbm2ddl.auto">update</property>
  19. <!-- 配置C3P0连接池 -->
  20. <property name="connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
  21. <!--在连接池中可用的数据库连接的最少数目 -->
  22. <property name="c3p0.min_size">5</property>
  23. <!--在连接池中所有数据库连接的最大数目 -->
  24. <property name="c3p0.max_size">20</property>
  25. <!--设定数据库连接的过期时间,以秒为单位, 如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
  26. <property name="c3p0.timeout">120</property>
  27. <!--每3000秒检查所有连接池中的空闲连接,以秒为单位-->
  28. <property name="c3p0.idle_test_period">3000</property>
  29. <!-- 设置事务的隔离级别,MySQL默认是4,即可重复读 -->
  30. <property name="hibernate.connection.isolation">4</property>
  31. <!-- 配置当前线程绑定的事务 -->
  32. <property name="hibernate.current_session_context_class">thread</property>
  33. <!--绑定映射文件-->
  34. <mapping resource="dirs/User.hbm.xml"/>
  35. </session-factory>
  36. </hibernate-configuration>

(5)测试代码

  1. package com.pipi.hibernate;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.cfg.Configuration;
  6. // 入门案例
  7. public class Test01 {
  8. public static void main(String[] args) {
  9. // 1、加载Hibernate的核心配置文件
  10. Configuration configuration = new Configuration().configure();
  11. // 2、创建一个SessionFactory对象,类似于JDBC中的连接池
  12. SessionFactory sessionFactory = configuration.buildSessionFactory();
  13. // 3、通过SessionFactory获取到Session对象,类似于JDBC中的Connection
  14. Session session = sessionFactory.openSession();
  15. // 4、手动开启事务
  16. Transaction transaction = session.beginTransaction();
  17. // 5、准备存储的数据
  18. User user = new User();
  19. user.setUsername("赵六");
  20. user.setPassword("abc123");
  21. // 6、保存
  22. session.save(user);
  23. // 7、事务提交
  24. transaction.commit();
  25. // 8、释放资源
  26. session.close();
  27. }
  28. }

注意:如遇到javax.xml.bind.JAXBException
解决方案:https://blog.csdn.net/pipizhen_/article/details/108300039


发表评论

表情:
评论列表 (有 0 条评论,358人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hibernate框架入门教程

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,是一个全自动的 ORM 框架。 Hibernate 自动生成 SQL...