
ORM
iteye_14867
这个作者很懒,什么都没留下…
展开
-
JPA与Hibernate的那些事
使用JPA而不是Hibernate,我们将失去什么? JPA相对于Hibernate,丢失了很多宝贵的东西,不支持面向对象的Criterion查询,使得我们很多基本的功能无法简单实现。如,通过 对象的属性值实现查询,我们将不得不去写JPQL,通过对字符串的操作来实现功能。一个很大的问题是,对字符串的操作是比较不安全的,如 removeOrderBy的方式实现里,我们就通过找到"order ...2009-09-15 15:56:54 · 123 阅读 · 0 评论 -
Hibernate的auto-import属性详解
在hibernate的实体映射文件(.hbm.xml)里,hibernate-mapping中有一个auto-import属性,默认值为true。 auto-import是什么意思呢? 我们经常会写这样一个HQL语句: from User u where u.name='罗灿锋'; 绝大多数时候,这样写是不会发生问题的。 hibernate在处...2009-09-15 16:10:17 · 217 阅读 · 0 评论 -
器件分类删除代码走读
问题 日前小何在器件管理2模块中删除一个器件分类(同时删除器件分类审批团队)时,系统抛出异常;表现为,审批团队成功删除了,器件分类删除不成功。 为了描述清楚该问题,我们先描述器件分类与审批团队的关系(hibernate映射关系): Hibernate映射关系 审批团队--many-to-one-->器件分类 器件分类--one-to-one-->审批团队 ...2009-09-15 16:12:22 · 104 阅读 · 0 评论 -
为DAO添加一个很有用的接口
DAO功能有限的接口 我们的DAO里有这么一个接口: /** * 按属性查找对象列表,匹配方式为相等. */ public List<T> findBy(final String propertyName, final Object value) { assert StringUtils.isNotBlank(propertyName); St...2009-09-15 16:18:10 · 179 阅读 · 0 评论 -
使用ORM时的一些选择
双向关联? 建议一切关联的方向由业务模型决定,不要根据开发的复杂度来决定。 如权限模块里就应该用户单向关联角色(因为用户拥有角色,角色不需要知道有哪些用户),角色单向关联权限,权限单向关联资源。 级联保存/更新/删除? 坚决反对级联保存/更新/删除,只要是实体,就应该自己维护;如果对象没有明确对应的业务模型,应该将其设计为component saveOrUpdate中是否可以...2009-09-15 16:20:44 · 134 阅读 · 0 评论 -
将字段描述写入到数据库表结构中
在.hbm.xml中定义字段的描述 <property name="name" type="string"> <column name="name" length="20" not-null="true"> <comment>用户姓名</comment2009-09-15 16:23:59 · 180 阅读 · 0 评论 -
DBUnit问题?hibernate-tools hbm2ddl问题?
DBUnit问题 在父子关系的表(表中一个字段外键关联到本身)中,使用DBUnit清除其中数据时出错。如menu表中有一个parent_id外键关联到 menu的主键,这时我们通过sql "delete from menu"也是会出错的(如果表中存在相互关联的数据),使用DBUnit来清除数据也会出错。 DBUnit应该有这个问题的解决方案。待解决。 hibernate-tools...2009-09-15 16:24:48 · 122 阅读 · 0 评论 -
使用PreUpdate来维护实体更新信息的问题
在JPA中,我们在实体更新前(@PreUpdate)来维护实体的更新信息(lastModifiedBy、lastModifiedOn)。 但是这样做会存在问题。主要问题是,这个维护信息是在数据库层面的,而我们希望记录的是逻辑层面的。 下面通过一个场景来展示问题所在。 在删除角色之前,我们要先断开角色与用户的关联关系,然后才删除角色。下面是删除角色的manager层代码(RoleManager...2009-09-15 16:25:19 · 943 阅读 · 0 评论