装修网站合作平台有哪些,北京网站优化解决方案,昆明网站建设哪家,比亚迪新能源汽车怎么样简介Ctrip DAL是携程框架部开发的数据库访问框架#xff0c;支持代码生成和水平扩展。其由携程技术中心框架部DAL团队开发#xff0c;历经3年不断打磨#xff0c;并在长期的实际使用中基于大量的用户反馈不断优化。开源范围包括代码生成器#xff0c;Java客户端和C#客户端。… 简介Ctrip DAL是携程框架部开发的数据库访问框架支持代码生成和水平扩展。其由携程技术中心框架部DAL团队开发历经3年不断打磨并在长期的实际使用中基于大量的用户反馈不断优化。开源范围包括代码生成器Java客户端和C#客户端。背景随着企业规模扩张和业务量的急剧增加作为系统核心的数据库相关开发也会经历一个由单一团队发展为多团队由单机扩张到集群由单数据库发展为多数据库由采用单一数据库产品到多种数据库产品并存的过程。伴随这一过程的是如何管理数据库扩展如何规范数据库访问如何保护数据库投资如何应对访问量增加如何预防安全问题等一系列挑战。作为中国在线旅游行业的翘楚携程也曾经面对同样困扰。为了应对这些挑战实现企业10倍速发展携程开发了具有自己特色的数据库访问框架Ctrip DAL。Ctrip DAL支持流行的分库分表操作支持Java和C#支持Mysql和MS SqlServer。使用该框架可以在有效地保护企业已有数据库投资的同时迅速可靠的为企业提供数据库访问层的横向扩展能力。整个框架包括代码生成器和客户端。工作模式是使用代码生成器在线生成代码和配置通过DAL客户端完成数据库操作。生成器具有丰富的向导指引操作简单清晰即可以批量生成标准DAO也可以在方法级别定制数据库访问。客户端则可以简单的通过标准的maven方式添加依赖。Ctrip DAL与一般数据库框架最大的不同是从企业跨部门的角度统一管理数据库相关资源。通过部署代码生成器企业可以做到有效的管理全公司的DAL开发团队明确数据库归属和定制数据库访问。通过代码生成器生成的标准DAO代码与客户端配合使用可以大幅提高工作效率保证代码质量。解决了业内常见的伴随业务成长而带来的系统维护困难开发效率低下代码风格五花八门代码质量参差不齐等痛点问题。代码生成器代码生成器允许用户创建Dal团队组织开发人员管理数据库创建DAO并生成代码和配置。与一般基于JDBC driver的DB sharding产品不同的是代码生成器生成的代码和配置可以直接拿来实用完全无需用户写一行代码和配置。做到了只需开发人员关心业务逻辑而把繁琐的数据库相关的编码和配置任务全部交给DAL。由于Ctrip DAL完全在DAO这层工作也没有什么这种SQL语句不支持那种SQL语句不能用的情况。同时传递hints的方式也非常自然每个方法都自带hints的接口需要DAL额外做什么可以直接按给定的已有名字来设置无需改写原始的sql来添加怪异的注释。客户端简介客户端配合代码生成器生成的代码来完成用户的数据库访问操作。通过Dev和QA两方面双重自动化测试来保障质量覆盖率达到99并经过生产实际实用的的长期严格检验。为了适应不同公司的实际情况DAL客户端定义了丰富的扩展接口覆盖了从数据源管理数据库映射连接串读取到自定义访问方式等等方方面面的功能。同时为了方便系统监控还内置了系统状态日志和统计模块。C#客户端 API列表以下这些API位于BaseDao类中 方法族说明除了所示的方法之外至少还包含一个带有IDictionary hints参数的重载方法。注意增删改均适用的API被归类至Update系列
CreateObject InsertT(T obj) where T : class, new() 方法族
Object InsertByComplexPkT(T obj) where T : class, new() 方法族
Boolean BulkInsertT(IListT list) where T : class, new() 方法族
Retrieve
IQueryT GetQueryT() where T : class, new()
IListT GetAllT() where T : class, new() 方法族
IListT SelectListOfSingleFieldT(String sql) 方法族
IListT SelectListT(String sql) where T : class, new() 方法族
IListT SelectListT(IQuery query) where T : class, new() 方法族
IListT SelectListByAdapterT(String sql) where T : class, new() 方法族
IListT SelectListByAdapterT(IQuery query) where T : class, new() 方法族
IListT ExecListBySpT(String procName, StatementParameterCollection parameters) where T : class, new() 方法族T GetByKeyT(Object key) where T : class, new() 方法族T SelectFirstT(String sql) where T : class, new() 方法族T SelectFirstT(IQuery query) where T : class, new() 方法族T VisitDataReaderT(String sql, FuncIDataReader, T callback) 方法族T VisitDataReaderBySpT(String procName, StatementParameterCollection parameters, FuncIDataReader, T callback) 方法族DataTable SelectDataTable(String sql) 方法族DataTable ExecDataTableBySp(String procName, StatementParameterCollection parameters) 方法族DataSet SelectDataSet(String sql) 方法族DataSet SelectDataSetT(IQuery query) where T : class, new() 方法族DataSet ExecDataSetBySp(String procName, StatementParameterCollection parameters) 方法族IDataReader SelectDataReader(String sql) 方法族IDataReader ExecDataReaderBySp(String procName, StatementParameterCollection parameters) 方法族Object ExecScalar(String sql) 方法族Object ExecScalarBySp(String procName, StatementParameterCollection parameters) 方法族UpdateInt32 UpdateT(T obj) where T : class, new() 方法族IUpdatePartialT GetUpdatePartiallyT() where T : class, new()Int32 UpdatePartiallyT(IUpdatePartialT partially, T obj) where T : class, new() 方法族Int32 ExecNonQuery(String sql) 方法族void ExecSp(String procName, StatementParameterCollection parameters) 方法族DeleteInt32 DeleteT(T obj) where T : class, new() 方法族https://github.com/ctripcorp/dal