潘晋达 2009-07-11 09:01
浏览 177
已采纳

hibernate实体查询问题

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

  • 写回答

4条回答 默认 最新

  • wanghaolovezlq 2009-07-11 14:04
    关注

    以前编写实体类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);
     }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况