わかりました、少し読んでデザインパターンの世界に飛び込んだ後、次のことを行い、私の経験を共有することにしました(参照を解決するには、私の最初の投稿を参照してください)。
永続層 ([5]、[6]、[7] など) には Strategy-Pattern を使用しましたが、ググればDAOFactory-Patternと呼ぶこともできます。それに関連して、「Java Persistence with Hibernate」という本で非常によく説明されているGenericDAO-Patternを使用しました。
Strategy-Pattern は基本的にインターフェイスで構成されています。私の場合は、実際の永続化の実装を抽象化するPersistenceStrategyと呼ばれます。さらに、その Persistency Strategy をラップするサービスPersistenceServiceがあります。
public interface PersistenceStrategy {
public void persist(BaseEntity object);
...
}
PersistenceService:
public class PersistenceService {
private PersistenceStrategy persistenceStrategy;
public void setPersistenceStrategy(PersistenceStrategy strategy) {
this.persistenceStrategy = strategy;
}
public PersistenceStrategy getPersistenceStrategy() {
return this.persistenceStrategy;
}
}
実際の永続化クラス [6] および [7] (PersistenceStrategyHibernate など) などはこのインターフェイスを実装しており、Spring Bean として宣言しました。また、PersistenceService を Bean として宣言しました。実際の PersistenceStrategy は、PersistenceService に注入されます。この Bean 定義は、webapp プロジェクト [4] ではなく、たとえば [5] および [6] の実際の永続化実装にあることに注意してください。
<bean id="hibernatePersistenceStrategy" class="org.myProject.persistence.relational.HibernatePersistenceStrategy" />
<!-- PersistenceService is instantiated here with the actual persistence strategy implementation -->
<bean id="persistenceService" class="org.myProject.persistence.PersistenceService">
<property name="persistenceStrategy" ref="hibernatePersistenceStrategy"></property>
</bean>
私の webapp maven プロジェクト [4] では、実際の永続化の実装 ([5] または [6] など) への参照を行います。
<dependency>
<groupId>org.myProject</groupId>
<!-- this is where the persistence module is referenced.
if you want to change the type of persistence you can do it here. -->
<artifactId>persistence-relational</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
私のコントローラ クラスでは、PersistenceService と PersistenceStrategy を参照できます。
@Controller
public class NewDatasetController {
@Autowired
PersistenceStrategy persistenceStrategy;
@RequestMapping("/")
public String landing() {
...
}
}
これらのパターンは、私の意見ではかなりいいです。この投稿に何か追加したい場合は、お気軽にどうぞ。