相关疑难解决方法(0)

EJB的用途是什么

我目前正在学习Jave-EE,拥有丰富的C++经验并且学过Java SE.我不明白Enterprise Java Beans的目的; 有人可以为我澄清这一点.我对遗留用途不感兴趣:这是在EJB-3.1和Java-EE 6的上下文中.

似乎有些人使用它们来包含业务逻辑,用于实现传统3层架构的业务层.这将域逻辑与域对象分开,导致贫乏的域模型.但这违背了我所有的OOD本能; 我同意Martin Fowler认为这是一种反模式.我是否应该放松对贫血领域模型的反对意见?或者EJB有其他用途吗?

java ejb java-ee

27
推荐指数
4
解决办法
2万
查看次数

将DAO自动装配到域对象中

我正在编写一个网站的功能区/成就系统,我必须为我的系统中的每个功能区编写一些逻辑.例如,如果您是第一批注册到该网站的2,000人或者在论坛中发布了1,000个帖子后,您就可以获得一个功能区.这个想法非常类似于stackoverflow的徽章,真的.

因此,每个功能区显然都在数据库中,但它们还需要一些逻辑来确定用户何时获得功能区.

在我编写它的方式,Ribbon是一个简单的抽象类:

@Entity
@Table(name = "ribbon")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "ribbon_type")
public abstract class Ribbon
{
    @Id
    @Column(name = "id", nullable = false, length = 8)
    private int id;

    @Column(name = "title", nullable = false, length = 64)
    private String title;

    public Ribbon()
    {
    }

    public abstract boolean isEarned(User user);

    // ... getters/setters...
}
Run Code Online (Sandbox Code Playgroud)

您可以看到我将继承策略定义为SINGLE_TABLE(因为我必须像50条带一样编码,我不需要为其中任何一条添加额外的列).

现在,将实现一个特定的功能区,例如:

@Entity
public class First2000UsersRibbon extends Ribbon
{
    @Autowired
    @Transient
    private UserHasRibbonDao userHasRibbonDao;

    public First2000UsersRibbon()
    {
        super.setId(1);
        super.setTitle("Between the …
Run Code Online (Sandbox Code Playgroud)

java spring dao spring-mvc autowired

4
推荐指数
1
解决办法
4039
查看次数

标签 统计

java ×2

autowired ×1

dao ×1

ejb ×1

java-ee ×1

spring ×1

spring-mvc ×1