使用spring ioc
的可交换数据层
我为每个表都有DAO,它们都实现了一个接口。
现在我希望能够(可能)交换数据库层实现。
所以我的策略是创建一个DaoFactory,这个DaoFactory将特定于我的DAO的特定实现。
所以我会有休眠的DAO。
然后是一个DaoHibernateFactory,它看起来像:
public class DaoHibernateFactory implements DaoFactory
{
public UserDao GetUserDao() {
return new UserHibernateDao();
}
}
然后在我的所有经理/服务类中,我将使用当前通过spring ioc连接的Dao___Factory。
这有意义吗?建议?
没有找到相关结果
已邀请:
3 个回复
功飘
ibatis的-data.xml中:
等等 然后,您可以通过更改
中包含的
文件来替换实现。
递劝臼类洪
这里我们说所有Hibernate Daos都以hibernate开头,所有ibatis Daos都以ibatis等开头。 2.下一步配置Daos的用户。根据属性确保接线是动态的。
3.在Spring文件中配置Spring Property占位符。
4.最后,您使用单行编写app.properties。
现在,daoImpl将被“hibernate”取代。这种技术的另一个优点是SpringPropertyPlaceHolder也可以从环境中获取属性,它可以优先于app.properties使用(取决于配置参数查找javadocs以获取详细信息) 因此,您可以使用环境属性配置您的应用程序行为,这可能非常强大。 备选方案2: 您还可以使用Maven配置文件来实现类似的行为。 Maven具有“过滤”资源的能力 - 在这种情况下,它将用一些字符串替换占位符,具体取决于它正在执行的maven配置文件。您可以利用此功能生成适用于给定实现的应用程序包(jar,ear等)(如hibernate,ibatis等)。显然,这不如PropertyPlaceHolder方法灵活,但在某些条件下更可取。
抹持奠糙驰