1、什么是hibernate
Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象,其优势之一:跨数据库的无缝移植
2、如何在项目中添加hibernate支持(手动添加)
a、添加hibernate相关依赖
b、在resource目录下添加hibernate.cfg.xml(核心配置文件)
添加DTD支持(具体操作在https://blog.csdn.net/weixin_42687829/article/details/82994891有详细介绍)
添加Hibernate的配置
数据库相关(connection.username|connection.password|connection.url|connection.driver_class|dialect)
调试相关(show_sql|format_sql)
hibernate.cfg.xml文件:
c、在开发阶段再创建实体类和实体映射文件(通常格式为*.hbm.xml)
实体必须实现Serializable接口
一个实体映射文件实例:
注:JavaBean的主键类型只能是int类型,因为在映射关系中配置是自动增长的,String类型是不能自动增长的。如果是你设置了String类型,又使用了自动增长,那么就会报出下面的错误Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘t_hibernate_user’ does
3、如何使用hibernate完成CRUD操作
a、CRUD操作步骤
读取配置
创建SessionFactory(建模获取sessionfactory)
打开Session
开启事务
执行数据库操作
提交事务/回滚事务
关闭Session
b、注意事项
4.2.1 hibernate默认使用的是手动事务,因此必须显示的开启和提交事务
4.2.2 删除操作时,必须先查再删
一个crud实例:
附:
SessionFactory对象:
SessionFactory代表数据库存储源。根据Hibernate配置文件创建对应的数据库存储源。
SessionFactory对象创建后,和Configuration对象再无关联。修改Configuration包含的配置文件信息,不会对SessionFactory有任何影响。
获取SessionFactory对象:new Configuration().configure().buildSessionFactory();对象的缓存很大,就称为重量级对象。SessionFactory存放了Hibernate配置信息,映射元数据信息等。是重量级对象。
Session对象:
代表程序和数据库的会话。Session提供了操作数据库的各种方法。是轻量级对象。
获取Session对象 :
factory.openSession(): 获取新的Session实例。
factory.getCurrentSession():采用该方法创建的Session会取出当前线程中的Session,底层使用ThreadLocal进行存取
Transaction对象:
封装了事务的操作。我们做增删改查等操作时,必须开启事务.
因为session是线程不安全的,这样主要是为了线程安全。保证数据的正确性。
开启事务: Transaction ts=session.beginTransaction();
提交事务:ts.commit();
回滚事务:ts.rollback();
当通过getCurrentSession获取当前线程绑定的Session时,事务关闭时,会自动把Session关闭并删除。