相关疑难解决方法(0)

使用JPA/Hibernate进行继承映射

这是一个相当冗长(并不过于复杂)的设计问题,所以请耐心等待.我正在尝试使用POJO和JPA实现人员/角色管理系统.我是ORM的新手,这主要是一个映射问题.

我已经将它作为POJO工作,并且对调用者级API感到满意,但现在想在Seam环境中使用JPA或Hibernate将其映射到数据库.

我的实现基于Decorator(GoF)和Person Role Object模式(Baumer/Riehle等人).所有角色都是硬编码的,并且不支持运行时添加新角色,因为它需要更改代码以扩展行为.我将使用用户组来实现安全性和权限.

有一个Person接口,其中包含角色管理方法,如addRole(),removeRole(),hasRole(),getRole(),getRoles()等.具体实现由PersonImpl类提供.

有一个抽象类Role,它还实现了Person接口(用于装饰器替换等价),以及一个扩展它的RoleImpl类.Role类包含对person实例的引用,使用它来为person接口上的任何方法/属性调用提供服务,这意味着Role的所有子类都可以处理Person接口.角色构造函数将person对象作为参数.

这些是接口/类:

public interface Person {
    public String getFirstName();

    public void setFirstName(String firstName);
    .
    .
    .
    public boolean isEnabled();
    public void setEnabled(boolean enabled);
    public Set<Role> getRoles();
    public Role addRole(Class<? extends Role> roleType);
    public void removeRole(Class<? extends Role> roleType);
    public boolean hasRole(Class<? extends Role> roleType);
    public Role getRole(Class<? extends Role> roleType);

    public enum Gender {MALE, FEMALE, UNKNOWN};
}

public class PersonImpl implements Person {
    .
    .
    .
}

public abstract class Role implements Person { …
Run Code Online (Sandbox Code Playgroud)

oop inheritance hibernate seam jpa

8
推荐指数
1
解决办法
6057
查看次数

UML类关系

在确定常见的UML类关系时,我想确认自己是否走在正确的轨道上.例如,之间的关系是:

1 stackoverflow成员和他/她的stackoverflow用户帐户分类为组合关系或聚合关系?起初我认为这是一个协会,因为这个成员"有一个"帐户.然而,在第二个想法,我正在考虑它的组成,因为每个"部分"(用户帐户)一次只属于一个整体(用户),这意味着只要我登录到stackoverflow,我必须使用这一个而且只有帐户,直到我注销.如果我使用不同的帐户重新登录到stackoverflow,那么它的组成将再次出现.你同意吗?

2一个数据库和一个人的用户帐号有聚合关系吗?我想是这样的,因为1个数据库(整个)可以存储0 ...*用户帐户(部分)的数量,但另一个数据库可以存储相同的用户帐户.

最后,任何人都可以推荐一个专门使用UML设计代码的网站吗?提前致谢

uml design-patterns class-design

3
推荐指数
1
解决办法
3176
查看次数

标签 统计

class-design ×1

design-patterns ×1

hibernate ×1

inheritance ×1

jpa ×1

oop ×1

seam ×1

uml ×1