我正在编写一个项目,并尝试应用多层架构。 现在我有 2 个 EJB、业务和持久性以及一个共享 jar。由于功能要求,持久性必须是可替换的。我制作了一个名为 IPersistence 的接口(interface)。 然后,我在持久性 EJB 中创建了一个名为“persistence”的远程 session bean,并将远程接口(interface)放入共享库中。现在,我需要使用业务注入(inject)来调用 IPersitence。我怎样才能做到这一点?也许整个想法都是错误的。我需要一些建议。
谢谢!
最佳答案
这是一个简单的示例,其中您有一个汽车存储库/DAO,它通过不暴露其是否存储在数据库、文件、XML 等中的方式从业务逻辑中抽象出持久性。然后,业务类注入(inject)一个实例,以便能够- 在本例中 - 保存到数据库。但是,您可以创建其他类来实现 CarRepository,并提供其他方法来在应用程序中保存数据,而无需触及代码的其他部分。
持久层
存储库/DAO 接口(interface)
@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
}
关于java - 如何从远程无状态 session bean 实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170896/