<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title></title>
    <description></description>
    <link>http://sw2-long.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>看了Warp和Hibernate Dynamic Dao想到的</title>
        <author>sw2-long</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sw2-long.javaeye.com">sw2-long</a>&nbsp;
          链接：<a href="http://sw2-long.javaeye.com/blog/176760" style="color:red;">http://sw2-long.javaeye.com/blog/176760</a>&nbsp;
          发表时间: 2008年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看过 ROBBIN 老大的<a href="http://www.javaeye.com/topic/168780" target="_blank">Warp framework - 一个相当有前途的Java轻量级Web开发框架</a> 和  NORTHER 的<a href="http://norther.javaeye.com/blog/172265" target="_blank">模仿Warp Dynamic Finder的Hibernate Dynamic Dao</a> 真是受益良多，呵呵，感谢感谢！！<br />    对WARP-MVC比较感兴趣，运行了一下演示DEMO，感觉不错啊。我对TAPESTRY不了解，觉得将模板改成JSP+EL会降低学习曲线。直接修改WARP-MVC处理后forward到JSP，这个代码改得比较粗糙，见不了光...不好意思摆出来，呵呵！<br /><br />    NORTHER 的Dynamic Dao看得很爽，建议调整一下：在@InjectDao强制加入entityClass并让其可以在FIELD使用，使用时：<br /><pre name="code" class="java">
@Service
public class UserService {
	
	@InjectDao(User.class)
	private UserDao userDao;
	

	public Serializable save(User entity) {
		return userDao.save(entity);
	}

	public void delete(Serializable id) {
		userDao.delete(this.get(id));
	}

	public User get(Serializable id) {
		return userDao.get(id);
	}
        ......

}
</pre><br />    其它的QUERY ANNOTATION就可以省去entityClass了，HibernateDao和HibernateDaoDelegator可以用范型，再加上一个CommonDao&lt;E>提供基本的CRUD方法。<br /><pre name="code" class="java">
@Transactional
public interface CommonDao&lt;E> {
	
	@Save
	public Long save(E entity);

	@Delete
	public void delete(E entity);

	@Update
	public void update(E entity);

	@Get
	public E get(Serializable id);

}
</pre><br />    其实可以利用SPRING的IoC ANNOTATION，@Autowired或@Resouce来注入代码中的依赖的BEAN，如：在HibernateDaoDelegator 用@Resouce注入sessionFactory<br /><pre name="code" class="java">
@Repository
public class HibernateDaoDelegator&lt;E> implements HibernateDao&lt;E> {

	@Autowired
	private SessionFactory sessionFactory;
        
        ......
}
</pre><br />    这样就不需要依赖Setter方法了，整个代码看起来会更清爽。<br /><br />以为代码基于 NORTHER 的<a href="http://norther.javaeye.com/blog/172265" target="_blank">模仿Warp Dynamic Finder的Hibernate Dynamic Dao</a><br /><img src="/images/smiles/icon_razz.gif"/>用于学习，COPY LEFT<br />待续......
          <br/>
          <span style="color:red;">
            <a href="http://sw2-long.javaeye.com/blog/176760#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Mar 2008 14:37:33 +0800</pubDate>
        <link>http://sw2-long.javaeye.com/blog/176760</link>
        <guid>http://sw2-long.javaeye.com/blog/176760</guid>
      </item>
  </channel>
</rss>