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

特定项目用数据库反射框架的尝试(接口结构及基本信息篇)

阅读更多

 

一 核心接口类:DbCommon

 

1.核心方法

(1).

public static  Configuration getXMLCon(Object obj,boolean isGetObj,String paramName,String paramValue)

 主要完成从数据库中的对应表中取出xml格式(clob)的文本,转存成Configuration对象(org.apache.avalon.framework.configuration.Configuration),并返回。并根据需要,决定是否要持久化该表对应的对象。

(2).

public static void updateXMLCon(Object obj,Configuration conf,String paramName,String paramValue )

 主要完成特定表中,某条记录中的xml字段更新的操作。

(3).

public static void insertData(Object obj,Object... objs)

 主要完成向某个 传入对象所对应表中插入数据的操作。

 

 

2.所涉及的工具方法:

(原先moa中的数据库连接,及大文本字段赋值的公共方法这里不介绍)

 

(1).

private static String classNameSwitch(String str)

 该方法完成java类及其属性的命名到数据库表及其列的命名的单向转换。如  将类名TabMoaPackage 转成 对应的数据库表名 TAB_MOA_PACKAGE ,类属性与数据库列的转换类似。(方法的命名有些不规范,重构时修改);

 

(2).

private static  String tableNameSwitch(String str ,boolean isUpper)

 该方法完成数据库表及其列的命名到java类及其属性的命名的单向转换。如 将表名TAB_MOA_PACKAGE转成 对应的类名

TabMoaPackage。 并可通过参数 isUpper决定是否需要转换后的字符串的首字母大写 (列名转成类属性名时,该值多为false,即对应java属性的命名规则)。(方法的命名有些不规范,重构时修改);

 

(3)

private static String strDeal(String str)

 该方法主要做字符串处理,将任意一个字符串的首字母转为大写。(功能有可以合并的空间,重构时修改);

 

(4)

private static String defaultSeq(String tableName)

 该方法针对目前项目所指定的数据库命名规范,根据表名来生成一个符合当前所制定的规则的sequence。如 表TAB_MOA_PACKAGE 对应的默认sequence就是 SEQ_MOA_PACKAGE ; 如果表名是 PACKAGE,则他所对应的sequence默认名为SEQ_PACKAGE

 

(5).

private static String getSeq(String seqName)

 获取一个sequence(下个值),以string类型返回。

 

二.标注类

目前根据需要定义了三个标注类。

(1).

@Target(ElementType.TYPE)  
@Retention(RetentionPolicy.RUNTIME)  
@Documented
public @interface Table {
	String tableName();
}
 

标注类table用于表和类关联 ,定义一个标注属性tableName ,用此来标示表名

 

(2).

@Target(ElementType.FIELD)  
@Retention(RetentionPolicy.RUNTIME)  
@Documented  
public @interface Field {
	String columnName();
	boolean isPrimaryKey() default false;
	boolean isSpecialCol() default false;
}

标注类field用于列和属性字段关联。定义的三个属性,分别用来标示列名,是否主键,是否特殊字段(本项目中用来标示需要业务操作的xml数据)。

 

(3).

@Target(ElementType.TYPE)  
@Retention(RetentionPolicy.RUNTIME)  
@Documented
public @interface Seq {
	String pkGenType() default "SEQ";
	String seqName();
}

 用于标示主键生成方式及值的信息。pkGenType用于标示主键的生成方式,默认为sequence,seqName用于标示sequence的名称。(可扩展以对应多种生成方式)

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

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

    在.NET开发环境中,反射框架是一个强大的工具,它允许程序在运行时检查自身并动态操作类、接口、属性、方法等元数据。这个框架是.NET Framework的核心组成部分,为开发者提供了灵活性和扩展性,使得代码能够在不知道...

    android sqlite数据库框架

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

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

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

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

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

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

    在编程领域,反射机制是一种强大的工具,它允许程序在运行时检查自身并操作其内部结构,如类、接口、字段和方法。在Java等面向对象的语言中,反射机制被广泛用于实现动态类型处理、元数据访问以及在未知类型的情况下...

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

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

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

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

    接口编程 分层+反射+接口层

    在WF-asp.net实训项目中,你可能需要结合这些知识来开发一个能够动态添加水印到图片的Web应用程序,通过接口定义服务,使用反射动态调用服务,同时利用分层架构来组织代码,提高代码的可读性和可维护性。

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

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

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

    反射通常允许程序在运行时检查自身的结构,如类、方法、属性等,并能够根据这些信息进行操作。这对于数据库应用程序尤其有用,因为它可以允许程序在运行时动态地发现和操作数据库表。 动态创建在MFC中通常涉及两种...

    JAVA通过实体生成数据库表

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

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

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

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

    反射允许程序在运行时检查和修改自身的结构,而工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,隔离了类实例化过程,并允许代码在不指定具体类的情况下调用对象的方法。 首先,我们来详细探讨反射...

    C#数据库操作类

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

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

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

    学习上可以用的东西。输入数据库的表的名称,可以获取数据库表结构来生成基本的添删改查语句。

    标题中的“学习上可以用的东西”指的是一个用于辅助学习SQL操作的工具,特别是针对数据库表结构的理解和基本SQL语句的生成。这个工具允许用户输入数据库的表名,然后自动生成对应的添加(INSERT)、删除(DELETE)、...

    生成数据库表实体

    在IT行业中,数据库表实体的生成是开发过程中的一个重要环节,特别是在使用MVC(Model-View-Controller)设计模式的项目中。MVC是一种广泛应用于Web应用开发的设计模式,它将业务逻辑、数据处理和用户界面分离,使得...

    java根据数据库表或视图创建实体

    6. **注解应用**:在生成的实体类中,可能会使用Java注解(如`@Entity`、`@Table`、`@Column`等)来提供额外的信息,帮助ORM框架更好地理解数据库结构。 7. **自定义配置**:用户可能需要对生成的实体类进行特定的...

    利用java反射、注解及泛型模拟ORM实现

    这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM),这是一种将数据库表与Java对象之间进行绑定的技术,简化了数据操作。 首先,我们来理解一下这三个概念: ...

Global site tag (gtag.js) - Google Analytics