Hibernate实现CURD

1.编写SessionUtil,用来方便的获得SessionFactory和Session

每个SessionFactory根据配置文件中配置的数据库信息来连接数据库,因而会耗费大量资源,所以全局只需要一个即可。可以使用spring来实现,也可以使用单例Util类来保证全局只有一个SessionFactory

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public final class SessionUtil {
	private static SessionFactory sessionFactory = null;
	static
	{
		Configuration cfg = new Configuration();
		sessionFactory = cfg.configure().buildSessionFactory();
	}
	
	private SessionUtil(){}
	public static SessionFactory  getSessionFactory()
	{
		return sessionFactory;
	}
	public static Session getSession()
	{
		return sessionFactory.openSession();
	}
}

2.使用id来实现增删改查

2.1通用模板

因为获取session、打开事务、异常处理等操作是完全相同的,所以可以使用同一个模板来进行操作。

<span style="white-space:pre">	</span>public void xxx()
	{
		Session session = SessionUtil.getSession();
		Transaction tx = session.beginTransaction();
		try
		{
			//具体执行的操作
			tx.commit();
		}
<pre name="code" class="java"><span style="white-space:pre">		</span>//如果出错需要对事务进行回滚
catch(RuntimeException e){tx.rollback();throw e;}finally{session.close();}}
 
  

2.2插入操作

<span style="white-space:pre">	</span>public void save(User user)
	{
		Session session = SessionUtil.getSession();
		Transaction tx = session.beginTransaction();
		try
		{
			session.save(user);
			tx.commit();
		}
		catch(RuntimeException e)
		{
			tx.rollback();
			throw e;
		}
		finally
		{
			session.close();
		}
	}


2.3更新操作

<span style="white-space:pre">	</span>public void update(User user)
	{
		Session session = SessionUtil.getSession();
		Transaction tx = session.beginTransaction();
		try
		{
			session.update(user);
			tx.commit();
		}
		catch(RuntimeException e)
		{
			tx.rollback();
			throw e;
		}
		finally
		{
			session.close();
		}
	}

2.4查询操作

	public User queryById(int id)
	{
		Session session = SessionUtil.getSession();
//		Transaction tx = session.beginTransaction();
		try
		{
			User user = (User) session.get(User.class, id);
//			tx.commit();
			return user;
		}
		catch(RuntimeException e)
		{
//			tx.rollback();
			throw e;
		}
		finally
		{
			session.close();
		}
	}

2.5删除操作

<span style="white-space:pre">	</span>public void delete(int id)
	{
		Session session = SessionUtil.getSession();
		Transaction tx = session.beginTransaction();
		try
		{
			User user = queryById(id);
			session.delete(user);
			tx.commit();
		}
		catch(RuntimeException e)
		{
			tx.rollback();
			throw e;
		}
		finally
		{
			session.close();
		}
	}

因为Hibernate的删除只能根据数据库里存在的pojo来删除,所以,需要先根据id查询到该对象在进行删除。

2.6说明

1> 优点:对所有类,所有表均可用以上方法进行操作

2> 缺点:只能通过id来增删改查




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值