Spring部分注解的个人简单理解
来源:互联网 发布:手机时间同步软件 编辑:程序博客网 时间:2024/06/05 01:14
@Controller
用于标注控制层组件
@Service(name='...')
用于标注业务层组件
@Repository
用于标注数据访问组件,DAO组件
@Component
泛指组件,当组件不好归类时,使用其进行注解
@Transient
用于标注一个并非到数据库表的字段的映射的属性,ORM框架将忽略该属性
@Enumerated(转)
实体Entity中通过@Enumerated标注枚举类型,例如将CustomerEO实体中增加一个CustomerType类型的枚举型属性,标注实体后的代码如下所示。
@Entity
@Table(name = "customer")
public class CustomerEO implements java.io.Serializable {
……
private CustomerType type;
@Enumerated(EnumType.STRING)
public CustomerType getType() {
return type;
}
public void setType(CustomerType type) {
this.type = type;
}
public enum CustomerType {
COMPETITOR, INVESTOR, PARTNER, VENDER
}
}
在实体中虽然标注成枚举类型,但当实体持久化后,表中所对应的值仍旧是基本的数据类型,以上代码创建表的SQL语句是:
CREATE TABLE customer (
id int(20) NOT NULL auto_increment,
name varchar(255),
type varchar(255),
PRIMARY KEY (id)
)
使用枚举类型后,在创建实体时便可以直接引用枚举类型,例如以下代码所示。
CustomerEO customer = new CustomerEO();
customer.setName("Janet2");
customer.setType(CustomerType.PARTNER);
entityManager.persist(customer);
在使用@Enumerated注释时,需要注意以下几个问题:
l 因为枚举类型的有名称和值两个属性,所以在持久化时可以选择持久化名称或是持久化值。通过EnumType来定义,它有两个值如下所示。
public enum EnumType {
ORDINAL,
STRING
}
ORDINAL表示持久化的为枚举类型的值,STRING表示持久化的为枚举类型的名称。默认为ORDINAL,持久化值。例如以上示例中标注的为STRING,这样持久化实体后,数据库中保存的是枚举类型的名称,如图所示。
若此时改成ORDINAL,代码如下:
@Enumerated(EnumType.ORDINAL)
public CustomerType getType() {
return type;
}
则同样持久化的实体后,数据库保存的结果如图所示。
l 如何选择STRING和ORDINAL:
如果使用STRING保存,虽然从数据库中查询数据时非常直观,能够清楚的看出该类型代表意义,但这样也会带来其他的问题。若此时枚举类型的定义改变,例如上例中的枚举类型名称改为:
public enum CustomerType {
CUST_COMPETITOR, INVESTOR, PARTNER, VENDER
}
则此时数据库中保存的“COMPETITOR”的值将不能转化为枚举类型CustomerType中的“CUST_COMPETITOR”的值。但若使用ORDINAL则不会带来这种问题。所以建议使用ORDINAL类型来持久化枚举类型。
......待更
- Spring部分注解的个人简单理解
- Spring的部分注解的理解
- 简单描述Spring -- Spring的个人理解
- spring 常用的几个注解的个人理解
- spring 常用的几个注解的个人理解
- spring的部分注解
- spring注解的理解
- spring注解的部分解释
- spring 管理的事务。个人理解(SSH项目注解配置)
- 关于数据库触发器的个人理解/注解
- spring框架的个人理解
- Spring @Transactional注解的理解
- Spring相关部分注解的用法:
- CodeIgniter部分个人理解
- spring注解 个人笔记
- Spring 的简单理解
- spring MVC 部分注解
- Spring 部分注解详解
- Android ListView常用用法(结合长按、数据库等)
- 中小手机厂商遇倒闭潮:沦为小米华为炮灰
- eclipse访问Android中的/data/目录
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- opengl es学习笔记1(基本概念)
- Spring部分注解的个人简单理解
- android 模拟器使用intel硬件加速
- myeclipse 编辑JS很慢的解决办法
- 关于微信开发的一点小问题
- zhuan vi 命令
- 今天在我导入一些安卓项目的源码的时候会出现style.xml 和MAIN.xml 等错误, 网上的方法试了各种clean各种fix等方法都是不能解决。最后去国外论坛得到解决
- 为什么使用第三方轻量级框架FMDB?
- Android ListView 中文API
- Android 整合新浪微博SDK问题