Hibernate学习——Hibernate的核心接口与类

 这种层次关系在之前的例子中就有很好的体现(http://blog.csdn.net/yu422560654/article/details/6974796):

public static void main(String[] args) throws Exception  
19.    {  
20.        //实例化Configuration   
21.        Configuration conf = new Configuration().configure();  
22.        //实例化SessionFactory   
23.        SessionFactory sf = conf.buildSessionFactory();  
24.        //实例化Session   
25.        Session sess = sf.openSession();  
26.        //开始事务   
27.        Transaction tx = sess.beginTransaction();  
28.        //创建消息实例   
29.        News n = new News();  
30.        //设置消息标题和消息内容   
31.        n.setTitle("疯狂Java联盟成立了");  
32.        n.setContent("疯狂Java联盟成立了,网址是www.crazyit.org");  
33.        //保存消息   
34.        sess.save(n);  
35.        //提交事务   
36.        tx.commit();  
37.        //关闭Session   
38.        sess.close();  
39.    }  


 

一、Configuration类

 

 

二、SessionFactory接口

 

 使用SessionFactory对象可以获取Session对象。

 

三、Session(会话)接口

Session接口是Hibernate中的核心接口,它不是Java Web应用中HttpSession接口。Hibernate操作数据库之前必须先获取一个Session对象,相当于JDBC在操作数据库之前必须获取一个Connection对象一样。

//也可以使用Session session=session.openSession()方法

获取Session对象后,Hibernate内部并不会获取操作数据库的java.sql.Connection对象,而是等待Session对象真正需要对数据库进行CRUD等操作时,才会从数据库连接池中获取java.sql.Connection对象。而关闭Session对象时,则是将java.sql.Connection对象返回到连接池中,而不是直接关闭java.sql.Connection对象。

 

1、save()方法

save()方法是用来保存持久化对象,进而在数据库中新增一条数据的方法;执行save()方法之后不会立即操作数据库来进行保存数据,而是在Transaction对象的commit()方法执行之后才会保存数据。

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import java.util.Date;

public class HibernateTest {
	public static void main(String[] args) {
		Configuration config = new Configuration();
		config.configure();
		SessionFactory sessionFactory = config.buildSessionFactory();
		Session session = sessionFactory.getCurrentSession();
		Transaction tx = session.beginTransaction();

		Guestbook gb = new Guestbook();
		gb.setName("刘伟");
		gb.setPhone("01082622285");
		gb.setEmail("liuwei8809@163.com");
		gb.setTitle("大家好");
		gb.setContent("欢迎大家学习Hibernate技术。");
		gb.setCreatedTime(new Date());

		session.save(gb);
		tx.commit();
		sessionFactory.close();
	}
}

 

2、get()/load()方法

通过Session对象的get()方法可以获取数据库中的一条记录,如:

Guestbook gb=(Guestbook) session.get(Guestbook.class,new Integer(1));//查找Guestbook中id为1的记录

get()方法的第一个参数是持久化对象,第二个参数是要查找的持久化对象的标识符属性值。

通过Session对象的load()方法可以获取数据库中的一条记录,如:

Guestbook gb=(Guestbook) session.load(Guestbook.class,new Integer(1));//查找Guestbook中id为1的记录

两者之间的区别:load()和get()在未找到符合条件的持久化对象的时候,load()会抛出一个违例,而get()方法返回null。另外两者对缓存对象的读取也不同,load()方法会先从Hibernate的一级缓存中去查找符合条件的对象,找不到的话则会去Hibernate的二级缓存中去查找对象,仍未找到的话才会去数据库中去查找;但是get()方法不会去查找Hibernate的二级缓存。(有关Hibernate缓存机制的问题,参见文章:http://blog.csdn.net/yu422560654/article/details/7008654   转载滴大笑

 

3、update()方法

 

4、delete()方法

 

 

四、Transaction(事务)接口

 

五、Query接口

 

六、Criteria接口

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值