JPA学习笔记---JPA理解---第一个JPA程序
发布日期:2021-06-29 18:04:26
浏览次数:2
分类:技术文章
本文共 3675 字,大约阅读时间需要 12 分钟。
1. a.JPA和Hibernate是sun提出的java持久化的规范.JPA是Hibernate,和TopLink,JDO等ORM框架 基础上发展而来的. b.和jdbc类似,比如刚刚没有jdbc的时候链接数据库要用各个数据库厂商提供的api,有了jdbc 以后,就把各种数据库的差异封装在了jdbc中,这样就可以直接使用jdbc了,jpa就是这样的一 种技术,可以用jpa封装各种orm的差异.比例会缩小. -------------------------------- 2.jpc是一个规范,还不是一个产品,比如hibernate已经是一个产品了. 3. a.jpa包含3个部分: 1.orm映射元数据.元数据是描述对象和表之间关系的数据 2.java持久化api,用来操作crud,操作实体对象. 3.查询语言,不.现有的orm技术. ------------------------------------------ 4.jpa的实现产品之一是hibernate; 用到的jar文件; a.hibernate-annotations-3.4.0.zip用到的hibernate所支持的注解:因为hibernate提供 了两种方案一种是使用xml实现,一种是使用注解,这个包就是注解的支持包.其中包括 hibernate-annotations.jar b.hibernate-distribution-3.3.1.zip是hibernate的核心包 c.hibernate-entitymanager-3.4.0,是针对jpa的一个实现器e对其核心包的一个包装. ---------------------------------- hibernate对jpa做了一个实现,这个实现是基于核心包基础上的.所做的封装包就 在.hibernate-entitymanager-3.4.0中. ------------------------------------------------ jpa中要注意: jpa程序实例: 1.导入包的时候,路径不可以有中文或者是空格 2.persistence.xml报错Element type "persistence" must be followed by either attribute specifications, ">" or "/>". 一般都是多了个空格,或者是从其他的地方,拷贝过来的时候的,出现的编码问题,去掉多余 的部分(空格等)问题解决 ----------------------------------------------------------------- jpa: 1.persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <!-- persistence-unit name="EjbXmlMappingsPU" // 持久化单元名 transaction-type="JTA(default)/RESOURCE_LOCAL" // 事务类型 --> <persistence-unit name="EjbXmlMappingsPU" transaction-type="JTA"> <description></description> <!-- 描述 --> <provider>oracle.toplink.essentials.PersistenceProvider</provider> <!-- 指定一个 持久化提供者 --> <jta-data-source>jdbc/MyDataSource</jta-data-source> <!-- 指定JTA数据源 --> <non-jta-data-source>jdbc/NonTxMyDataSource</non-jta-data-source> <!-- 指定非JTA 数据源 --> <mapping-file>META-INF/my_queries.xml</mapping-file> <!-- 指定映射文件 --> <mapping-file>META-INF/my_entities.xml</mapping-file> <jar-file>my/my-classes.jar</jar-file> <!-- 指定托管类的附加JAR --> <class>myclass1</class> <!-- 明确列出的类 --> <class>myclass2</class> <exclude-unlisted-classes/> <!-- 使本地类不能被加到持久化单元中 --> <properties> <!-- 使用提供者属性 --> <property name="toplink.logging.level" value="FINE"/> <property name="toplink.cache.size.dafault" value="500"/> </properties> </persistence-unit> </persistence> ------------------------------------------------------- ActionFormBean: DTO(Data Transfer Object)数据传输对象,它封装了HTML表单数据 ▼好处: 1.减少传输冗余的数据,提高传输效率(请求包含的) 2.有助于实现各个层之间的独立 ▼分类: 1.静态ActionFormBean 2.动态ActionFormBean ▼区别 1.静态的手工编写ActionFormBean,表单数据作为类的属性 动态的在struts-config.xml中配置,表单数据以键值对形式存放在 DynaActionForm的Map集合 2.一旦表单数据列表发生变化,动态的须修改action源代码,不能实现对 修改关闭 3.动态的无法实现数据验证 ●静态ActionFormBean 1.创建ActionFormBean 自定义ActionFormBean,类名习惯FormBean结尾,extends ActionForm 属性名必须与form表单字段name属性值一致,且数量一致.生成get,set方法.可选择性 覆盖validate方法 ▼validate方法: 只验证表单数据的格式和语法,不负责检查数据是否符合业务逻辑 action中validate属性值为true时,才执行 validate方法 验证正确把ActionFormBean对象保存在scope指定 作用域交给Action处理 验证错误则转向input属性指定组件 --------------------------------------------------------------------------------- -- jsp中取得formbean中的参数: 4.EL表达式来在jsp页面读取formbean中的数据 有action配置 <action name="LayoutForm" attribute="att" path="/Layout" scope="request" type="Layout.LayoutAction"> <forward name="Layout" path="/Layout.jsp" /> </action> jsp页面获取方式:${att.username}或者${LayoutForm.username} ------------------------------------------------------------- 编写jpa程序:两种方法: 1.先建立表,后再根据表来编写配置文件和实体bean,使用这种方案的开发人员受到了传 统数据库建模的影响; 2.先编写配置文件和实体bean,然后再生成表;使用这种方案的开发人员采用的是领域建 模的思想,这一种思想 相对前一种思想更加的OOP,面向对象; -----------------------------------------------------------------------转载地址:https://credream.blog.csdn.net/article/details/8566661 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月10日 06时51分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
电赛 | 19年全国一等奖,北航学子回忆录。
2021-07-02
电赛 | 19年全国一等奖,北航学子回忆录(上)
2021-07-02
电赛 | 19年全国一等奖,北航学子回忆录(下)
2021-07-02
突破!台积电1nm芯片,有了新进展。
2021-07-02
一文读懂全系列树莓派!
2021-07-02
自制一个害羞的口罩,见人就闭嘴,戴着可以喝奶茶
2021-07-02
聊聊我是如何编程入门的
2021-07-02
J-Link该如何升级固件?
2021-07-02
485通信自动收发电路,历史上最详细的解释
2021-07-02
一位头发发白的神人教你怎么写程序,运维,买电脑,写文章,平面设计!
2021-07-02
「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
2021-07-02
5G小科普(漫画版,So easy!)
2021-07-02
「第四篇」电赛控制题可以准备一些什么?
2021-07-02
树莓派翻车了
2021-07-02
这位电子工程师,你不能错过。
2021-07-02
干货分享 JVM 之第 3 篇 —— Java 内存结构相关
2021-07-02
基于 Hystrix 高并发服务限流第 2 篇 —— 服务隔离(线程池隔离、信号量隔离)
2021-07-02
el-table 二维数组合并行
2021-07-02
UR5e机械臂运行一直阻塞在waitForServer
2021-07-02