1、感受MyEclipse的强大,只需要右键为工程增加 Hibernate功能即可快速应用Hibernate
2、记住为表名逆向工程生成对象时, 如果要修改对象名,最好要带上对应的包名
3、生成的config文件默认放置在 根目录下,路径可以在sessionfactory中指定
4、sessionfactory类用于创建hibernate session, session相当于jdbc中的connection,它具有open,close,begintrans,commitrans,rollbacktrans方法
5、ThreadLocal的应用场合,我觉得最适合的是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。
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;
}
6、public REmployee findById(java.lang.String id) 通过主键查找
7、Hibernate三大功能:a、or-mapping , b、屏蔽掉数据库 ,c、缓存
1、OrMapping会影响删除时的效率
这里要注意的是批量操作时要适时对session进行flush操作避免OutOfMenoryError.删除:删除我主要说批量删除,Hibernate在进行批量删除前,首先必须将所有符合条件的数据加载到内存中(这是所有ORM框架必须面对的问题,这样主要是为了对目前的内部缓存和二级缓存中数据进行整理,以保存和数据库的一致性)这样就面对这如果操作数据量过大,也会出现OutOfMenoryError,所以推荐使用迭代删除。
hibernate缓存机制:
一级缓存:session级别的缓存
hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。
二级缓存:SessionFactory级别的全局缓存,
缓存可以简单的看成一个Map,通过key在缓存里面找value。