我需要阅读序列化为XMI的UML图.是否有任何库可以让我方便地阅读UML XMI - 方便的是我有一些方法来迭代模型中的类/包/方法/属性等.
我试过EMF,但是我找不到任何教程来展示如何导入包含UML的XMI.我也找到了NSUML/NSMDF但是文档的链接被破坏了.
我最近读到getter/setter是邪恶的,我不得不说这是有道理的,但是当我开始学习OOP时,我学到的第一件事就是"封装你的字段",所以我学会了创建类给它一些字段,创建getter ,为他们设置setter并创建我初始化这些字段的构造函数.每当其他一些类需要操作这个对象(或者例如显示它)时,我将它传递给对象并使用getter/setter来操作它.我可以看到这种方法的问题.
但是怎么做呢?例如显示/呈现对象是"数据"类 - 让我们说人,有姓名和出生日期.该类是否有显示对象的方法,其中一些Renderer将作为参数传递?这不违反类应该只有一个目的(在这种情况下是存储状态)的原则,所以它不应该关心这个对象的表示.
您能否提出一些优秀的资源,其中介绍了OOP设计的最佳实践?我打算在业余时间开始一个项目,我希望它成为我正确的OOP设计的学习项目.
我有一个表(称之为my_table
),可以像这样简化:NAME,SEQ_NO,LOCKED.
项目被删除并添加,我想重新排序它们(修改SEQ_NO),顺序总是从1到COUNT(*),并且被锁定的项保留它们的SEQ_NO,没有未锁定的项目将获得该数字.仅使用新的SEQ_NO更新未锁定的项目.
例:
这个
NAME SEQ_NO LOCKED Foo 1 N Bar 3 Y Abc 4 Y Baz 5 N Cde 7 N
会导致:
NAME SEQ_NO LOCKED Foo 1 N Baz 2 N Bar 3 Y Abc 4 Y Cde 5 N
我怎么能这样做?
我有多对一的关系,假设用户有公司.公司实体没有任何其他关系.
如果我为公司的findAll hibernate查询启用二级缓存,第二次重新加载页面(这意味着加载了用户,然后还加载了所有公司的列表)我为每个现有公司选择(从公司选择...)其中id =?)在hibernate输出中.调用findAll for Company时会发生这种情况,它看起来像这样(这是类中的泛型方法,使用适当的类型进行扩展):
return (List<T>) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria c = session.createCriteria(persistentClass);
c.setCacheable(cacheFindAll);
return c.list();
}
});
Run Code Online (Sandbox Code Playgroud)
我在只读策略中使用Jboss TreeCacheProvider.如果我使用setCacheable(false)
没有"不需要的"选择.
为什么会发生这种情况?如何消除这种行为?
我有方法,所有传播异常,然后我在一个地方处理,但我意识到了一些事情.
假设我有这样的方法
public void foo() throws Exception e {
Statement stmt = createStatement();
doSomething(stmt);
stmt.close();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果doSometing()方法抛出异常,语句将不会被关闭,但我不想在那里处理异常.是尝试捕获的唯一方法,只重新抛出异常,最后关闭声明?