JPA(Java Persistence API)学习总结
来源:互联网 发布:python界面开发html5 编辑:程序博客网 时间:2024/05/21 16:22
具有ORM元数据的领域对象称为实体(Entity),按JPA的规范,实体具备以下的条件:
- 必须使用javax.persistence.Entity注解或者在XML映射文件中有对应的元素;
- 必须具有一个不带参的构造函数,类不能声明为final,方法和需要持久化的属性也不能声明为final;
- 如果游离状的实体对象需要以值的方式进行传递,如通Session bean的远程业务接口传递,则必须实现Serializable接口;
- 需要持久化的属性,其访问修饰符不能是public,它们必须通过实体类方法进行访问。
- @Entity:将领域对象标注为一个实体,表示需要保存到数据库中,默认情况下类名即为表名,通过name属性显式指定表名,如①处的name = "T_TOPIC",表示Topic保存到T_TOPIC表中;
- @Id :对应的属性是表的主键,如②-1所示;
- @GeneratedValue:主键的产生策略,通过strategy属性指定。默认情况下,JPA自动选择一个最适合底层数据库的主键生成策略,如SqlServer对应identity,MySql对应auto increment。在javax.persistence.GenerationType中定义了以下几种可供选择的策略:
- IDENTITY:表自增键字段,Oracle不支持这种方式;
- AUTO: JPA自动选择合适的策略,是默认选项;
- SEQUENCE:通过序列产生主键,通过@SequenceGenerator注解指定序列名,MySql不支持这种方式;
- TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。不同的JPA实现商生成的表名是不同的,如OpenJPA生成openjpa_sequence_table表Hibernate生成一个hibernate_sequences表,而TopLink则生成sequence表。这些表都具有一个序列名和对应值两个字段,如SEQ_NAME和SEQ_COUNT。
- @Column(name = "TOPIC_ID"):属性对应的表字段。我们并不需要指定表字段的类型,因为JPA会根据反射从实体属性中获取类型;如果是字符串类型,我们可以指定字段长度,以便可以自动生成DDL语句,如③处所示;
- @Temporal(TemporalType.DATE):如果属性是时间类型,因为数据表对时间类型有更严格的划分,所以必须指定具体时间类型。在javax.persistence.TemporalType枚举中定义了3种时间类型:
- DATE :等于java.sql.Date
- TIME :等于java.sql.Time
- TIMESTAMP :等于java.sql.Timestamp
对于继承的实体,在javax.persistence.InheritanceType定义了3种映射策略,:
- SINGLE_TABLE:父子类都保存到同一个表中,通过字段值进行区分。这是我们Topic实体所采用的策略,Topic和PollTopic都保存到同一张表中,通过TOPIC_TYPE字段进行区分,Topic在T_TOPIC表中对应TOPIC_TYPE=1的记录,而PollTopic对应 TOPIC_TYPE=2的记录(稍后在PollTopic实体中指定);区别的字段通过@DiscriminatorColumn说明,区分字段对应该实体的值通过@DiscriminatorValue指定;
- JOINED:父子类相同的部分保存在同一个表中,不同的部分分开存放,通过表连接获取完整数据;
- TABLE_PER_CLASS:每一个类对应自己的表,一般不推荐采用这种方式。
- JPA(Java Persistence API)学习总结
- JPA-Java Persistence API
- JPA-Java Persistence API
- JPA 全称Java Persistence API
- JPA注解 Java Persistence API
- JPA (Java Persistence API)概述
- JPA (Java Persistence API)概述
- JPA Java Persistence API规范简介
- JPA(java persistence API)访问企业级信息
- JPA(java persistence API)详解
- 5 Hibernate:Java Persistence API (JPA) 入门
- JPA(Java Persistence API)Java持久化API-介绍
- JPA(Java Persistence API)Java持久化API-应用
- JPA(Java Persistence API,Java持久化API)
- JPA(Java Persistence API,Java持久化API)
- 关于java JPA (小结) Java Persistence API
- 在MyEclips中使用JPA(Java persistence API)
- Hibernate 中采用JPA (java persistence api)Annotation 札记
- 在用VS2008调试网站的时候,突然页面不能正常显示了,IE显示“无法显示该网页”。
- win7 MSsql2000 安装
- 多级指针和链表
- Flex4 简单视频聊天
- gcc 创建和使用so文件
- JPA(Java Persistence API)学习总结
- 冒泡排序,快速排序,堆排序比较(转自:http://linpder.blog.163.com/blog/static/487641020082124532971/)
- java解析XML为对象
- PCI总线驱动概要
- 问题小结
- [转载]深入分析 Linux 内核链表
- VS2005下error PRJ0003 : Error spawning 'cmd.exe'的解决方法
- xp中配置aps.net站点 出现的iis access fail问题解决方法
- java常见的运行时段出现的异常