
jpa学习笔记一:jpa介绍,jpa工程创建,jpa小demo
发布日期:2021-05-28 16:48:29
浏览次数:25
分类:精选文章
本文共 1724 字,大约阅读时间需要 5 分钟。
JPA学习笔记一:JPA介绍、JPA工程创建及小示例
1. 什么是JPA?
JPA(Java Persistence API,Java持久化API)定义了一套标准化的接口,类似于JDBC,为ORM框架提供规范化的编程模型。与JDBC统一数据库接口一样,JPA定义了ORM框自然化的统一接口。如 Hibernate、ToPlink等 ORM框架,都实现了JPA接口,供开发者选择。
2. JPA包含3大主要技术
- ORM映射元数据:JPA通过XML或注解描述实体与数据库表的映射关系,自动转换Java对象与数据库表。
- 操作API:提供CRUD操作的统一API,简化数据库交互,开发者无需直接编写 JDBC、SQL。
- 面向对象查询语言(JPQL):支持面向对象的数据库查询,类似 SQL但更便于对象化编程。
3. 使用JPA持久化对象的步骤
- 创建 persistence.xml文件,配置JPA的工作环境和数据库信息。
- 编写实体类(POJO),通过注解定义属性与数据库表的映射关系。
- 使用JPA API执行数据操作(如增加、删除、更新和查询)。
- 可选配置 Hibernate 作为 JPA 实现,完成持久化过程。
4. 搭建JPA框架
- 在 Eclipse 创建 JPA 项目,添加相应的 ORM 框架 jar 包和数据库驱动。
- 配置 persistence.xml,设置数据库连接信息及 Hibernate 的生成策略。
- 配置 JPA 的实现类(如选择 Hibernate 作为实现)。
5. 实体类映射数据库表
编写注解驱动的 Java 实体类,通过 @Table、@Entity、@Id、@GeneratedValue 等注解定义映射关系:
@Entitypublic class Customer { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @Column(name = "LAST_NAME") private String lastName; // 其他字段及业务逻辑方法}
确保 persistence.xml 中包含该实体类的Mapped匿名类定义,建立实体与 JPA 映射关系。
6. 测试与持久化操作
编写测试类,使用 EntityManager 进行持久化操作:
public class CustomerTest { public static void main(String[] args) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpa-1"); EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction tr = entityManager.getTransaction(); tr.begin(); Customer customer = new Customer(); customer.setAge(11); customer.setLastName("张三"); customer.setEmail("zkfgyzy@email.com"); entityManager.persist(customer); tr.commit(); // 关闭资源 entityManager.close(); entityManagerFactory.close(); }}
通过优化后的文本,内容更易于搜索引擎理解,适合技术场景,语言简洁明了,结构清晰。
发表评论
最新留言
很好
[***.229.124.182]2025年04月26日 05时34分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于 HTML5 WebGL 的污水处理厂泵站自控系统
2019-03-06
django-表单之模型表单渲染(六)
2019-03-06
c++之程序流程控制
2019-03-06
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
2019-03-06
有道云笔记 同步到我的博客园
2019-03-06
李笑来必读书籍整理
2019-03-06
Hadoop(十六)之使用Combiner优化MapReduce
2019-03-06
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2019-03-06
CoreCLR源码探索(八) JIT的工作原理(详解篇)
2019-03-06
andriod 开发错误记录
2019-03-07
C语言编译错误列表
2019-03-07
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
2019-03-07
python中列表 元组 字典 集合的区别
2019-03-07
Android DEX加固方案与原理
2019-03-07
iOS_Runtime3_动态添加方法
2019-03-07
Leetcode第557题---翻转字符串中的单词
2019-03-07
Problem G. The Stones Game【取石子博弈 & 思维】
2019-03-07
Java多线程
2019-03-07