- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从一个简单的 JPA 示例开始
本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示例;接着重构该示例,并引入 Spring 框架,这两部分不会涉及过多的篇幅,如果希望能够深入学习 Spring 和 JPA,可以根据本文最后提供的参考资料进一步学习。
自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择。它一改之前 EJB 2.x 中实体 Bean 笨重且难以使用的形象,充分吸收了在开源社区已经相对成熟的 ORM 思想。另外,它并不依赖于 EJB 容器,可以作为一个独立的持久层技术而存在。目前比较成熟的 JPA 框架主要包括 Jboss 的 Hibernate EntityManager、Oracle 捐献给 Eclipse 社区的 EclipseLink、Apache 的 OpenJPA 等。
本文的示例代码基于 Hibernate EntityManager 开发,但是读者几乎不用修改任何代码,便可以非常容易地切换到其他 JPA 框架,因为代码中使用到的都是 JPA 规范提供的接口 / 类,并没有使用到框架本身的私有特性。示例主要涉及七个文件,但是很清晰:业务层包含一个接口和一个实现;持久层包含一个接口、一个实现、一个实体类;另 外加上一个 JPA 配置文件和一个测试类。相关类 / 接口代码如下:
清单 1. 实体类 AccountInfo.java
@Entity
@Table(name = t_accountinfo)
public class AccountInfo implements Serializable {
private Long accountId;
private Integer balance;
// 此处省略 getter 和 setter 方法。
} 清单 2. 业务层接口 UserService.java
public interface UserService {
public AccountInfo createNewAccount(String user, String pwd, Integer init);
} 清单 3. 业务层的实现类 UserServiceImpl.java
public class UserServiceImpl implements UserService {
private UserDao userDao = new UserDaoImpl();
public AccountInfo createNewAccount(String user, String pwd, Integer init){
// 封装域对象
AccountInfo accountInfo = new AccountInfo();
UserInfo userInfo = new UserInfo();
userInfo.setUsername(username);
userInfo.setPassword(password);
accountInfo.setBalance(initBalance);
accountInfo.setUserInfo(userInfo);
// 调用持久层,完成数据的保存
return userDao.save(accountInfo);
}
} 清单 4. 持久层接口
public interface UserDao {
public AccountInfo save(AccountInfo accountInfo);
} 清单 5. 持久层的实现类
public class UserDaoImpl implements UserDao {
public AccountInfo save(AccountInfo accountInfo) {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory(SimplePU);
您可能关注的文档
- 佛山“三旧”项目拓展经验交流1735191060.ppt
- 佛山到成都专线物流.ppt
- 体系结构课件-16 插件架构.ppt
- 佛山到邯郸专线物流.ppt
- 体育测量与评价_03身体形态的测量与评价.ppt
- 余额宝+蚂蚁花呗.ppt
- 作业-数据结构上机题.ppt
- 作文 学会放弃.ppt
- 作文 流星和星星.ppt
- 佛山到宝鸡专线物流.ppt
- 2025年02月中共南宁市青秀区委网信办招录党建工作指导员1人(广西)笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2025年02月四川资阳市特种设备监督检验所公开招聘检验检测人员5人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2025届中车长春轨道客车股份有限公司校园招聘笔试参考题库附带答案详解.doc
- 2025年02月广西壮族自治区合浦儒艮国家级自然保护区管理中心公开招聘3人(截止至23日)笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2025年02月泸州仲裁委员会秘书处5名编外工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2025年02月宁夏固原市隆德县审计局聘请专业人员辅助审计工作3人(1号)笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2025中电建(云浮)新材料有限公司招聘1人年薪20万50万笔试参考题库附带答案详解.doc
- 2025年01月云南昆明市生态环境局所属事业单位引进高层次人才1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2025中铁快运股份有限公司招聘98人笔试参考题库附带答案详解.doc
- 2025年01月通辽市蒙辽水务有限责任公司公开招聘6人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
最近下载
- 2023年青海省海东地区循化县清水乡招聘社区工作者真题及参考答案详解.docx VIP
- 售电培训课件.pptx VIP
- 脊髓损伤康复临床路径.docx VIP
- 2023年青海省海东地区民和县杏儿乡招聘社区工作者真题参考答案详解.docx VIP
- 2023年青海省海东地区民和县西沟乡招聘社区工作者真题及参考答案详解1套.docx VIP
- 气道净化护理(2023年中华护理学会团体标准).pptx VIP
- 理正软件勘察说明书.doc VIP
- 部编版七年级上册语文《杞人忧天》导学案.pdf VIP
- 2023年青海省海东地区民和县北山乡招聘社区工作者真题及参考答案详解.docx VIP
- 各班护理工作职责.pptx VIP
文档评论(0)