annotation

昨天用一天的时间重复制造了一个轮子,又一个OR mapping。

我与影子孤独终老i 提交于 2019-12-07 07:45:19
又一个使用annotation的orm的实现,非常无聊的东西。 不过实现过程中,思考了一下,感觉从select出发的orm往往是非常难用的。再简单的系统,其select语句也会出现复杂的内外连接,分组等查询逻辑。 但是在数据存储部分,也就是upate ,insert,delete部分,逻辑往往是非常简单的,使用orm会得到比较好的效果。 然后,要反思一下DAO模式,在通常理解的DAO模式中,数据的读取和写入是放在同一个DAO类当中的,在实际开发中,select相关的findXXX方法好getXXXX方法非常多,但是update,insert,add,save等方法个数都比较少,个人认为开发DAO或者说数据访问层程序的时候,应该讲DAO分为写入DAO和读取DAO,同时可以考虑在此实现读写分离,写入一个库,读取多个库,读加缓冲池,写直接写入,利用数据库机制表同步,以提高系统的伸缩性。 而且根据@1哥的答案,写入操作本身就是一个非常慢的动作,在写入时加入反射,犹如大象身上的虱子,相对磁盘来说,反射的消耗应该可以忽略。 然后,顺便对于NutzDAO进行一下小小的批评,作为DAO中间件,有些事情做了太多,反而不太好,比如引入所谓的whereClause的条件查询,真实业务中的select的SQL非常复杂,用简单的条件封装,很难满足真实开发需要的。 要知道hibernate一开始也很好用

Java Annotation

微笑、不失礼 提交于 2019-12-06 01:17:42
第1部分 Annotation架构 先看看Annotation的架构图: 从中,我们可以看出: (01) 1个Annotation 和 1个RetentionPolicy关联。 可以理解为:每1个Annotation对象,都会有唯一的RetentionPolicy属性。 (02) 1个Annotation 和 1~n个ElementType关联。 可以理解为:对于每1个Annotation对象,可以有若干个ElementType属性。 (03) Annotation 有许多实现类,包括:Deprecated, Documented, Inherited, Override等等。 Annotation 的每一个实现类,都“和1个RetentionPolicy关联”并且“和1~n个ElementType关联”。 下面,我先介绍框架图的左半边(如下图),即Annotation, RetentionPolicy, ElementType;然后在就Annotation的实现类进行举例说明。 第2部分 Annotation组成部分 1 annotation组成成分 java annotation 的组成中,有3个非常重要的主干类。它们分别是: (01) Annotation.java package java.lang.annotation; public interface

一种基于annotation的Spring-mvc权限控制方法

半腔热情 提交于 2019-12-05 03:18:27
##简介## 本文介绍一种采用annotation来对spring-mvc进行权限控制的方法. 通过枚举类来定义权限项. 将annotation标注到需要控制权限的spring-mvc方法上. 然后,在spring-mvc中定义全局过滤器, 过滤所有spring-mvc方法, 查看方法上的权限annotation信息, 以此对权限进行控制. 程序源代码: https://github.com/eagle0445/sample/ ##优点## 编写比较方便, 在需要控制权限的方法上进行annotation的标注即可, ide能够对annotation进行识别支持. 查看权限配置比较方便, 因为annotation就在方法上, 不用去其他地方翻看. 实现方式比较简单. ##具体实现## ###1.建立权限枚举类### 建立权限枚举类型, 用于描述权限的种类, 包含了权限的名称. 每个枚举值中包含了权限中文名称和权限索引值(即权限位). (思考:是否可以直接用中文名称作为枚举值的名称,我在其他程序已经用了中文枚举名称了,暂时没有遇到问题) <!-- lang: java --> public enum AuthorityType{ // 包含了枚举的中文名称, 枚举的索引值 WORKER("增删改查员工", 1), SALES_ORDER_CREATE("创建订单", 6), SALES

JAVA Annotation 自定义注解

十年热恋 提交于 2019-12-04 22:37:23
Annotation(注解),是源代码的元数据 本质一:它是一个附属品,依赖其它元素存在 本质二: 本身没有任何作用,在恰当的时候由外部程序解析产生作用 作用:简化配置,增加代码可读性,提高系统的可维护性 Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。 Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。从某些方面看,annotation就像修饰符一样被使用,并应用于包、类 型、构造方法、方法、成员变量、参数、本地变量的声明中。这些信息被存储在Annotation的“name=value”结构对中。 Java元注解和相关定义注解的语法 元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1. @Target ,2.@Retention,3.@Documented,4.@Inherited 这些类型和它们所支持的类在java.lang

Java中Annotation的使用

早过忘川 提交于 2019-12-04 06:52:03
Annotation是Java5、6只后的新特征(中文称之为注解),并且越来越多的得到了应用,比如Spring、Hibernate3、Struts2、iBatis3、JPA、JUnit等等都得到了广泛应用,通过使用注解,代码的灵活性大大提高。 这些都是使用别人定义的注解,一般注解的使用都是在一些基础框架或者类库中来定义的,因此很少见过有人自己去写一个注解出来并使用在程序中,因此注解的使用常常给人感觉很神秘,这就为你揭开注解的面纱。 注解的神秘之处在于:通过类似注释的方式,可以控制程序的一些行为,运行时的状态,可以为成员赋值,做配置信息等等,与常规编码思维大相径庭。 只用别人定义好的注解是搞不懂这些问题的,要想真正知道注解内部的秘密,要自己定义注解,然后在程序中获取注解信息,拿到注解信息后,就可以为我所用了。 下面我简单演示下三类注解的用法:类注解、方法注解、字段(也称之域)注解的定义与适用,并看看如何获取注解的信息。 一、定义注解 package lavasoft.anntest; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation

采用annotation对spring-mvc进行登录权限控制

穿精又带淫゛_ 提交于 2019-12-04 02:12:48
在web系统中,判断用户是否登录是一个常用功能. 本文提出一种采用annotation对spring-mvc进行用户登录判断的方法. 程序源代码 方法简介 建立一个annotation, 在需要登录判断的spring-mvc方法上进行标注. 再建立一个全局的spring-mvc的interceptor对spring-mvc方法进行过滤, 如果发现有annotation标注的, 就进行登录判断,对没有登录的用户做对应的处理. 优点 采用一个过滤器, 在需要控制的方法上进行标注, 实现和编码都比较简单. 大道至简:) ###具体的实现案例 1.建立登录判断后返回给浏览器的结果类型, (这里有两种: 传统登录页面或者ajax结果). <!-- lang: java --> public enum ResultTypeEnum { //整页刷新 page, //json数据 json } 2.建立annotation, 用于标注需要登录检查的spring-mvc方法 <!-- lang: java --> public @interface Login { ResultTypeEnum value() default ResultTypeEnum.page; } 3.建立用于过滤spring-mvc的interceptor类 <!-- lang: java--> public class

Hibernate的annotation

眉间皱痕 提交于 2019-12-02 16:34:51
@Controller控制器 @Service @Conponent 组件 @Repository Dao访问层 @Entity 实体 @Table 实体mapping表 @Column 属性mapping列 ----> 不需要Mapping的时候用@Transient @Id mapping主键属性,可以将Entity中的某个属性标识为标识符(identifier)。可通过应用自身创建,也可以由Hibernate生成。 @Genarated value 标识符的生产策略。 *AUTO 可以是一下三种任意一种类型,取决于地层数据库的不同 *TABLE 使用表保存 id 值 *IDENTITY identity column *SEQUENCE sequence @Id @GeneratedValue(strategy = GenerationType.IDENTITy) Public Integer getId() {… …} @Id @GeneratedValue(generator = "system-uuid")[该属性名自定义] @GenericGenerator(name = " system-uuid ", strategy = "uuid") [name可自定义,但是strategy属性必须是Hibernate中有效的主键策略] @Column (name =

Hibernate的Annotation

喜夏-厌秋 提交于 2019-11-29 21:37:41
3、Hibernate的Annotation 特别注意:Hibernate的Annotation要依赖于JPA包。 在Hibernate的3.5之前都需要下载Hibernate的Annotation的jar包,在3.5之后Hibernate的Annotation jar包已 经集成到Hibernate包中了。 3.1、基本映射 //注意是javax.persistence.Entity @Entity //设置表名 @Table(name="t_user") public class User { private int id; private String username; private String password; private String nickname; private Date born; private Date createDate; //@Column可以为这个字段进行定义 @Column(name="create_date") public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } //标志为id属性 @Id //GeneratedValue表示自动递增

hibernate学习笔记03-- hibernate + mysql + Annotation

老子叫甜甜 提交于 2019-11-29 01:17:18
1. Annotation 的使用主要分为 2 步: 1.1 加入相应的 jar 包: hibernate-annotations.jar // Annotation 核心包 ejb3-persistence.jar // 符合 jpa 标准的 Annotation 的实现 hibernate-commons-annotations.jar // 进行发射的时候使用 1.2 在 model 中使用 @ 注解的形式对类和属性进行注解 2. 新建 hibernate_annotation , 工程结构目录如下图: 3. 加入相应的 jar 包: 2.1 加入 hibernate 相应的 jar 包 。 2.2 加入 mysql 驱动的 jar 包 。 2.3 加入支持 annotations 的 jar 包 。 2.4 如下图: 4. 代码: 4.1 Student.java package com.hibernate.model; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Student { private int id; private String name; private int age; public Student(int id, String

JAVA 注解-学习篇(1)

为君一笑 提交于 2019-11-28 10:26:13
JAVA注解 Annotation(注解)是JDK1.5及以后版本引入的。字面上看是解释的意思,但是没有那么简单。 注解可以用在这三个方面: 生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see、@param、@return等,不过现在用的到比较少了。 跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring 2.5 开始的基于注解配置。作用就是减少配置,现在的框架基本都使用了这种配置来减少配置文件的数量,这个是我们主要需要了解学习的,因为现在大部分框架都是使用这个的。比如spring中的@Controller等。 在编译时进行格式检查。如@Override 放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。 java.lang.annotation.*下,包含所有JDK中的注解,java.lang.annotation.Annotation 是所有注解继承的接口,并且是自动继承,不需要定义时指定,类似于所有类都自动继承Object。 元注解 在java.lang.annotation下定义了四个元注解; 1.@Retention:注解的注解,元注解之一, 作用:定义注解的保留策略 用法:Retention注解有一个属性value,是RetentionPolicy类型的,Enum RetentionPolicy是一个枚举类型,