`
keleyhuang
  • 浏览: 4360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Springside3的有关理解和认识

阅读更多
1.entity层: 
     1).统一定义id的entity基类.基类统一定义id的属性名称、数据类型、列名映射及生成策略. 子类可重载getId()函数重定义id的列名映射和生成策略.
       @Id
       @GeneratedValue(strategy = GenerationType.IDENTITY)
   2).使用JPA annotation定义ORM关系. 使用Hibernate annotation定义二级缓存.例如:


2.dao层
从HibernateDao继承,得益于泛型支持
public class CommentDao extends HibernateDao<Comment, Long> {

}

3.service层
都是从EntityManager继承,并使用Spring的IoC特性,将Dao类注入到Manager类之中,并重载getEntityDao方法来使用该注入的Dao。
public class CommentManager extends EntityManager<Comment, Long> {
     @Autowired
    private CommentDao commentDao;

    public void setCommentDao(CommentDao commentDao) {
        this.commentDao = commentDao;
     }

     @Override
    protected HibernateDao<Comment, Long> getEntityDao() {
        // TODO Auto-generated method stub
        return commentDao;
     }

4.web层(Action层)
<constant name="struts.convention.package.locators" value="web" />
Convention插件,已经不是前面使用的CodeBehind插件了,关于Convention插件,这里要再说几句,该插件的大部分功能和 CodeBehind相同,唯一让人有点迷惑的就是该插件到哪里寻找Action类的问题,它会根据 struts.convention.package.locators属性的值来决定,在该项目中,其值为“web”,之需要查阅一下 struts.xml文件即可知。这说明,Convention会寻找所有包含“web”这个单词的包,并在该包及其子包中寻找Action类。这也正是 Action层的包名为personal.youxia.web的原因。
@Override
    public String save() throws Exception {
       // 根据页面上的checkbox 整合Role的Authorities Set.
       HibernateWebUtils.mergeByCheckedIds(entity.getAuthorities(), checkedAuthIds, Authority.class);
       /*
       * 页面数据注入到entity中,利用HibernateWebUtils类,找出页面传来的数据,封装到entity中(自己看的)
       */
       roleManager.save(entity);
       addActionMessage("保存角色成功");
       return RELOAD;
    }


注意:所有的Manager类都应该使用@Service注解,再出现的错误是提示Dao类没有注入成功,经检查发现所有的Dao类须使用@Repository注解,最后出现的错误是找不到Entity类的错误,经检查发现Entity类不能位于personal.youxia.entity包中,必须位于其子包中,这是由applicationContext.xml文件中的配置决定的(<property name="packagesToScan" value="my.testss3.entity.*" />),更改包名为personal.youxia.entity.entities后,问题解决。

Dao层用@Repository
Service层用@Service 、@Transactional     内部dao用@Autowired
用@Transactional做事务管理
Action层用@SuppressWarnings("serial")    内部service用@Autowired
请求后的返回页面问题:它猜测的规则是这样的:返回页面的路径为struts.codebehind.pathPrefix + package namespace + action name + action returnvalue + .jsp,action returnvalue为success时,值为空,为其他时,值为"-" + return type

userDao.getSession().createQuery("hql");

this.getSession().createSQLQuery(sql) .addEntity(.class)

在service中,用此可以自定义hql语句。

       userDao.getSession().connection().prepareStatement("sql");

在service中,用此可以自定义sql语句。

Struts2Utils.renderJson(?……);

在action中,可以发送json数据??

HttpServletRequest request = Struts2Utils.getRequest();
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics