Java持久性、数据库实体和其他模型之间的通信
在我的Java应用程序中,我将TopLink持久性库与MySQL db一起使用 我开发了一个类库,它被几个桌面应用程序使用,它包含一些特定于我的项目的类。类彼此链接,通常具有一对多关系 我希望DB实体类和项目特定类是分开的Java持久性、数据库实体和其他模型之间的通信,java,mysql,persistence,toplink,Java,Mysql,Persistence,Toplink,在我的Java应用程序中,我将TopLink持久性库与MySQL db一起使用 我开发了一个类库,它被几个桌面应用程序使用,它包含一些特定于我的项目的类。类彼此链接,通常具有一对多关系 我希望DB实体类和项目特定类是分开的 我应该如何开发这些类之间的通信(继承、使用或其他?)。在将特定于项目的类加载(或放置)到数据库时,应该如何开发它们之间的关系?我想,因为它是一个桌面应用程序,所以它是一个基于UI的应用程序。所以MVC架构最适合这里。另外,我猜您必须使用JavaBean来异步访问模型 首先定义
我应该如何开发这些类之间的通信(继承、使用或其他?)。在将特定于项目的类加载(或放置)到数据库时,应该如何开发它们之间的关系?我想,因为它是一个桌面应用程序,所以它是一个基于UI的应用程序。所以MVC架构最适合这里。另外,我猜您必须使用JavaBean来异步访问模型 首先定义一个包含所有必需定义的模型 比方说
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.
}
class PersonMOdelProvider
{
私有静态列表lst;
私有静态PersonMOdelProvider内容;
private PersonMOdelProvider()
{
//从数据库层获取数据。
lst=新的ArrayList();
//从数据库加载列表
}
公共静态PersonModelProvider getInstance()
{
如果(content!=null)返回内容;
content=newpersonmodelprovider();
返回内容;
}
.
.
.
设置…获取将db与模型绑定的方法。
}
现在在UI部分,您首先需要获取模型提供者的实例,并通过模型提供者进行所有进一步的交互 谢谢你的回答。但是,如果我理解您的意思,我将为每个实体提供3个类——由NetBeans生成的DBEntity类(实现可序列化)、model类(包含业务逻辑和关联,存储在类库中)和ModelProvider类。这也意味着我应该为每个桌面应用程序中的每个模型创建2个类(ModelProvider和DBEntity类)?现在这将是您的技能,来设计这些类。如果您正确地设计了基类,那么您将共享大部分代码。顺便说一句,对于每个模型,您需要一个单独的模型类,但是对于一些模型集,模型提供程序可能是通用的。这同样取决于你的应用和设计技巧