Hibernate:核心API

1,Configuration类,用于加载解析配置文件的类,通过new可以获取其实例,直接new可用于加载名为hibernate.properties的主配置文件,new Configuration().configure();调用configure方法可以加载src下的hibernate.cfg.xml文件。

2,获取到configuration对象后,利用该对象的buildSessionFactory()方法,可以获取SessionFactory工厂对象,Session相当于维护hibernate与数据库的一次会话,那么SessionFactory则可以代表一个连接池,其实SessionFactory底层也是利用了DataSource数据源的。

3,获取到sessionFactory对象后,利用这个对象的openSession()方法可以获取Session链接对象,这相当于与数据库建立了会话。开启了资源,就需要在最后关闭,可以将关闭资源的代码放到finally代码块里,关闭资源的API:session.close();。

4,获取session对象后,可以用它获取事务对象,hibernate默认是不开启事务的,需要我们手动开启,通过session.beginTransaction()方法可以开启事务,并获取一个Transaction对象,事务开启以后不自动提交,需要在事务完成后我们自己手动提交,transaction.commit()方法可以完成提交事务的动作。事务是有原子性的,我们需要维护他的原子性,一旦任何一个子任务没有完成或出现错误,整个事务就不能完成,要回滚到初始状态,可以在catch中将其回滚,回滚的API为:transaction.rollback()。

5,利用session链接对象,我们可以进行CURD的操作。

增:session.save(Object obj)将映射好的PO保存到数据库,可以利用session.saveOrUpdate()方法,该方法确保在数据库中没有这条记录时就添加一条记录,有了这条记录时就更新这条记录。

删:session.delete(obj),将当前PO,根据其主键,从数据库删除。

改:session.update(obj),根据主键更新当前PO。

查:session.get(obj.class,主键),根据给定的PO,以及主键,从数据库获取该PO的实例。

    Session.createQuery(HQL),利用HQL建立条件查询,得到一个Query对象,该对象的list()方法可以获取所有符合条件的PO实例。

6,示例:

@Test
public void test1(){
	//创建配置文件对象,负责加载解析配置文件
	Configuration configuration = new Configuration().configure();
	//建立连接池
	SessionFactory sessionFactory = configuration.buildSessionFactory();
	//建立链接
	Session session = sessionFactory.openSession();
	//开启事务
	Transaction transaction = session.beginTransaction();
	try {
			//增
			User user = new User();
			user.setUsername(“xiaoqiang”);
			user.setPassword(“1234”);
			session.save(user);
			//删
			User user = new User();
			user.setId(1);
			session.delete(user);
			//改
			User user = new User();
			user.setId(1);
			user.setUsername(“wangcai”);
			user.setPassword(“123456”);
			session.update(user);
			//查:
			User user1 = session.get(User.class,1);
			Query query = session.createQuery(“from t_user”);
			List<User> userList = query.list();
			for(User u : userList) {
				System.out.println(u);
}
			//提交事务
			transaction.commit();
		} catch (HibernateException e) {
			//回滚
			transaction.rollback();
			throw e;
		} finally {
			//关闭资源
			session.close();
		}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值