jpa学习一
来源:互联网 发布:桌面文件恢复软件 编辑:程序博客网 时间:2024/06/15 22:45
JPA概要
1、jpa概述
JPA(Java Persistence API)作为JavaEE5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。sun公司在充
分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。从目 前的开发社区的反应上看,JPA
受到了极大的支持和赞扬,JPA作为ORM领域标准化整合者的目标应该不难实现。JPA通过JDK 5.0注解或XML描述对
象-关系表的映射关系,并将运行期的实体对象持久化到数据库中,图1很好地描述了JPA的结构:
2 实体生命周期
实体生命周期是JPA中非常重要的概念,描述了实体对象从创建到受控、从删除到游离的状态变换。对实体的操作主
要就是改变实体的状态。
JPA中实体的生命周期如下图:
1 New,新创建的实体对象,没有主键(identity)值,也称初始状态
2 Managed,有id值,对象处于持久化上下文(Persistence Context)中,被EntityManager管理
3 Detached,游离状态,有id值,当对象已经游离到Persistence Context之外,进入Application Domain
4 Removed, 实体对象被删除,有id值,和Persistence Context有关联,但已经准备好从数据库中删除。
EntityManager提供一系列的方法管理实体对象的生命周期,包括:
5 persist, 将新创建的或已删除的实体转变为Managed(持久化)状态,数据存入数据库。
6 remove,将受控的实体移除掉。
7 merge,将游离实体转变为Managed状态,数据存入数据库。
8 refresh,自动刷新。
3、实体关系映射
基本关系映射
实体
数据库
jpa注解
可变设置
Class(User)
Table(USER)
@Entity
name="t_user"
id
id(primary key)
@Id
@GeneratedValue详见以下
username(String)
username(varchar)
@Column
name = "username", length = 100
time
time
@Temporal()
TemporalType.DATE .....
@Entity:将域模型标注为一个实体,表示需要保存到数据库中,默认情况下类名即为表名,通过name属性显式指定
表名,如@Entity(name="USER")表示User保存到t_user表中。
@Id :对应的属性是表的主键,
@GeneratedValue:主键的产生策略,通过strategy属性指定。默认情况下,JPA自动选择一个最适合底层数据库的
主键生成策略,如SqlServer对应identity,MySql对应auto increment。在
javax.persistence.GenerationType中定义了以下几种可供选 择的策略:
(1)IDENTITY:表自增键字段,Oracle不支持这种方式;
(2) AUTO:JPA自动选择合适的策略,是默认选项;
(3)SEQUENCE:通过序列产生主键,通过@SequenceGenerator注解指定序列名, MySql不
支持这种方式;
(4) 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种时间类型:
1) DATE :等于java.sql.Date
2) TIME :等于java.sql.Time
3) TIMESTAMP :等于java.sql.Timestamp
今天就先写到这里,更多学习资料
- jpa学习一
- JPA学习(一)
- JPA学习(一)
- JPA 学习篇(一)JPA简介
- JPA学习与应用<一>
- JPA学习笔记(一)
- Spring Data JPA学习一
- JPA学习笔记【一】【概念】
- JPA学习笔记(一)
- JPA学习笔记(一):JPA环境搭建及介绍
- JPA学习记录一(JPA简要介绍)
- jpa学习和jpa与spring整合(一)
- Hibernate JPA学习(一):准备知识
- spring-data-jpa 学习笔记一(转)
- JPA学习之旅(一)
- Spring Data JPA 学习笔记(一)
- Spring Data Jpa开发学习笔记(一)
- JPA学习
- 解读ffmpeg例程decoding_encoding.c
- error: ‘ff_data_to_hex’ was not declared in this scope
- FastDFS安装与使用
- Unity3D Web Player 的server端联网配置
- 《编程珠玑 》第二章 问题A 总结
- jpa学习一
- Unity3D 资料
- ssdeep命令行参数说明
- Mission任务类设计
- Documentation/filesystems/ecryptfs
- 将D盘java目录下所有的java文件copy到D盘txt目录下,并更改扩展名为txt
- 使用PDFBox处理PDF文档
- excle导出
- ORA-03135: connection lost contact的解决方法(未解决本人问题)