key words: bea world2006  ,workshop studio, 快速开发
bea world 2006 北京已经过去好几天了,早就想记录一下一直忙  :)
这次参会之行还是有所收获,主题虽然是SOA,但是我对这个现在倒是没什么特别的关注,毕竟这个和公司选用的产品有关系,我们这边公司现在用的Oracle的比较多。 
最吸引我的是它的一款开发工具 : workshop studio 3.2
这个工具基于Eclipse,同时集成了Spring,hibernate,Struts,JSF,Ajax,关键的是开发界面效果很棒,支持自动生成,运用Xray扫描技术,在页面可以做到自动提醒。
我个人一直使用IntelliJ IDEA 5,感觉IDEA的编写java代码确实很强,包括xp能力,但是看他的jsp编写能力实在是太弱了,虽然也支持语法级别的提示,但是这个是远远不够的,我们需要的是WYSIWYG,这方面workshop studio给了我一个满意的效果.
可以通过ResourceBundle切换界面语言

也可以在界面切换到中文:

可以在DbXplorer界面里根据schema自动生成hibernate的O/R mapping文件,包括Domain,也包括dao接口以及实现哦:

看一下向导生成的dao实现 : 

 public class UserRoleSpringService implements IUserRoleService
public class UserRoleSpringService implements IUserRoleService  {
{

 /** *//**
    /** *//**
 * The dao instance injected by Spring.
     * The dao instance injected by Spring.
 */
     */
 private IUserRoleDao dao;
    private IUserRoleDao dao;

 /** *//**
    /** *//**
 * The service Spring bean id, used in the applicationContext.xml file.
     * The service Spring bean id, used in the applicationContext.xml file.
 */
     */
 private static final String SERVICE_BEAN_ID = "UserRoleService";
    private static final String SERVICE_BEAN_ID = "UserRoleService";
 
    

 public UserRoleSpringService()
    public UserRoleSpringService()  {
{
 super();
        super();
 }
    }

 /** *//**
    /** *//**
 * Returns the singleton <code>IUserRoleService</code> instance.
     * Returns the singleton <code>IUserRoleService</code> instance.
 */
     */

 public static IUserRoleService getInstance(ApplicationContext context)
    public static IUserRoleService getInstance(ApplicationContext context)  {
{
 return (IUserRoleService)context.getBean(SERVICE_BEAN_ID);
        return (IUserRoleService)context.getBean(SERVICE_BEAN_ID);
 }
    }


 /** *//**
    /** *//**
 * Find an entity by its id (primary key).
     * Find an entity by its id (primary key).
 * @return The found entity instance or null if the entity does not exist.
     * @return The found entity instance or null if the entity does not exist.
 */
     */

 public UserRole findUserRoleById(Integer id) throws MyException
    public UserRole findUserRoleById(Integer id) throws MyException  {
{

 try
        try  {
{
 return getDao().findUserRoleById(id);
            return getDao().findUserRoleById(id);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findUserRoleById failed with the id " + id + ": " + e.getMessage());
            throw new MyException("findUserRoleById failed with the id " + id + ": " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Return all persistent instances of the <code>UserRole</code> entity.
     * Return all persistent instances of the <code>UserRole</code> entity.
 */
     */

 public List findAllUserRoles() throws MyException
    public List findAllUserRoles() throws MyException  {
{

 try
        try  {
{
 return getDao().findAllUserRoles();
            return getDao().findAllUserRoles();

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findAllUserRoles failed: " + e.getMessage());
            throw new MyException("findAllUserRoles failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Return the persistent entities matching the given example entity.
     * Return the persistent entities matching the given example entity.
 */
     */

 public List findUserRolesByExample(UserRole userRole) throws MyException
    public List findUserRolesByExample(UserRole userRole) throws MyException  {
{

 try
        try  {
{
 return getDao().findByExample(userRole);
            return getDao().findByExample(userRole);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findUserRolesByExample failed: " + e.getMessage());
            throw new MyException("findUserRolesByExample failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Make the given instance managed and persistent.
     * Make the given instance managed and persistent.
 */
     */

 public void persistUserRole(UserRole userRole) throws MyException
    public void persistUserRole(UserRole userRole) throws MyException  {
{

 try
        try  {
{
 getDao().persistUserRole(userRole);
            getDao().persistUserRole(userRole);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("persistUserRole failed: " + e.getMessage());
            throw new MyException("persistUserRole failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Remove the given persistent instance.
     * Remove the given persistent instance.
 */
     */

 public void removeUserRole(UserRole userRole) throws MyException
    public void removeUserRole(UserRole userRole) throws MyException  {
{

 try
        try  {
{
 getDao().removeUserRole(userRole);
            getDao().removeUserRole(userRole);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("removeUserRole failed: " + e.getMessage());
            throw new MyException("removeUserRole failed: " + e.getMessage());
 }
        }
 }
    }


 /** *//**
    /** *//**
 * Find an entity by its id (primary key).
     * Find an entity by its id (primary key).
 * @return The found entity instance or null if the entity does not exist.
     * @return The found entity instance or null if the entity does not exist.
 */
     */

 public ZionRole findZionRoleById(Integer id) throws MyException
    public ZionRole findZionRoleById(Integer id) throws MyException  {
{

 try
        try  {
{
 return getDao().findZionRoleById(id);
            return getDao().findZionRoleById(id);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findZionRoleById failed with the id " + id + ": " + e.getMessage());
            throw new MyException("findZionRoleById failed with the id " + id + ": " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Return all persistent instances of the <code>ZionRole</code> entity.
     * Return all persistent instances of the <code>ZionRole</code> entity.
 */
     */

 public List findAllZionRoles() throws MyException
    public List findAllZionRoles() throws MyException  {
{

 try
        try  {
{
 return getDao().findAllZionRoles();
            return getDao().findAllZionRoles();

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findAllZionRoles failed: " + e.getMessage());
            throw new MyException("findAllZionRoles failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Return the persistent entities matching the given example entity.
     * Return the persistent entities matching the given example entity.
 */
     */

 public List findZionRolesByExample(ZionRole zionRole) throws MyException
    public List findZionRolesByExample(ZionRole zionRole) throws MyException  {
{

 try
        try  {
{
 return getDao().findByExample(zionRole);
            return getDao().findByExample(zionRole);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findZionRolesByExample failed: " + e.getMessage());
            throw new MyException("findZionRolesByExample failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Make the given instance managed and persistent.
     * Make the given instance managed and persistent.
 */
     */

 public void persistZionRole(ZionRole zionRole) throws MyException
    public void persistZionRole(ZionRole zionRole) throws MyException  {
{

 try
        try  {
{
 getDao().persistZionRole(zionRole);
            getDao().persistZionRole(zionRole);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("persistZionRole failed: " + e.getMessage());
            throw new MyException("persistZionRole failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Remove the given persistent instance.
     * Remove the given persistent instance.
 */
     */

 public void removeZionRole(ZionRole zionRole) throws MyException
    public void removeZionRole(ZionRole zionRole) throws MyException  {
{

 try
        try  {
{
 getDao().removeZionRole(zionRole);
            getDao().removeZionRole(zionRole);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("removeZionRole failed: " + e.getMessage());
            throw new MyException("removeZionRole failed: " + e.getMessage());
 }
        }
 }
    }


 /** *//**
    /** *//**
 * Find an entity by its id (primary key).
     * Find an entity by its id (primary key).
 * @return The found entity instance or null if the entity does not exist.
     * @return The found entity instance or null if the entity does not exist.
 */
     */

 public ZionUser findZionUserById(Integer id) throws MyException
    public ZionUser findZionUserById(Integer id) throws MyException  {
{

 try
        try  {
{
 return getDao().findZionUserById(id);
            return getDao().findZionUserById(id);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findZionUserById failed with the id " + id + ": " + e.getMessage());
            throw new MyException("findZionUserById failed with the id " + id + ": " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Return all persistent instances of the <code>ZionUser</code> entity.
     * Return all persistent instances of the <code>ZionUser</code> entity.
 */
     */

 public List findAllZionUsers() throws MyException
    public List findAllZionUsers() throws MyException  {
{

 try
        try  {
{
 return getDao().findAllZionUsers();
            return getDao().findAllZionUsers();

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findAllZionUsers failed: " + e.getMessage());
            throw new MyException("findAllZionUsers failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Return the persistent entities matching the given example entity.
     * Return the persistent entities matching the given example entity.
 */
     */

 public List findZionUsersByExample(ZionUser zionUser) throws MyException
    public List findZionUsersByExample(ZionUser zionUser) throws MyException  {
{

 try
        try  {
{
 return getDao().findByExample(zionUser);
            return getDao().findByExample(zionUser);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("findZionUsersByExample failed: " + e.getMessage());
            throw new MyException("findZionUsersByExample failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Make the given instance managed and persistent.
     * Make the given instance managed and persistent.
 */
     */

 public void persistZionUser(ZionUser zionUser) throws MyException
    public void persistZionUser(ZionUser zionUser) throws MyException  {
{

 try
        try  {
{
 getDao().persistZionUser(zionUser);
            getDao().persistZionUser(zionUser);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("persistZionUser failed: " + e.getMessage());
            throw new MyException("persistZionUser failed: " + e.getMessage());
 }
        }
 }
    }

 /** *//**
    /** *//**
 * Remove the given persistent instance.
     * Remove the given persistent instance.
 */
     */

 public void removeZionUser(ZionUser zionUser) throws MyException
    public void removeZionUser(ZionUser zionUser) throws MyException  {
{

 try
        try  {
{
 getDao().removeZionUser(zionUser);
            getDao().removeZionUser(zionUser);

 } catch (RuntimeException e)
        } catch (RuntimeException e)  {
{
 throw new MyException("removeZionUser failed: " + e.getMessage());
            throw new MyException("removeZionUser failed: " + e.getMessage());
 }
        }
 }
    }


 /** *//**
    /** *//**
 * Called by Spring using the injection rules specified in
     * Called by Spring using the injection rules specified in 
 * the Spring beans file "applicationContext.xml".
     * the Spring beans file "applicationContext.xml".
 */
     */

 public void setDao(IUserRoleDao dao)
    public void setDao(IUserRoleDao dao)  {
{
 this.dao = dao;
        this.dao = dao;
 }
    }

 public IUserRoleDao getDao()
    public IUserRoleDao getDao()  {
{
 return this.dao;
        return this.dao;
 }
    }
 }
}我现在的策略基本上就是用IDEA开发后台代码,而pojo,dao,daoImpl的自动生成,以及web/jsp/ajax都是通过workshop studio来做,感觉不错哦,你还不心动?   :)
详情请参看官方网站  : 
http://workshopstudio.bea.com/index.html再来一张在现场Bea的工程师Peter的一张照片,左边的是me  :) 

Peter给我留下了深刻的印象,技术娴熟,为人热情,互动也棒,说到兴奋处来一个响指,让你感觉到作开发也是如此的享受,和国内的开发氛围截然不可同日而语。说到这就多罗嗦几句,国内的开发氛围我感觉就是半死不活,用如下几个关键字做一个概括就是 : 不敬业,冷漠,不专业,不规范,无体系,不受重视,自己看不起自己,别人也看不起自己,自己认为自己像个傻B,结果自己真的变为一个傻B.
记住,主动权永远在你自己手里,你想成为什么你就会变成什么.
当寒流到来时你是什么心态? 强者的逻辑是:来得更猛烈些,来年春天地上会堆满尸体.