`
qzww5324
  • 浏览: 38112 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

特定项目用数据库反射框架的尝试(基本使用篇)

阅读更多

整个接口的使用分为两部分:

第一部分为和表对应的实体类的定义,下面以表TAB_MOA_PACKAGES为例,sequence以默认的SEQ_MOA_PACKAGES建立。对应的类如下:

@Table(tableName="TAB_MOA_PACKAGES") //可省略
@Seq(seqName="SEQ_MOA_PACKAGES")     //可省略
public class TabMoaPackages {
	@Field(columnName="ID",isPrimaryKey=true)
	private Long id;
	private String packageType;//固顶资源库还是自定义资源库的标识	
	@Field(columnName="PACKAGE_DATA",isSpecialCol=true)
	private String packageData;//xml存储
...
}

 1.因为类的命名规则按照了默认的规则,并且sequence的建立也都按照了默认的命名规则,所以这里@Table和@Seq其实都是可以省略的。类属性packageType也按照了默认命名规则,所以不必用标注标示出该属性对应数据库表字段的命名。

 

 2. 这个类属性 id和packageData两个属性比较特殊;

  id对应的数据库字段是表的主键,所以在这里要用isPrimaryKey来标示出来(考虑是否将主键的属性独立出来,这样在主键的类命名符合默认规则的情况下就不用再定义columnName,目前因为是主键,所以即使是符合了默认命名规则,也得把Field标示出来,代码重构时处理)

  packageData在数据对应得字段中,存放的是一个xml格式的clob数据,也是业务需求的数据,涉及到一些特殊处理,所以这里以isSpecialCol标示出,表示需要特殊处理(在目前项目中,表示要返回该属性的值);同样的,目前存在和主键字段相同的标示重复的问题。

 

 

目前的设计的并不完善,所以该类的建立,基本按照贫血模型来建立,即不能有其他和业务操作紧密关联的其他属性和方法

 

 

第二部分为根据业务的需要分别调用三个不同的方法。

 

1.当需要获取一个封装成Configuration对象的xml数据时,调用 getXmlCon方法。如:

TabMoaPackages packages=new TabMoaPackages();
Configuration conf=DbCommon.getXmlCon(packages,true,"packageType","EXTEND");
Long id=packages.getId();
...

 以上代码 传入了一个TabMoaPackages对象,并且需要持久化这个对象,这样方法执行完后,可以使用该对象。如果没有必要使用该对象第二个参数传入false,可以提高些效率。

 

2.当需要更新某个xml时,可以调用updateXMLCon(Object, Configuration, String, String)方法.如:

TabMoaPackages packages=new TabMoaPackages();
Configuration conf=DbCommon.getXmlCon(packages,true,"packageType","EXTEND");
Long id=packages.getId();

//对conf做了一系列的操作
...

DbCommon.updateXMLCon(packages,conf,"packageType","EXTEND");
...

 

这里先是获取了一个xml,然后做了些操作,并更新回数据库,更新方法的参数和读取方法基本类似。

 

这里有个问题需要注意:如果是直接新new了一个对象,作为参数传入updateXMLCom方法的,后面的查询条件参数对应的是主键及其值,即以主键作为查询条件时,这样不会有任何问题,但是如果查询的条件参数是非主键,这时就需要先在新new的这个对象里,给它的主键属性里赋上值后再作为参数传入;上面的例子里就不是以主键id作为查询条件,所以updateXMLCon方法传入的object里,主键属性需要有值,不能为null;

 

3.当需要插入条数据时,调用insertData方法。

 

TabMoaPackages packages=new TabMoaPackages();

//对packages里除主键属性以外的属性进行赋值
...

DbCommon.insertData(packages);
...

 

同样需要new一个对象,并给需要插入的字段对应的属性赋上值(这里主键id不用赋值),然后传入方法就行了

 

分享到:
评论

相关推荐

    反射框架-SQL和Oracle数据库中

    本文将深入探讨反射框架及其在SQL和Oracle数据库中的应用。 首先,我们需要理解什么是反射。反射是一种编程概念,它允许程序在运行时获取关于自身的信息,并能根据这些信息执行相应操作。在.NET中,System....

    android sqlite数据库框架

    本案例围绕"android sqlite数据库框架"展开,旨在通过Java注解和反射机制简化数据库的日常操作,提升开发效率。 首先,SQLite在Android中的应用主要是通过SQLiteOpenHelper类来实现的,这个类是Android提供的一个...

    C#源码 访问ACCESS数据库 通过反射调用命令 清理数据库 执行数据库优化 压缩操作

    本文将深入探讨如何使用C#源码来访问Access数据库,并通过反射技术来执行数据库的清理、优化和压缩操作。首先,让我们理解这些概念。 **C#与Access数据库的交互** C#提供了ADO.NET框架,使得程序员可以方便地连接...

    反射机制数据库万能查询代码简化

    总的来说,这个“反射机制数据库万能查询代码简化”项目旨在通过反射技术简化HQL查询,提高代码的重用性和灵活性,但同时也需要关注性能和安全性。通过不断优化和迭代,我们可以构建出更强大、更可靠的数据库查询...

    抽象工厂访问不同的数据库(反射+缓存)

    标题中的“抽象工厂访问不同的数据库(反射+缓存)”是指在软件设计模式中使用抽象工厂模式来创建和管理数据库连接。...在实际开发中,这样的设计可以提供良好的可扩展性和性能,并且降低系统对特定数据库的耦合度。

    Java反射原理_SSH框架最底层技术

    - Hibernate框架在ORM(对象关系映射)中使用反射,动态调用实体类的方法以操作数据库记录。 总之,Java反射是SSH框架底层实现的关键技术之一,它使得框架能够实现高度动态和灵活的编程,提高了代码的可扩展性和可...

    反射技术压缩和修复Access数据库(没有依赖)

    通过反射,开发者可以不依赖任何特定的库或者API,直接对Access数据库进行压缩和修复。 数据库压缩的主要目的是减小数据库的存储空间,提高读取速度。在Access中,可以通过多种方式实现,例如,删除不必要的数据、...

    反射机制与抽象工厂结合多数据库模型源码

    然后针对每种数据库(如Oracle、MySQL、SQL Server等)创建具体的工厂类,如OracleDAL、MS_SQLDB、SQLServerDAL,这些类实现了`IDatabaseFactory`接口,提供对特定数据库的操作。这样,通过抽象工厂,我们可以在不...

    JAVA通过实体生成数据库表

    在这个场景中,"JAVA通过实体生成数据库表"指的是使用特定的工具或框架,根据预先定义好的Java实体类,自动生成对应的数据库表结构。 首先,我们需要理解什么是实体类。在Java中,实体类通常是对应数据库中的一张表...

    vc++实现反射式数据库模版(2.动态创建)

    例如,你可以根据表名动态地生成一个对象,并用它来执行特定的数据库操作。 4. **反射接口**:为了实现反射,你需要提供一组接口,允许程序在运行时获取和操作这些元数据。这可能包括查询类信息、获取字段列表、...

    仿Litepal 注解和反射实现的数据框架

    本项目旨在模仿Litepal,利用注解和反射技术来构建一个类似的数据框架,使得数据库操作更加便捷、高效。 首先,让我们了解注解(Annotation)和反射(Reflection)的基本概念。注解是Java提供的一种元编程机制,它...

    hibernate连接金仓数据库所需jar包集合lib.7z

    在使用Hibernate连接金仓数据库时,需要特定的驱动和其他相关jar包来支持这种连接。下面我们将详细介绍这些jar包的作用以及如何配置它们。 首先,"hibernate连接金仓数据库所需jar包集合lib.7z"这个压缩包中包含了...

    反射工厂的案例(DAO底层框架)

    例如,我们可以使用Class类的forName()方法加载类,然后通过newInstance()方法创建该类的对象,或者使用getMethods()获取类的所有公共方法,getMethod()获取特定方法,getConstructors()和getConstructor()用于获取...

    C#数据库操作类

    然后,针对每种特定的数据库(如MySQLDbOperator、SqlServerDbOperator等),可以继承这个基类并重写特定数据库的连接字符串和命令创建逻辑。 对于不同的数据库,连接字符串的格式会有所不同。例如,MySQL的连接...

    简单MVC框架 接口、工厂、反射

    在MVC框架中,反射可以用来动态加载实现了特定接口的类,例如在数据工厂中,可以使用反射加载所有实现了`IModel`接口的类,然后根据需求实例化它们。 总结一下,这个"简单MVC框架"利用接口实现了组件间的松耦合,...

    Java基础 反射篇.md

    3. **方便框架设计**:许多框架(如Spring)都大量使用了反射技术,简化了框架的设计。 #### 缺陷 1. **破坏类的封装性**:反射可以访问私有成员,破坏了封装性。 2. **性能损耗**:反射涉及查找类信息、创建实例...

    生成数据库表实体

    5. 反射和映射:如果使用ORM(对象关系映射)框架如Hibernate或Entity Framework,还需要设置映射规则,使实体类能够与数据库进行交互。 这个过程对于快速构建应用程序的模型层尤其有用,因为它减少了手动编码的...

    利用反射sql 动态增/删/改/查 c#

    结合SQL操作,反射可以实现动态的数据库增、删、改、查(CRUD)功能,无需预先编写特定数据库操作的代码,大大提高了代码的灵活性和可维护性。 在“利用反射SQL 动态增/删/改/查 C#”的主题中,主要涉及以下几个...

    java r反射源代码

    Java反射是Java编程语言中的一个强大工具,它允许程序...通过上述的源代码,你可以学习如何在实际项目中使用反射,理解它的基本用法以及在不同场景下的应用。请仔细研究每个示例,它们将帮助你深入理解Java反射的精髓。

Global site tag (gtag.js) - Google Analytics