`
chaoyi
  • 浏览: 306391 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate 使用save方法保存

 
阅读更多

创建 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();
		}
	}
}

 

效果图:

 

 

 

 

 

 

  • 大小: 53.2 KB
分享到:
评论

相关推荐

    hibernate 的saveOrUpdate

    `saveOrUpdate`是Hibernate提供的一种便捷方法,用于处理对象的保存或更新操作。在深入讲解`saveOrUpdate`之前,我们先理解一下Hibernate的基本概念。 在Hibernate中,实体类(Entity Class)代表数据库中的表,...

    Hibernate save persist merge探究

    本文将深入探讨Hibernate中的save、persist和merge这三个方法,帮助开发者更好地理解它们的用法和内在机制。 一、save()方法 save()是Hibernate早期版本中最常用的方法,用于将对象持久化到数据库中。当调用Session...

    模拟hibernate的session.save()功能

    首先,`session.save()`是Hibernate中的一个关键方法,用于将一个新的或已更新的对象状态保存到数据库中。在模拟这个功能时,我们需要关注以下几点: 1. **对象状态管理**:在Hibernate中,对象有三种状态:瞬时态...

    Hibernate持久层方法汇总

    本文将详细介绍Hibernate持久层中的一些核心方法,包括`session.load`, `session.find`, `session.iterator`, `session.save`, `session.update`, `session.saveorupdate`。 1. `session.load()`: - `load()`方法...

    hibernate保存不到数据1

    当使用Hibernate的`getHibernateTemplate().save()`方法尝试保存数据时,如果数据没有被保存到数据库,可能有以下几个原因: 1. **事务管理**:在默认情况下,Hibernate不会自动开启和提交事务。如果在代码中没有...

    Hibernate对象状态以及各种保存方法的区别

    以下是 Hibernate 中对象的三种状态以及相关的保存方法: 1. **瞬时对象(Transient Objects)** - 当使用 `new` 关键字创建一个对象时,它处于瞬时状态。这种状态的对象与数据库中的任何记录没有关联,只存在于...

    hibernate的各种保存方式的区别

    - **save** 方法主要用于将一个瞬态对象保存到数据库中。当调用此方法时,Hibernate会生成一条SQL INSERT语句来将该对象的数据插入到数据库中。如果该对象已经处于持久化状态,则调用`save`方法将会抛出异常。 - *...

    Hibernate下数据批量处理解决方案

    对于更新和删除操作,可以使用`scroll()`方法,这在Hibernate 2.1.6或更高版本中是支持的。`scroll()`方法返回一个`ScrollableResults`对象,允许我们以游标方式处理结果集,这在处理大量数据时非常有效。同样,我们...

    Hibernate使用指南tutorial

    Session提供了保存、更新、删除和检索对象的方法。事务管理在Hibernate中通常是自动的,可以通过Transaction接口进行控制。 ```java SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session ...

    hibernate一对多关联映射(单向关联)

    这篇博客文章“hibernate一对多关联映射(单向关联)”将深入讲解如何配置和使用这种映射关系。 在单向关联中,只有一个实体知道另一个实体的存在,也就是说,只有父实体("一"的一端)有对子实体("多"的一端)的...

    hibernate常用方法集合

    例如,`save()`方法用来持久化新对象,`saveOrUpdate()`判断对象是否已存在,如果不存在则保存,否则更新,`update()`更新已存在的对象,`delete()`则是删除对象。 6. **查询操作** Hibernate提供了两种主要的查询...

    Hibernate方法总结

    总的来说,HibernateTemplate提供了一组强大的方法来简化Hibernate的日常操作,涵盖了从简单的数据存取到复杂的数据库操作,极大地提升了开发效率。在实际应用中,根据数据量、性能需求以及业务逻辑,选择合适的方法...

    hibernate保存blob,clob对象

    在Java中,Blob和Clob是JDBC API提供的接口,但在Hibernate中,我们可以通过Session对象的save()或saveOrUpdate()方法来操作这些大数据对象。 首先,我们需要在实体类中定义对应的属性。例如,对于一个包含图片信息...

    hibernate使用手册

    ### Hibernate 使用手册知识点详解 #### 一、简介 ...通过以上详细介绍,初学者可以更好地理解和掌握 Hibernate 的基本概念和使用方法。对于进一步深入学习,建议查阅官方文档和相关教程,不断实践和积累经验。

    Hibernate的使用例子代码

    6. **保存/更新对象**: 要将对象保存到数据库,使用`save()`或`saveOrUpdate()`方法。例如,创建一个新的User对象并保存: ```java User user = new User(); user.setName("John Doe"); session.save(user); ...

    Hibernate3使用经验

    在 Hibernate 框架中,我们可以使用两种方法来配置参数: 1. **根据参数名称设置参数**:这是较为直观的一种方式,它允许我们直接通过参数名来进行设置,提高了代码的可读性和可维护性。 ```java Query query = ...

    Hibernate方法的实现

    - **保存(Save)**:使用Session的save()方法,将对象持久化到数据库。如果对象没有ID,Hibernate会根据配置的主键策略生成并分配ID。 - **更新(Update)**:调用Session的update()方法,将已存在的对象状态同步...

    Hibernate泛型Dao

    这个基类会包含一些通用的CRUD(Create, Read, Update, Delete)方法,如`save(T entity)`用于保存对象,`getById(ID id)`用于根据ID获取对象等。然后,对于每个实体类,你只需要创建一个接口,继承自`...

Global site tag (gtag.js) - Google Analytics