Hibernate学习笔记(三)
来源:互联网 发布:李刚 疯狂java 编辑:程序博客网 时间:2024/05/16 17:39
五、加载并存储对象
我们可以使用 Hibernate 来加载和存储对象,编写一个带有 main()
方法的 EventManager
类:
package org.hibernate.tutorial;
import org.hibernate.Session;
import java.util.*;
import org.hibernate.tutorial.domain.Event;
import org.hibernate.tutorial.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();
}
}
在这里,
sessionFactory.getCurrentSession()
是干什么的呢?首先,只要你持有 org.hibernate.SessionFactory
,大可在任何时候、任何地点调用这个方法。getCurrentSession()
方法总会返回“当前的”工作单元。我们在hibernate.cfg.xml
中把这一配置选项调整为 "thread"。因此,当前工作单元被绑定到当前执行我们应用程序的 Java 线程。但是,这并非是完全准确的,你还得考虑工作单元的生命周期范围(scope),它何时开始,又何时结束。
注意:Hibernate 提供三种跟踪当前会话的方法。基于“线程”的方法不适合于产品环境,它仅用于 prototyping 和教学用途。后面将更详细地讨论会话跟踪。
和工作单元的生命周期这个话题相关,Hibernate org.hibernate.Session 是否被应该用来执行多次数据库操作?上面的例子对每一次操作使用了一个 org.hibernate.Session,这完全是巧合,这个例子不是很复杂,无法展示其他方式。Hibernate org.hibernate.Session 的生命周期可以很灵活,但是你绝不要把你的应用程序设计成为每一次数据库操作都用一个新的 Hibernate org.hibernate.Session。因此就算下面的例子(它们都很简单)中你可以看到这种用法,记住每次操作一个 session 是一个反模式。
- Hibernate学习笔记(三)
- Hibernate学习笔记(三)
- hibernate学习笔记(三)
- Hibernate学习笔记(三)
- Hibernate学习笔记(三)
- Hibernate学习笔记(三)
- hibernate学习笔记(三)
- hibernate学习笔记(三)
- hibernate学习笔记三
- hibernate学习笔记三
- Hibernate学习笔记三
- hibernate学习笔记(三)
- Hibernate学习笔记三
- Hibernate学习笔记(三)
- hibernate学习笔记三
- Hibernate学习笔记(三)【配置详解】
- Hibernate学习笔记(三)Session
- Hibernate学习笔记(三)【配置详解】
- iBatis一些非见用法
- 事件和委托的C++实现
- webform报错:The HTTP verb POST used to access path * is not allow的解决办法
- Android 系统应用调用,intent的使用总结帖(转自android专区)
- LESSON 5 SYSTEM IDENTIFICATION part I
- Hibernate学习笔记(三)
- linux下基于jrtplib库的实时传送实现
- 在Eclipse中用JDBC连接Sql Server 2005总结.doc
- 注册和卸载windows服务进程
- Peacomm-C-Cracking-the-nutshell.html
- Hibernate学习笔记(四)
- 一切都是最好的安排
- 使用命令安装和卸载服务
- 极限挑战—C#+ODP 100万条数据导入Oracle数据库仅用不到1秒