一:Hibernate 的执行流程
这里写代码片
public void test(){
//1.创建SessionFactory对象
SessionFactory sessionFactory=null;
//1).创建Configuration对象:对应的hibernate的基本配置信息和对象关系映射信息
Configuration configuration=new Configuration().configure();
//2).创建一个ServiceRegistry对象:hibernate4.x新添加的对象
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
//3).
sessionFactory=configuration.buildSessionFactory(serviceRegistry);
//2.创建一个Session对象
Session session=sessionFactory.openSession();
//3.开启事务
Transaction transaction=session.beginTransaction();
//4.执行保存操作
News news=new News("aaaa","adada");
session.save(news);
//5.提交事务
transaction.commit();
//6.关闭Session 对象
session.close();
//7.关闭SessionFactory 对象
sessionFactory.close();
}
二:hibernate的优势
1:传统JDBC访问数据库操作步骤
1):加载驱动
2):建立连接
3):获取数据库操作对象
4):编写执行的sql
5):执行数据库操作
6):获取并操作结果集
7):关闭对象,回收数据库资源(关闭结果集–>关闭数据库操作对象–>关闭连接)
2:代码如下:
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1、加载数据库驱动( 成功加载后,会将Driver类的实例注册到DriverManager类中)
Class.forName("com.mysql.jdbc.Driver");
// 2、获取数据库连接
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbctest","root" , "root");
// 3、获取数据库操作对象
stmt = conn.createStatement();
// 4、定义操作的SQL语句
String sql = "select * from user where id = 100";
// 5、执行数据库操作
rs = stmt.executeQuery(sql);
// 6、获取并操作结果集
while (rs.next()) {
System.out.println(rs.getInt("id"));
System.out.println(rs.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 7、关闭对象,回收数据库资源
if (rs != null) { //关闭结果集对象
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) { // 关闭数据库操作对象
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) { // 关闭数据库连接对象
try {
if (!conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3:hibernate优势(通过配置文件和映射文件将持久化对象映射到数据库表中)
1):Hibernate是JDBC的轻量级封装,封装了通过JDBC访问数据操作,是一个独立的对象持久化层框架
2):由于是对JDBC的轻量级封装,内存消耗小,运行效率快
3):开发效率高
4):拥有分布式、安全检查、集群、负载均衡的支持
5):具有可扩展性,自身功能不支持时,刻字机编码进行扩展
4:hibernate三种状态
1):瞬态:该对象与数据库中的数据没有任何关联(没有雨session相关联的实例)
2):持久态:该实体对存在于session相关联的实例,hibernate会根据持久态中对象的变化而更改数据库表中的数据
3):游离态:不再有与session相关联的实例