Hibernate使用套路,新手请进

简介: package cn.zhaoqinrong.MainApp;import org.apache.log4j.Logger;import org.hibernate.HibernateException;import org.

package cn.zhaoqinrong.MainApp; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import java.io.File; public class HibTest { private Logger logger=Logger.getLogger(HibTest.class); public void firstshow(){ Configuration conf=null;//加载Hibernate的配置文件 SessionFactory sf=null;//创建session Session session=null;//session实施持久化操作的关键API Transaction tx=null;//事务控制 try { //1.创建Configuration的实例,并加载配置文件 conf=new Configuration().configure("hibernate.cfg.xml"); logger.debug("加载配置文件成功"); //获取sessionFactory工厂实例 sf=conf.buildSessionFactory(); logger.debug("创建sessionFactory实例"); //通过sessionFactory来获取session对象 session=sf.getCurrentSession();//推荐使用 /* * SessionFactory.openSession来得到的session需要手工关闭,hibernate不会对其进行管理 * SessionFactory.getcurrentSession()得到的session由hibernate进行管理,不需要手动进行关闭,事务提交后,会话会自动关闭 * 在配置文件中配置 <property name="current_session_context_class">thread</property>,将session * 与线程进行绑定 * * */ logger.debug("创建session实例"); tx= session.beginTransaction(); logger.debug("事务开启"); //2.加载配置文件 //3. } catch (HibernateException e) { e.printStackTrace(); if(tx!=null){ tx.rollback();//session会自动关闭 } } finally { //如果使用open打开的session.必须使用finally对session进行关闭 } } }

 

package cn.zhaoqinrong.MainApp;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import java.io.File;



public class HibTest {
private Logger logger=Logger.getLogger(HibTest.class);
public void firstshow(){
Configuration conf=null;//加载Hibernate的配置文件
SessionFactory sf=null;//创建session
Session session=null;//session实施持久化操作的关键API
Transaction tx=null;//事务控制

try {
//1.创建Configuration的实例,并加载配置文件
conf=new Configuration().configure("hibernate.cfg.xml");
logger.debug("加载配置文件成功");
//获取sessionFactory工厂实例
sf=conf.buildSessionFactory();
logger.debug("创建sessionFactory实例");
//通过sessionFactory来获取session对象
session=sf.getCurrentSession();//推荐使用
/*
* SessionFactory.openSession来得到的session需要手工关闭,hibernate不会对其进行管理
* SessionFactory.getcurrentSession()得到的sessionhibernate进行管理,不需要手动进行关闭,事务提交后,会话会自动关闭
* 在配置文件中配置 <property name="current_session_context_class">thread</property>,session
* 与线程进行绑定
*
* */
logger.debug("创建session实例");
tx= session.beginTransaction();
logger.debug("事务开启");
//2.加载配置文件
//3.
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null){
tx.rollback();//session会自动关闭
}
} finally {
//如果使用open打开的session.必须使用finallysession进行关闭
}
}
}
相关文章
|
9月前
|
前端开发 JavaScript Java
前端小白的几个坏习惯
前端小白的几个坏习惯
|
11月前
|
SQL XML 存储
MyBatis这样用,同事直呼哇塞,堪称最佳实践
MyBatis是一款非常流行的ORM框架,相信很多小伙伴都在使用。我们经常会把它和MyBatis-Plus或者MBG一起使用,用多了之后对于其一些常规操作就不太熟悉了。最近总结了下MyBatis的实用用法和技巧,希望对大家有所帮助!
|
前端开发 Oracle 算法
卷王必备学习的MyBatis-Plus用法,不来瞧瞧吗~~
卷王必备学习的MyBatis-Plus用法,不来瞧瞧吗~~
115095 1
卷王必备学习的MyBatis-Plus用法,不来瞧瞧吗~~
|
存储 编译器 C++
类的入门<C++入门>(跑路人笔记)(3)
类的入门<C++入门>(跑路人笔记)
类的入门<C++入门>(跑路人笔记)(3)
|
编译器 C++
类的入门<C++入门>(跑路人笔记)(2)
类的入门<C++入门>(跑路人笔记)
类的入门<C++入门>(跑路人笔记)(2)
|
存储 编译器 C语言
类的入门<C++入门>(跑路人笔记)(1)
类的入门<C++入门>(跑路人笔记)
类的入门<C++入门>(跑路人笔记)(1)
|
Java 数据库连接 测试技术
来咯来咯!2021年,开发者对SpringBoot中实现约束验证,你懂得多少|牛气冲天新年征文
来咯来咯!2021年,开发者对SpringBoot中实现约束验证,你懂得多少|牛气冲天新年征文
108 0
外行人都能看懂的WebFlux,错过了血亏(一)
这篇文章主要讲解什么是WebFlux,带领大家入个门,希望对大家有所帮助(至少看完这篇文章,知道WebFlux是干嘛用的)
3970 0
外行人都能看懂的WebFlux,错过了血亏(一)
|
监控 前端开发 Java
外行人都能看懂的WebFlux,错过了血亏(二)
这篇文章主要讲解什么是WebFlux,带领大家入个门,希望对大家有所帮助(至少看完这篇文章,知道WebFlux是干嘛用的)
933 2
外行人都能看懂的WebFlux,错过了血亏(二)
|
安全 Java C#
程序老鸟C#学习:5天学会全部基础--第五天
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
242 0