Hibernate的强大之处之一是懒加载功能,可以有效的降低数据库访问次数和内存使用量。但用的不好就会出现org.hibernate.LazyInitializationException。这个异常出现的原因很简单,主要时在加载懒数据时Session已经关闭造成的,如下图:那么OK,我们来考虑怎么解...
分类:
其他好文 时间:
2015-04-08 12:52:24
阅读次数:
143
1.对于类之间是依赖不是关联关系的类之间的数据库设计,最好采用精粒度对象模型,建立组件模型,不是采用多对一什么的关联。
分类:
Web程序 时间:
2015-04-08 12:41:26
阅读次数:
157
1、点击window->show view->DB Browser,然后出现如下窗口
右键空白处选择New,弹出如下窗口:
先点击Add JARs按钮,选择相应数据库的JDBC driver(因为我用的是MySQL,所以选择的是之前已经下好的JDBC driver),添加完JDBC driver后。然后选择Driver template,Driver name(任意填写),Co...
分类:
数据库 时间:
2015-04-08 09:19:55
阅读次数:
209
HQL查询方式这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多。条件查询、分页查询、连接查询、嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了类或者对象。其它的,包括一些查询函数(count(),sum()等)、查询条件的设定等,全都跟SQL语...
分类:
Web程序 时间:
2015-04-07 23:20:02
阅读次数:
166
一,首先hibernate中对象的状态有三种:瞬态、游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save()、saveOrUpdate()、get()、load();持久态到瞬态的方法有delete();游离态到持久态的方法有update()、saveOrUp...
分类:
Web程序 时间:
2015-04-07 23:12:21
阅读次数:
194
最主要区别在于,检索策略不同。无论get和load,首先都会去session缓存中看有没有现成的数据。没有的话,get会采用立即检索策略。即:将对象从数据库检索出来并返回,不使用代理类。load的话,如果lazy="true",会采用延迟加载策略。即:返回一个仅包含有ID主键的代理类对象,当调用对象...
分类:
Web程序 时间:
2015-04-07 19:07:50
阅读次数:
161
自动生成hibernate配置文件的时候,会在dao层用到getSession()方法来操作数据库记录,但是他还有个方法getHibernateTemplate(),这两个方法究竟有什么区别呢?1.使用getSession()方法你只要继承sessionFactory,而使用getHibernate...
分类:
Web程序 时间:
2015-04-07 19:06:15
阅读次数:
130
以下情况java对象进入持久化状态:session.save()方法把临时对象转变为持久化对象。session.load()和session.get()方法得到的对象总是处于持久化状态。session.update(),saveOrUpdate()和lock()方法使游离对象转变为持久化状态。Que...
分类:
编程语言 时间:
2015-04-07 19:02:59
阅读次数:
113
目标:hibernate的所有实体类的主键均继承一个基类IdEntity,基类如下: ?/**
?*?统一定义id的entity基类.
?*?@author?MingDao
?*/
//?JPA基类标识
@MappedSuperclass
public?abstract?class?IdEntit...
分类:
Web程序 时间:
2015-04-07 14:01:15
阅读次数:
155
hibernate可以通过两种方式获得Session: getCurrentSession() 和openSession(). 当通过getCurrentSession()方法时,需要在 hibernate.cfg.xml配置文件中添加:thread
分类:
Web程序 时间:
2015-04-07 13:37:45
阅读次数:
153