Java 自定义注解实现ORM对象关系映射

时间:2022-03-14 17:01:24

  一,ORM概念

  ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关系。

  现在常见的ORM框架比如Hibernate和mybatis,都是采用了ORM的方式,基本原则就是类-表(Table)、属性-列(Column)这样的对应,所以一个对象就能表示数据表中的一行数据啦。

  二,XML实现简单的ORM映射

  使用XML实现简单的ORM映射还是非常直观的,加入有一张用户表结构如下:

  

Java 自定义注解实现ORM对象关系映射

  对应的Java类如下:

  package demo;public class User { private String userId; private String userName;}

  那么我们可以使用下面的xml描述对象-关系映射(具体的节点名、属性名都是随意设计的,只是为了说明意思):

  ?xml version=1.0 encoding=UTF-8?!-- orm是所有映射的根节点 --orm !-- 每对映射使用一个mapping节点 -- mapping class="orm".User table=User property name=userId column=user_id/ property name=userName column=user_name/ /mapping/orm

  实际上,有了上面的xml文件,orm.User对象和User表的映射就建立明白了。当ORM框架运作的时候,只需要从xml加载这一个映射关系,就能知道对User对象进行操作时,该对那张表那些列进行操作了。从xml文件中读取数据的方法也有很多,此处不再介绍。

  三,自定义注解

  之前的xml配置文件是描述映射的,这些描述完全可以使用注解来实现,笔者感觉会更加简洁、直接。

  既然是自定义注解,我们首先需要了解哪些是方面是可以自定义的:

  1,可以自定义注解应用的元素。Java注解可以应用于包、类(接口)、方法、属性、构造器等,一般常用的也就类(接口)、方法、属性。

  2,可以自定义注解使用的时机。比如是否编译的时候就把注解的信息丢掉,比如JVM运行时还是保留注解信息。如果运行时保留的话,就可以通过反射读取注解的内容了,所以自定义注解里面保存的ORM映射信息是可以在程序运行时使用的。

  3,是否将注解包含在Javadoc帮助文档里面。

  OK,口说太空洞我们来定义一个最简单注解,该注解的作用非常简单,就是说明类与数据库表的映射关系。自定义类使用的关

  ·