ODL中使用mysql数据库

作者简介:鸿哥,硕士研究生,国内某通信设备公司软件研发工程师,主要从事云计算、SDN技术开发

一、前言

在项目开发当中,一般使用odl控制器只是控制网络设备的南北向数据流量,其他业务单独采用业务逻辑服务器,尽量减少与odl控制器的耦合性,然后实际应用当中,还是有不可避免的希望在odl中使用mysql数据库,此文就是描述如何在odl控制器使用mysql数据库。

在odl控制器当中使用mysql数据库,不像spring那样直接在applicationContext.xml文件中配置数据库连接池那样简单,原因是odl采用osgi框架,跟普通的web项目有很大的区别,没有一点基础的童鞋搞起来还是很费劲的。因此本文尽量讲详细一些,有问题也可以留言给我。

二、安装mysql数据库

在odl控制器当中使用mysql数据库首先要安装一个mysql数据库,至于mysql安装在哪里无所谓,反正odl控制当中的app是通过远程访问方式连接数据库,但是需要将mysql的允许远程连接打开,本文是将mysql安装在odl服务器上,并且odl所在的服务器操作系统为ubuntu 14.04-server版,服务器IP地址为192.168.7.110,安装步骤如下:

1)在ubuntu当中,为了安装简单,直接采用其apt安装方式,安装前将apt更新下。

2)安装mysql安装过程中会跳出输入mysql的root账户密码,此处设置root的密码为1111。

3)采用root的账户登录mysql数据库

如果是远程登录,可以采用如下命令

4)查看mysql版本

5)查看数据库字符集

6)因为mysql中需要存入中文字符,因此修改字符集

7)创建测试数据库

8)添加授权信息

9)授权远程连接

到此mysql数据库基本配置完成。

三、odl开发中引入mysql数据库组件

在odl锂版本之后开发模式就切换成了blue-print开发方式,程序入口为:impl-blueprint.xml文件。

在impl-blueprint.xml需要引入JPA配置文件,创建example\impl\src\main\resources\META-INF文件夹,添加persistence.xml文件,内容如下:

persistence-unit节点表示连接数据库节点,properties节点里面配置数据库的连接信息,如用户名为root,密码为1111,驱动为com.mysql.jdbc.Driver,方言为org.hibernate.dialect.MySQLDialect,是否自动创建数据表为create-drop,此时的create-drop后续应该改为create,这里只是做个演示,更新详细的配置请自行google。
有了数据库连接之后,还需要在impl-blueprint.xml写入jpa:unit引用,

引入jpa之后,应该在pom文件中写上相应的依赖,依赖如下:

由于ODL是采用osgi架构,因此引入上述org.osgi.core以及JPA依赖,完整的pom文件内容为:

四、数据库读写代码实现

本文将定义一个Person对象,欲将Person对象存入mysql数据库,跟普通开发一样,先定义Person类,为了简单起见,只定义Person了一个id以及name两个属性,并填写get以及set方法,完整类为:

再写一个服务类PersonService对外提供接口,如下所示:

编写PersonServiceImpl对其进行实现,在该类中使用了EntityManagerFactory,这个EntityManagerFactory就是数据库的CRUD接口,是由org.hibernate.javax.persistence提供的。

最后由ExampleProvider类对上述接口进行测试,ExampleProvider也是odl中定义的impl-blueprint入口类,类的具体实现为:

五、测试

在服务器上创建好数据库test之后,运行odl控制器。如下图所示:

上传example编译包,执行以下命令进行安装。

可以看到已经将组件安装好了并且创建了Person数据表。

打开数据表可以看到里面的内容就是刚刚测试代码插入的数据。

在odl中使用mysql的方法到此就讲解完了,最主要的注意点就是persistence.xml文件,里面配置好数据库的连接,就可以自由的访问mysql数据库。

六、总结

mysql在odl中的使用需要依赖于osgi的特有jar包,比如pax-jdbc-spec、mysql-connector-java、pax-jdbc-mysql、transaction、hibernate等等,在安装example之前必须先将其安装好。最后,如果有需要example实例代码的童鞋请给我留言邮箱,我会将代码发给你。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/20681.html
分享到:
相关文章
条评论

登录后才可以评论

wellbeing 发表于18-04-09
4