jpa入门之环境搭建和CRUD基本操作
2015-11-25 14:57
399 查看
hibernate虽然好用但编写映射文件还是比较麻烦,虽然可以借助插件但是后期的维护还是比较麻烦,jpa的全称是Java Persistence API,实现该规范的产品很多像hibernate就是其中比较出名的一个,原则上应该尽量不要使用hibernate,可惜jpa只是一个接口规范,自 己按照规范写一套也不现实,只能通过hibernate间接的使用jpa.
1 使用hibernate的jpa实现需要的jar包如下
我用的是hibernate3.6的版本,如果是低版本的hibernate则还需要hibernate-commons-annotations.jar、hibernate-annotations.jar
2 persistence.xml的相关配置
jpa和hibernate类似需要一个类似hibernate.cfg.xml的配置文件,该文件指定要操作的相关数据库,内容如下
?
相信学过hibernate应该能看懂这个配置文件,需要注意的是persistence-unit节点的name属性,这个名称后面将会用到,另外这个 文件的名称只能是persistence.xml不能是别的名称且必须放在src下面的META-INF文件夹下面,如果不存在可以手动创建。
3 编写实体类
实体是jpa中比较重要的一部分,它承担着POJO和类似hibernate映射文件的功能,算得上是jpa的核心文件,下面这个是其中一个例子
?
下面是注解的功能描述
@Entity 这个注解表明这个java类是一个实体对象
@Table 该注解用来指定实体对应的表,默认情况下表名和实体类的名称相同
@Id 该注解用来指定主键
@GeneratedValue 该注解配置的是主键的生成策略
@Column 该注解用于指定数据库表对于的列名、唯一约束、非空约束等
@Temporal 主要用于日期属性上面,可以指定日期的类型
@Lob 指定映射到数据库的字段为大文本数据或者字节数组
@Enumerated 指定对于的属性为枚举
4 编写简单的JPA工具类
?
5 JPA的crud基本操作
?
最后来分析一下jpa的缺点:
1> 提供的主键生成策略较少
2>没有缓存机制
3> 实体类中注解和java代码混合在一起,可读性降低了
来自:http://blog.csdn.net/walkcode/article/details/39103277
1 使用hibernate的jpa实现需要的jar包如下
我用的是hibernate3.6的版本,如果是低版本的hibernate则还需要hibernate-commons-annotations.jar、hibernate-annotations.jar
2 persistence.xml的相关配置
jpa和hibernate类似需要一个类似hibernate.cfg.xml的配置文件,该文件指定要操作的相关数据库,内容如下
?
3 编写实体类
实体是jpa中比较重要的一部分,它承担着POJO和类似hibernate映射文件的功能,算得上是jpa的核心文件,下面这个是其中一个例子
?
@Entity 这个注解表明这个java类是一个实体对象
@Table 该注解用来指定实体对应的表,默认情况下表名和实体类的名称相同
@Id 该注解用来指定主键
@GeneratedValue 该注解配置的是主键的生成策略
@Column 该注解用于指定数据库表对于的列名、唯一约束、非空约束等
@Temporal 主要用于日期属性上面,可以指定日期的类型
@Lob 指定映射到数据库的字段为大文本数据或者字节数组
@Enumerated 指定对于的属性为枚举
4 编写简单的JPA工具类
?
?
1> 提供的主键生成策略较少
2>没有缓存机制
3> 实体类中注解和java代码混合在一起,可读性降低了
来自:http://blog.csdn.net/walkcode/article/details/39103277
相关文章推荐
- 蓝牙设备
- ListView在异步加载动态图片时,往往最后一项或几项被遮盖(IM场景居多)
- Win10手记-IIS部署网站问题解决
- 内部类
- JAVA GC新时代 老年代
- 11087 统计逆序对
- u-boot2011网络驱动模型
- 美团网技术团队分享的MySQL索引及慢查询优化教程
- 知名App第三方库汇总2014.10
- Hadoop Map/Reduce教程
- iOS开发进阶之静态链接库
- 概念:静态库/动态库/静态链接库/动态链接库
- 创建自己的通用静态库 --- 很详细
- JavaScript eval()函数
- android编译分析之10—config.mk
- 深入理解Hibernate的三种状态
- Android网络编程六:(2)Universal-Image-Loader之缓存策略
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
- swift继承
- 匿名内部类