hibernate实体查询问题

使用实体查询时,是否一定要建立一个实体的hibernate的映射文件?
[b]问题补充:[/b]
除了加入
@Entity
@Table(name="***"),之外,还需要在配置文件中做什么配置吗,
我使用spring+hibernate,如果有对应的实体映射文件就可以查处数据来,否则就提示我 UserDefModel is not mapped

4个回答

以前编写实体类Entity的时候,都需要配置映射文件.hbm.xml,同时需要在sessionFactory中配置映射文件或映射目录
使用annotation时需要将sessionFactory定义为:

【Entity】
文件映射


...hbm.xml
....

或者 目录映射


classpath:/../hbm/
....


现在可以使用Annotation来简化配置(jdk5 spring2.5 hibernate3.3)
在sessionFactory中配置

然后在Entity中定义类名的地方注释:@MappedSuperclass就可以自动完成载入,不用再配置.

【service】
以前编写service时要先编写Entity,Dao然后进行Dao配置进行自动注入Service
class="com.gzpost.cps.dao.hibernate.MailDaoHibernate">




class="com.gzpost.cps.service.impl.MailSearchServiceImpl">




当然也可以在Spring配置中申明按名或按类自动注入,可以少配置属性,但是Bean还是要配置的

现在可以使用SpringSide的SimpleHibernateTemplate范型Dao,直接在Service层创建,同时Service采用@Service注释来自动注册服务,在要注入参数的地方注释:@Autowired,就可以自动注入参数,前提是必须在Spring中配置


这样就搞定了,可以减少好多的配置
【transaction】


在服务类定义处注释:@Transactional,还可以在具体方法出定义@Transactional(readOnly=true)//使用readOnly可以提高性能
同一个方法里,事务可以传递,可以解决Lazy问题,可以不再使用:openSessionInView,使用此切面(aspect),必须在 实现 类(和/或类里的方法)、而不是类的任何所实现的接口上面进行注解
例如:
@Transactional
public class UserManagerInCatche {
@Transactional(readOnly=true)//使用readOnly可以提高性能
public void initResourceCache() {
if (!cacheInitialized) {
synchronized (this) {
List resources = userManager.getAllResorece();
for (Resource resource : resources) {
resourceDetailsInCache(resource);//resourceDetailsInCache方法会使用initResourceCache方法的事务
}
cacheInitialized = true;
}
}
}
private void resourceDetailsInCache(
Resource resource) {
// GrantedAuthority[] authorities = role2authorities(userManager.getRolesByResourceId(resource.getId()));
GrantedAuthority[] authorities = role2authorities(resource.getRoles());

  ResourceDetails rd = new gzpost.security.resourcedetails.Resource(resource
    .getResString(), resource.getResType(), authorities);
  resourceCache.putAuthorityInCache(rd);
 }
}

不一定,现在有注解的方式,直接在代码里用注解来代替hibernate的映射文件了

用注解替代就行啦,简单方便,例如:
@Entity
@Table(name="T_User")
public class User{

}
这样你的User.hbm.xml文件就不用啦,更多的信息就参考一下hibernate注解API

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问