创建 HibernateSessionFactory.java
package cn.util; import org.hibernate.HibernateException; import org.hibernate.cfg.Configuration; import org.hibernate.classic.Session; public class HibernateSessionFactory { private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; //给线程绑定一个Session 比类级别更加安全 private static final ThreadLocal threadLocal = new ThreadLocal(); private static Configuration configuration = new Configuration(); private static org.hibernate.SessionFactory sessionFactory; private static String configFile = CONFIG_FILE_LOCATION; //运行一次 先于类构造方法完成 内存寄存器位置 static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err .println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } //获得连接 public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err .println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } //关闭资源 public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return session factory * * session factory will be rebuilded in the next call */ public static void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; } }
测试文件
package cn.test; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import cn.entity.User; import cn.util.HibernateSessionFactory; public class SaveTest { // 使用save方法保存 public static void main(String[] args) { Session session = HibernateSessionFactory.getSession(); User user = new User("左阻", 25, 1.73); Transaction tx = null; try { tx = session.beginTransaction(); session.save(user); tx.commit();// 隐式调用刷新方法 System.out.println("保存成功"); } catch (HibernateException e) { e.printStackTrace(); tx.rollback(); } finally { HibernateSessionFactory.closeSession(); } } }
效果图:
相关推荐
`saveOrUpdate`是Hibernate提供的一种便捷方法,用于处理对象的保存或更新操作。在深入讲解`saveOrUpdate`之前,我们先理解一下Hibernate的基本概念。 在Hibernate中,实体类(Entity Class)代表数据库中的表,...
本文将深入探讨Hibernate中的save、persist和merge这三个方法,帮助开发者更好地理解它们的用法和内在机制。 一、save()方法 save()是Hibernate早期版本中最常用的方法,用于将对象持久化到数据库中。当调用Session...
首先,`session.save()`是Hibernate中的一个关键方法,用于将一个新的或已更新的对象状态保存到数据库中。在模拟这个功能时,我们需要关注以下几点: 1. **对象状态管理**:在Hibernate中,对象有三种状态:瞬时态...
本文将详细介绍Hibernate持久层中的一些核心方法,包括`session.load`, `session.find`, `session.iterator`, `session.save`, `session.update`, `session.saveorupdate`。 1. `session.load()`: - `load()`方法...
当使用Hibernate的`getHibernateTemplate().save()`方法尝试保存数据时,如果数据没有被保存到数据库,可能有以下几个原因: 1. **事务管理**:在默认情况下,Hibernate不会自动开启和提交事务。如果在代码中没有...
以下是 Hibernate 中对象的三种状态以及相关的保存方法: 1. **瞬时对象(Transient Objects)** - 当使用 `new` 关键字创建一个对象时,它处于瞬时状态。这种状态的对象与数据库中的任何记录没有关联,只存在于...
- **save** 方法主要用于将一个瞬态对象保存到数据库中。当调用此方法时,Hibernate会生成一条SQL INSERT语句来将该对象的数据插入到数据库中。如果该对象已经处于持久化状态,则调用`save`方法将会抛出异常。 - *...
对于更新和删除操作,可以使用`scroll()`方法,这在Hibernate 2.1.6或更高版本中是支持的。`scroll()`方法返回一个`ScrollableResults`对象,允许我们以游标方式处理结果集,这在处理大量数据时非常有效。同样,我们...
Session提供了保存、更新、删除和检索对象的方法。事务管理在Hibernate中通常是自动的,可以通过Transaction接口进行控制。 ```java SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session ...
这篇博客文章“hibernate一对多关联映射(单向关联)”将深入讲解如何配置和使用这种映射关系。 在单向关联中,只有一个实体知道另一个实体的存在,也就是说,只有父实体("一"的一端)有对子实体("多"的一端)的...
例如,`save()`方法用来持久化新对象,`saveOrUpdate()`判断对象是否已存在,如果不存在则保存,否则更新,`update()`更新已存在的对象,`delete()`则是删除对象。 6. **查询操作** Hibernate提供了两种主要的查询...
总的来说,HibernateTemplate提供了一组强大的方法来简化Hibernate的日常操作,涵盖了从简单的数据存取到复杂的数据库操作,极大地提升了开发效率。在实际应用中,根据数据量、性能需求以及业务逻辑,选择合适的方法...
在Java中,Blob和Clob是JDBC API提供的接口,但在Hibernate中,我们可以通过Session对象的save()或saveOrUpdate()方法来操作这些大数据对象。 首先,我们需要在实体类中定义对应的属性。例如,对于一个包含图片信息...
### Hibernate 使用手册知识点详解 #### 一、简介 ...通过以上详细介绍,初学者可以更好地理解和掌握 Hibernate 的基本概念和使用方法。对于进一步深入学习,建议查阅官方文档和相关教程,不断实践和积累经验。
6. **保存/更新对象**: 要将对象保存到数据库,使用`save()`或`saveOrUpdate()`方法。例如,创建一个新的User对象并保存: ```java User user = new User(); user.setName("John Doe"); session.save(user); ...
在 Hibernate 框架中,我们可以使用两种方法来配置参数: 1. **根据参数名称设置参数**:这是较为直观的一种方式,它允许我们直接通过参数名来进行设置,提高了代码的可读性和可维护性。 ```java Query query = ...
- **保存(Save)**:使用Session的save()方法,将对象持久化到数据库。如果对象没有ID,Hibernate会根据配置的主键策略生成并分配ID。 - **更新(Update)**:调用Session的update()方法,将已存在的对象状态同步...
这个基类会包含一些通用的CRUD(Create, Read, Update, Delete)方法,如`save(T entity)`用于保存对象,`getById(ID id)`用于根据ID获取对象等。然后,对于每个实体类,你只需要创建一个接口,继承自`...