-
Notifications
You must be signed in to change notification settings - Fork 0
Java客户端 集成说明
DAL提供代码生成器来生成DAO代码和相应的配置文件。如非必要请不要通过调用DAL的API来试图编写自己的DAO。请先通过生成器创建DAO。目前代码生成器支持标准,构建和自定义DAO,可以满足所有需求。
总体而言只要把生成的代码和配置拷贝到项目里面就可以了。
生成DAO和配置文件后,请按照下面的步骤依次完成开发环境的构建
- 获取Dal Client
- 添加Dal Client 依赖
- 复制配置文件
- 编译打包
- 初始化
开发和部署中常见问题可以参考常见问题
初次使用DAL可以先试运行下面提供的demo project以对一个完整的应用建立初步的认识。
更多信息可以参考 功能简介, 数据库分片,数据库事务等文档。
你可以通过如下3种方式获得Dal client
- 直接下载
- 手工安装
- 从原代码打包
添加下列的repository在pom.xml,或者settings.xml里面。
<repositories>
<repository>
<id>dal-repo</id>
<url>https://raw.github.com/ctripcorp/dal/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
如果不能下载下来,请注释掉settings.xml里面的proxy试试。或者尝试手工安装或从源代码生成
从最新的dal client relase目录下载dal client对应的文件,手工安装到本地或公司的nexus仓库
假定copy到本地D:\dal目录下,depoly到公司的nexus repo参考命令如下
mvn deploy:deploy-file -DpomFile=D:\dal\pom.xml -Dfile=D:\dal\dal-client-1.5.0.jar -Dsources=D:\dal\dal-client-1.5.0-sources.jar -Djavadoc=D:\dal\dal-client-1.5.0-javadoc.jar -Durl=http://yourcorp.com:8081/nexus/content/repositories/release/ -DrepositoryId=nexus-releases
Install到本地repo的参考命令如下:
mvn install:install-file -DpomFile=D:\dal\pom.xml -Dfile=D:\dal\dal-client-1.5.0.jar
下载dal client的原代码,直接mvn install即可
部署可以参考上面的命令,或者修改这个部署dal-client模板。这个命令假设pom在项目根目录,生成的结果在target目录
请
<dependency>
<groupId>com.ctrip.platform</groupId>
<artifactId>dal-client</artifactId>
<version>1.5.0</version>
</dependency>
- DAL已经包含了对稳定版本SqlServer和Mysql驱动jar的引用,请用户不要自行引用其他版本的驱动
- DAL使用tomcat-jdbc 7.0.52版本,请不要自己额外配置该依赖,以免发生冲突而产生问题
DAL对MS Sqlserver的依赖可能很多公司没有。需要自己安装到本地或公司的nexus repo。 可以直接去微软网站下载4.0.2206版本
Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server
DAL在doc里面也提供版本:
假定copy到本地D:\目录下,deploy到公司repo的参考命令如下
mvn deploy:deploy-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc -Dversion=4.0.2206 -Dpackaging=jar -Dfile=d:\sqljdbc-4.0.2206.jar -DrepositoryId=your-nexus-releases-repo -Durl=http://yourcorp.com:8081/nexus/content/repositories/yourreleaserepo
Install到本地repo的命令如下:
mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc -Dversion=4.0.2206 -Dpackaging=jar -Dfile=d:\sqljdbc-4.0.2206.jar
将所有生成的dal.xml, datasource.xml copy到项目的resource目录。
dal是基于maven的工具,mvn compile即可编译。
Dal支持懒加载,可以在第一次调用dao的时候自动初始化系统。初始化会花时间校验配置,组装系统,初始化数据库连接池,所以可能会有些耗时。
如果希望在应用启动的时候初始化,请单独调用DalClientFactory.initClientFactory()。
如果希望预热连接池,可以调用DalClientFactory.warmUpConnections(),该调用会主动调用DalClientFactory.initClientFactory()。所以无需再次单独调用
如果是独立程序,可以按照上面的说明选择需要的初始化方式。
针对web应用,dal提供了缺省的servlet listener完成系统的初始化,校验配置项和初始化连接池。通过在Web.xml里面配置servlet listener可以避免额外写初始化代码。
<listener>
<listener-class>com.ctrip.platform.dal.dao.helper.DalClientFactoryListener</listener-class>
</listener>
如果dal.xml在应用的缺省classpath里面。无需任何配置。特殊情况下,如果dal.xml不在classpath,可以通过context-param在web.xml里面指定 com.ctrip.platform.dal.dao.DalConfigPath e:/Dal.config
开启Dal Java Client Factory的warm up功能,预热所有连接。 不设或者设置成false表示不开启,连接池再实际产生数据库操作的时候懒加载
<context-param>
<param-name>com.ctrip.platform.dal.dao.DalWarmUp</param-name>
<param-value>true</param-value>
</context-param>
mysql数据库在接收使用utf8mb4的时候报错:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x9C\xE3\x80...'
当前的DAL客户端已经支持utf8mb4,但数据库方面需要修改字符集。请参考mysql相关文档
在datasource.xml里面设置removeAbandonedTimeout:超时设置,单位秒
或者针对特定的dao方法可以调用DalHInts.timeout(second)
以下是携程数据库使用规范的简介,供参考
- 每张表都必须保护自增长的主键
- 禁止建立表之间的主外键关联
- 严格控制多表join操作,尽量用单表查询
- 每张表都必须保护标明最后更新时间的字段
Demo projec可以查看基于mysql数据库生成的dao代码。该demo基于两个数据库,每个数据库里面包含4张表。project里面的sharding设置是两个库按mod 2来路由,4张表按照mod 4来路由。
- 下载demo project
- 在resources目录下面找到dbsetup.sql,复制到mysql的客户端里面执行
- 修改datasource.xml,将里面的连接串,用户名,密码修改为你的数据库
- 运行test下面的AllTests
- 尽量使用code gen生成的代码
- 避免自己去写代码调用dal的api,就算比较清楚如何使用
- 这样做的原因是为了保证向后兼容和code gen与dal各种演化的灵活性