Springside3的有关理解和认识

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


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

}

[color=red]3.service层[/color]
都是从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;
}

[color=red]4.web层(Action层)[/color]
<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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值