0

我正在编写一个项目,我正在尝试应用多层架构。现在我有 2 个 EJB、业务和持久性以及一个共享 jar。由于功能要求,持久性必须是可替换的。我制作了一个名为 IPersistence 的接口。然后我在持久性 EJB 中创建了一个名为“持久性”的远程会话 bean,并将远程接口放入共享库中。现在,我需要使用来自业务的注入来调用 IPersitence。我怎样才能做到这一点?也许整个想法是错误的。我需要一些建议。

谢谢!

4

1 回答 1

1

这是一个简单的示例,其中您有一个汽车存储库/DAO,它通过不公开它是否存储在数据库、文件、XML 等中来从业务逻辑中抽象出持久性。然后业务类注入一个实例以便能够 - in这种情况 - 保存到数据库。但是,您可以创建实现 CarRepository 的其他类,并提供其他方法来在应用程序中保存数据,而无需触及代码的其他部分。

持久层

存储库/DAO 的接口

@Local
public interface CarRepository {
    List<Car> findAllCars();

    // Many other methods
}

存储库(域驱动设计)或数据访问对象

@Stateless
public class CarSqlRepository implements CarRepository {

    @PersistenceContext(unitName = "MyUnit")
    private EntityManager entityManager;

    public List<Car> findAllCars() {

    }

    // Many other methods
}

服务/业务层

@Stateless
public class CarService {

    @Inject
    private CarRepository carRepository;

    public List<Car> findAllCars() {
        return carRepository.findAllCars();   
    }

    // Many other methods
}
于 2012-06-23T17:08:51.243 回答