-
Notifications
You must be signed in to change notification settings - Fork 447
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仓库
最新正式版本 1.13.1
以1.5.0版本为例,假定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目录
- DAL的编译依赖javax.servlet和javax.servlet-api,如果没有请看下面的安装介绍
- DAL已经包含了对稳定版本SqlServer,Mysql和oracle驱动jar的引用,请用户不要自行引用其他版本的驱动
- DAL使用tomcat-jdbc 7.0.52版本,请不要自己额外配置该依赖,以免发生冲突而产生问题
DAL依赖一些第三方库。如果用户缺乏相关依赖,可能会导致无法编译或运行。例如MS Sqlserver的依赖很多公司可能就没有。用户可以自行搜索并安装到本地或公司的nexus repo。为了方便大家使用,我们对用到的部分容易缺失的依赖提供备份:
下面以Microsoft JDBC Drivers为例介绍如何安装依赖,其他依赖可以按照同样做法安装:
首先获得依赖文件。用户可以直接去微软网站下载4.0.2206版本
Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server
也可以使用DAL提供的备份版本:
假定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
Oracle驱动的备份 安装命令参考:
mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 -Dpackaging=jar -Dfile=d:\drivers\ojdbc6_11.2.0.4.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
请注意选择和本地编译或下载版本一致的版本号
<dependency>
<groupId>com.ctrip.platform</groupId>
<artifactId>dal-client</artifactId>
<version>1.13.1</version>
</dependency>
将所有生成的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各种演化的灵活性