Java持久性、数据库实体和其他模型之间的通信

Java持久性、数据库实体和其他模型之间的通信,java,mysql,persistence,toplink,Java,Mysql,Persistence,Toplink,在我的Java应用程序中,我将TopLink持久性库与MySQL db一起使用 我开发了一个类库,它被几个桌面应用程序使用,它包含一些特定于我的项目的类。类彼此链接,通常具有一对多关系 我希望DB实体类和项目特定类是分开的 我应该如何开发这些类之间的通信(继承、使用或其他?)。在将特定于项目的类加载(或放置)到数据库时,应该如何开发它们之间的关系?我想,因为它是一个桌面应用程序,所以它是一个基于UI的应用程序。所以MVC架构最适合这里。另外,我猜您必须使用JavaBean来异步访问模型 首先定义

在我的Java应用程序中,我将TopLink持久性库与MySQL db一起使用

我开发了一个类库,它被几个桌面应用程序使用,它包含一些特定于我的项目的类。类彼此链接,通常具有一对多关系

我希望DB实体类和项目特定类是分开的


我应该如何开发这些类之间的通信(继承、使用或其他?)。在将特定于项目的类加载(或放置)到数据库时,应该如何开发它们之间的关系?

我想,因为它是一个桌面应用程序,所以它是一个基于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类)?现在这将是您的技能,来设计这些类。如果您正确地设计了基类,那么您将共享大部分代码。顺便说一句,对于每个模型,您需要一个单独的模型类,但是对于一些模型集,模型提供程序可能是通用的。这同样取决于你的应用和设计技巧