Java中使用Hibernate系列之加载并存储对象学习(第三节)
Java学习网(www.javalearns.com)提拱
经过第一、二节的学习,现在可以使用Hibernate来加载和存储对象了,先编写一个带有main()方法的EventManager类:
网络配图
代码如下:
package events;
import org.hibernate.Session;
import java.util.Date;
import util.HibernateUtil;
public class EventManager {
public static void main(String[] args) {
EventManager mgr = new EventManager();
if (args[0].equals("store")) {
mgr.createAndStoreEvent("My Event", new Date());
}
HibernateUtil.getSessionFactory().close();
}
private void createAndStoreEvent(String title, Date theDate) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Event theEvent = new Event();
theEvent.setTitle(title);
theEvent.setDate(theDate);
session.save(theEvent);
session.getTransaction().commit();
}
}
我们创建了个新的Event对象并把它传递给Hibernate,现在Hibernate负责与SQL进行沟通,并把INSERT命令传给数据库;在运行之前,让我们看一下处理Session和Transaction的代码。
一个Session就是个单一的工作单元,我们假设HibernateSession和数据库事务是一一对应的,这是为了让我们的代码从底层的事务系统中脱离出来。
网络配图
sessionFactory.getCurrentSession()是做什么的呢?首先,只要你持有SessionFactory,可以在任何时候、任何地点调用这个方法,getCurrentSession()方法会返回“当前的”工作单元。
Session在第一次被使用的时候,即第一次调用getCurrentSession()的时候,其生命周期就开始,然后它被Hibernate绑定到当前线程中,当事务结束的时候,不管是提交还是回滚,Hibernate都会自动把Session从当前线程剥离,并且关闭它。
假若你再次调用getCurrentSession(),你会得到一个新的Session,并且开始一个新的工作单元,这种线程绑定(thread-bound)的编程模型(model)是使用Hibernate的最广泛的方式,因为它支持对你的代码灵活分层(事务划分可以和你的数据访问代码分离开来,在本教程的后面部分就会这么做)。
网络配图
好了,这一节的学习先到这里,后面章节中会继续学习Hibernate。我们学习方式是每一节学习一个知识点(每天花10分钟学习)。
请↙↙↙点击“阅读原文” ….
- 颍州区医共体中心药房正式投入使用
- 颈椎不好,只需一个小方法,就解决了
- 每日一图 | 降低天然气使用能够减少多少碳排放?
- 幻想一夜暴富,大悟男子使用防狼喷雾流窜抢劫两金店
- 微信最新版本推出三大重磅功能!又搞大事情了!你使用这些新功能
- 天津规定自愿换领新能源车号牌 不换领可正常使用
- 怎么使用 SVG 作为一个图像占位符
- 7 个使用 bcc/BPF 的性能分析神器
- Docker:使用多阶段构建镜像
- 乱点眼药水小心酿大祸,这些使用常识你要知道