(一)导入Hibernate的jar包
a) Require里面的jar包都是必须要有的;
b) Hibernate规范jpa里面的Hibernate-entitymanager*.jar也是必须的;
c) 因为在使用Hibernate的时候有日志信息的输出,Hibernate本身没有支持日志信息的输出的jar包,所以需要导入其他的jar包,我们用log4j、slf4j
(二)创建实体类
使用Hibernate的时候不需要手动创建表,由Hibernate来完成。
(三)配置实体类和数据表一一对应关系(映射关系)——使用配置文件来实现
a) 创建xml格式的配置文件
映射配置文件名称和位置没有固定的要求,建议是在实体类所在的包里面,实体类名称.hbm.xml
b) 配置文件是xml格式的,在配置文件中首先要引入xml的约束,约束都是dtd的。
1 2 3 4 6 9 10 1112 14 58 5915 16 57com.mysql.jdbc.Driver 17 18 19jdbc:mysql://localhost/hibernate 20 21 22 root 23 24 25123456 26 27 2820 29 30 32true 33 34 3650 37 38 4023 41 42 43false 44 45 46true 47 48 49gbk 50 51 52org.hibernate.dialect.MySQLDialect 53 54 5556 60 61 69 7062 63 64 65 66 67 68 71 72 73 74 76WEB-INF/hibernate.cfg.xml 7577 78 11179 80 110org.hibernate.dialect.OracleDialect 81 82org.hibernate.hql.ast.ASTQueryTranslatorFactory 83 84true 85 86true 87 88true 89 90true 91 92true 93 94false 9516 96 97100 98 991 100 1011200 102 105100 1061 1071200 10810 109
(四)创建hibernate核心配置文件
核心配置文件也是xml的,但是核心配置文件名称和位置是固定的
位置:src下
名称:必须是hibernate.cfg.xml
Hibernate操作过程中,只会加载核心配置文件,其他配置文件不会加载,所以需要把*.hbm.xml配置到hibernate.cfg.xml中
第一部分:配置数据库的信息
第二部分:配置Hibernate信息
第三部分:将映射文件配置到hibernate.cfg.xml中
1 2 56 7 20com.mysql.jdbc.Driver 8123456 9jdbc:mysql://localhost:3306/test 10root 11 12true 13true 14update 15org.hibernate.dialect.MySQLDialect 16thread 17 1819
封装session(SessionFactory)
1 package com.chinasofti.entity; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6 7 public class HibernateUtil { 8 9 static Configuration configuration=null;10 static SessionFactory sessionFactory =null;11 static Session session=null;12 static {13 configuration=new Configuration();14 configuration.configure();15 sessionFactory = configuration.buildSessionFactory();16 session = sessionFactory.openSession();17 }18 public static SessionFactory getSessionFactory(){19 20 return sessionFactory;21 }22 public static Session getSession(){23 24 return session;25 }26 27 }
添加功能实现
第一步:加载hibernate核心文件
第二步:创建sessionfactory对象(为了创建session)
第三步:使用sessionfactory创建session对象
第四步:开启事务
第五步:写具体的逻辑
第六步:提交事务
第七步:关闭资源
效果:是否看到自动创建表,是否有记录添加。
1 @Test 2 public void testReplaceWife(){ 3 Session session = HibernateUtil.openSession(); 4 Transaction transaction = session.beginTransaction(); 5 //找到甘宝宝 6 Sec ganbaobao = session.get(Sec.class, 2); 7 8 Boss duanzhenchun = session.get(Boss.class, 1); 9 duanzhenchun.getSetSecs().remove(ganbaobao); 10 //找段誉 11 Boss duanyu = session.get(Boss.class, 2); 12 duanyu.getSetSecs().add(ganbaobao); 13 transaction.commit(); 14 }
Hibernate配置文件详解
Hibernate映射配置文件
细节问题:
1、映射配置文件名称和路径不是固定的 2、映射配置文件中,标签name属性值写实体类相关内容 2.1、class标签name属性值实体类全路径 2.2、id标签和property标签name属性值 实体类属性名称 3、Id标签和property,column属性是可以省略的 3.1、不写的时候值和name属性值一样的 4、Property标签type属性,一般我们不用,主要是用来设置数据库字段的类型,Hibernate会自动设置 |
Hibernate核心配置文件
1、配置写的位置必须在<Session-Factory>里面 2、配置要求,三部分 数据库必须的、hibenate部分可选、映射文件是必须的 3、核心配置文件名称和位置是固定的 位置src下,名称是hiberante.cfg.xml |
Hibernate 的API使用
Configuration
Configuration configuration = new Configuration(); configuration.configure(); |
说明:到src下面找到名称为hibernate.cfg.xml配置文件,创建对象,把配置文件放到对象里面(加载核心配置文件)
SessionFactory
1、使用configuration对象创建sessionFactory对象
a) 创建sessionfactory过程中做一些事情:即根据核心配置文件中,有数据库配置,有映射配置部分,到数据库里面根据映射关系把表创建
2、创建sessionfactory过程中,这个过程很消耗资源
a) 在hibernate操作中,建议一个项目一般创建一个sessionfactory
3、具体实现
a) 写工具类,写静态代码快实现
静态代码块在类加载的时候执行,执行一次
public class HibernateUtil { static Configuration CONFIGURATION = null; static SessionFactory SESSION_FACTORY = null; //静态代码块的实现 static{ CONFIGURATION = new Configuration(); CONFIGURATION.configure(); SESSION_FACTORY = CONFIGURATION.buildSessionFactory(); } //提供方法返回sessionFactory public static SessionFactory getSessionFactory(){ return SESSION_FACTORY; } } |
Session
1、session类似于jdbc中的Connection
2、调用session里面不同的curd方法,save、update、delete、根据id查询/get
3、Session对象的特点是单线程的,通俗的讲是只能自己用,别人不能用。
Transaction
1、事务对象(commit以及rollback)
2、事务特性:
a) 原子性
- 所有的操作要么都成功 要么都失败
b) 一致性
- 数据的一致性,转钱一方少钱,一方要多钱
c) 隔离性
- 多个事务操作同一条数据,彼此不影响
d) 持久性
- 因为事务要提交,保存到数据库中,这个就是持久化