使用 Hibernate 完成持久化操作 七大 步骤:
1、读取并解析配置文件及映射文件:
Configuration configuration=new Configuration().configure();
根据默认位置的 Hibernate 配置文件中的信息,构建 Configuration 对象。 Configuration 负责管理 Hibernate 的配置信息。
2、依据配置文件和映射文件中的信息,创建 SessionFactory 对象;
SessionFactory sessionFactory=configuration.buildSessionFactory();
Configuration 对象会根据当前的数据库配置信息, 构造 SessionFactory 对象。SessionFactory 对象一旦构造完毕,Configuration 对象的任何变更不会影响已经创建的 SessionFactory 对象。
如果 Hibernate 配置信息有改动,那么需要基于改动后的 Configuration 对象重新构建一个 SessionFactory 对象。
3、打开 Session ;
Session session=sessionFactory.getCurrentSession(); 或 sessionFactory.openSession();
SessionFactory 负责创建 Session 对象。Session 是持久化操作的基础。Session 作为贯穿 Hibernate 的持久化管理的核心,提拱了众多持久化方法,如 save()、delete()、update()、get()、load()等...
通过这些方法,即可透明地完成对象的 增删改查(CRUD)
4、开始一个事务;
Tansaction tx = session.beginTansaction();
5、数据库操作;
session.save();//保存操作
6、结束事务;
tx.commit();//提交事务 或 回滚事务
7、如果是通过 SessionFactory 的 openSession() 方法获取的 Session 对象,则需要关闭 session。
session.close();
提示:如果在 Hibernate 配置文件中将参数 current_session_context_class 设置为 thread,并采用 SessionFactory 的 getCurrentSession()方法 获得 Session 对象。
则不需要执行 session.close() 方法,通过这种方式获得的Session 对象,会在关联的事务结束(提交或回滚)时自动关闭。
更新数据的方法:
1): update() 方法,用于将游离的对象恢复为持久状态,同时进行数据库更新操作。当参数对象的 OID 为 null 时会报错异常
2):saveOrUpdate()方法,同时包含了save()与update()方法的功能,如果入参是瞬时状态的对象,就调用 save()方法;如果入参是游离状态的对象,则调用update()方法。
3):merge()方法,能够把作为参数传入的游离状态对象的属性 复制到一个拥有相同 OID 的持久状态对象中,通过对持久状态的对象的脏检查实现更新操作,并返回该持久状态对象;
如果无法从Session 缓存或数据库中加载到相应的持久状态对象,即传入的是瞬时对象,则创建其副本执行插入操作,并返回这一新的持久状态对象。无论何种情况,传入的对象状态都不受影响。
案例目录结构:

1):环境搭建前期准备:
目前以及后期需要的 JAR:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.3</version> </dependency> <!-- 添加Hibernate依赖 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.6.10.Final</version> </dependency> <!-- 添加Log4J依赖 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-nop</artifactId> <version>1.6.4</version> </dependency> <!-- 添加javassist --> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.12.0.GA</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency> <!-- mysql数据库的驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> </dependencies> <build> <!-- 加载我们的各种hbm.xml文件,如果hbm.xml文件在resources文件夹下面就不需要了--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build>

