0
我在我的Java应用程序中使用TopLink持久性库与MySQL数据库。Java持久性,数据库实体和其他模型之间的通信
我开发了几个桌面应用程序使用的类库,它包含一些特定于我的项目的类。类彼此关联,通常采用一对多关系。
我想将DB实体类和项目特定的类分开。
我应该如何开发这些类之间的通信(继承,使用或其他?)。在将数据加载(或放入)数据库时,应如何开发项目特定类之间的关系?
我在我的Java应用程序中使用TopLink持久性库与MySQL数据库。Java持久性,数据库实体和其他模型之间的通信
我开发了几个桌面应用程序使用的类库,它包含一些特定于我的项目的类。类彼此关联,通常采用一对多关系。
我想将DB实体类和项目特定的类分开。
我应该如何开发这些类之间的通信(继承,使用或其他?)。在将数据加载(或放入)数据库时,应如何开发项目特定类之间的关系?
我猜是因为它是一个桌面应用程序,它是一个基于UI的应用程序。所以MVC架构在这里最合适。另外我想你将不得不使用Java bean来对模型进行异步访问。
首先定义一个需要所有定义的模型。
让说
class person
{
public PropertyChangeSupport propertyChange = new PropertyChangeSupport(this);
private String firstName;
private String middleName;
private String lastName;
private int gender;
private Integer age;
.
.
set Fname(String firstName)
{
propertyChangeSupport.firePropertyChange("firstName",this.firstName,this.firstName = firstName);
}
.
.
.
public void setPropertyChange(PropertyChangeSupport propertyChange) {
this.propertyChange = propertyChange;
}
public PropertyChangeSupport getPropertyChange() {
return propertyChange;
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChange.removePropertyChangeListener(listener);
}
}
现在,我们需要一个模型供应商,这将是一个单例模式。
class PersonMOdelProvider
{
private static List<Person> lst ;
private static PersonMOdelProvider content;
private PersonMOdelProvider()
{
// Get data from data base layer.
lst = new ArrayList<Person>();
//load the list from database
}
public static PersonModelProvider getInstance()
{
if (content!=null) return content;
content = new PersonMOdelProvider();
return content;
}
.
.
.
set ... get methods for binding db with model.
}
现在在UI部分,您首先需要获取模型提供者的实例,并通过模型提供者进行所有进一步的交互。
感谢您的回答。但是,如果我已经理解了你,我将为每个实体分配3个类 - 由NetBeans生成的DBEntity类(实现Serializable),存储在类库中的模型类(包含业务逻辑和关联) )和ModelProvider类。这也意味着我应该为每个桌面应用程序中的每个模型创建2个类(ModelProvider和DBEntity类)? – 2010-11-11 18:55:27
现在,这将是你的技能,设计类。您正在设计基础类,那么您将共享大部分代码。 – Chaitannya 2010-11-11 20:13:06
顺便说一句,你需要为每个模型分别建立一个模型类,但模型提供者对于几组模型可能是通用的。再次取决于你的应用和设计技巧 – Chaitannya 2010-11-11 20:17:37