- 浏览: 458878 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
简单总结下,JPA的入门。在学习JPA的时候运用参考Hibernate的知识来进行学习。
开发环境及其配置:
Eclipse3.5
依赖包:
antlr-2.7.6.jar
c3p0-0.9.1.jar
cglib-2.2.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-entirymanager.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
infinispan-core-4.0.0.FINAL.jar
javassist-3.9.0.GA.jar
jbosscache-core-3.2.1.GA.jar
jta-1.1.jar
oscache-2.1.jar
proxool-0.8.3.jar
slf4j-api-1.5.8.jar
slf4j-nop-1.5.2.jar(注意这个包,一定要)
swarmcache-1.0RC2.jar
数据库驱动包:
mysql-connector-java-5.1.6-bin.jar
在src目录下建立META-INF,并且在该目录下建立一个persistence.xml文件
以上基本上就配置好开发环境了。
下面看看persistence.xml的文件
如果之前学过Hibernate的话,Properties里面的内容应该很清楚的,如果不清楚看了以上内容应该也很清楚。
这个 <persistence-unit name="test" transaction-type="RESOURCE_LOCAL" >就是体现JPA的东西了。什么意思呢?name这个先不说,待会看程序中的引用在来介绍。
transaction-type是事物类型。事物类型包括全局类型和本地类型。在不牵涉多个不同数据库的时候,一般使用本地事物。
下面给出一个Domain类
在实体类中@xx表示的是标签。
下面 看看test类
以上基本上能够构建一个JPA开发环境并且基本的操作能够了解。至于配置一对多,多对一,多对多等将在后续给出学习比较和实现。
开发环境及其配置:
引用
Eclipse3.5
依赖包:
antlr-2.7.6.jar
c3p0-0.9.1.jar
cglib-2.2.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-entirymanager.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
infinispan-core-4.0.0.FINAL.jar
javassist-3.9.0.GA.jar
jbosscache-core-3.2.1.GA.jar
jta-1.1.jar
oscache-2.1.jar
proxool-0.8.3.jar
slf4j-api-1.5.8.jar
slf4j-nop-1.5.2.jar(注意这个包,一定要)
swarmcache-1.0RC2.jar
数据库驱动包:
mysql-connector-java-5.1.6-bin.jar
在src目录下建立META-INF,并且在该目录下建立一个persistence.xml文件
以上基本上就配置好开发环境了。
下面看看persistence.xml的文件
<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="test" transaction-type="RESOURCE_LOCAL" > <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> <property name="hibernate.connection.url" value="jdbc:mysql://localhost/hibernate"/> <property name="hibernate.connection.user" value="root"/> <property name="hibernate.connection.password" value="123456"/> </properties> </persistence-unit> </persistence>
如果之前学过Hibernate的话,Properties里面的内容应该很清楚的,如果不清楚看了以上内容应该也很清楚。
这个 <persistence-unit name="test" transaction-type="RESOURCE_LOCAL" >就是体现JPA的东西了。什么意思呢?name这个先不说,待会看程序中的引用在来介绍。
transaction-type是事物类型。事物类型包括全局类型和本地类型。在不牵涉多个不同数据库的时候,一般使用本地事物。
下面给出一个Domain类
mport java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; @Entity //申明是一个实体,也就是实体 @Table(name="test_Person") //申明实体对应数据表的名字 public class Person { private Integer id; private String name; private Date birthday; private Gender gender = Gender.MAN; //设置默认值 private String info;//大文本 private Byte[] file; //字节数据 private String imagepath; //该字段不持久化 public Person(){} public Person(String name){ this.name = name; } @Id @GeneratedValue(strategy=GenerationType.AUTO) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Temporal(TemporalType.DATE) public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Column(length=10,nullable=false) public String getName() { return name; } public void setName(String name) { this.name = name; } @Transient //不在数据表中生成一个imagepath字段 public String getImagepath() { return imagepath; } public void setImagepath(String imagepath) { this.imagepath = imagepath; } @Lob @Basic(fetch=FetchType.LAZY)//进行懒加载 public Byte[] getFile() { return file; } public void setFile(Byte[] file) { this.file = file; } @Lob public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }
在实体类中@xx表示的是标签。
下面 看看test类
import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.persistence.Query; import org.junit.BeforeClass; import org.junit.Test; import cn.itcast.domain.Person; public class PersonTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void save(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");//这里就是获取<persistence-unit name="test" >的name值 //-->sessionFactory ---> session --> begin事务 EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 em.persist(new Person("dave")); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void getPerson(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");//这里就是获取<persistence-unit name="test" >的name值 EntityManager em = factory.createEntityManager(); Person person = em.find(Person.class,1); System.out.println(person.getName()); em.close(); factory.close(); } @Test public void getPerson2(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");");//这里就是获取<persistence-unit name="test" >的name值 EntityManager em = factory.createEntityManager(); Person person = em.getReference(Person.class,1); //延迟加载 System.out.println(person.getName()); em.close(); factory.close(); } //新建状态 //托管状态 //游离状态 //删除状态 @Test public void UpdatePerson(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Person person = em.find(Person.class,1); person.setName("江都西"); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void UpdatePerson2(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Person person = em.find(Person.class,1); em.clear();//把实体管理器中的所有实体变为游离状态 person.setName("蒋笃淅"); em.merge(person); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void Delete(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Person person = em.find(Person.class,1); em.remove(person); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void query(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); Query query = em.createQuery("select o from Person o where o.id=?1"); query.setParameter(1, 2); List<Person> person = query.getResultList(); for(Person p:person){ System.out.println(p.getName()); } em.close(); factory.close(); } @Test public void deletequery(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Query query = em.createQuery("Delete from Person o where o.id=?1"); query.setParameter(1, 3); query.executeUpdate(); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void queryUpdate(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Query query = em.createQuery("Update Person o set o.name=:name where o.id=:id"); query.setParameter("name", "蒋笃淅"); query.setParameter("id", 3); query.executeUpdate(); em.getTransaction().commit(); em.close(); factory.close(); } }
以上基本上能够构建一个JPA开发环境并且基本的操作能够了解。至于配置一对多,多对一,多对多等将在后续给出学习比较和实现。
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2094最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 998在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 889最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 93891.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 864FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 760核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 1031HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 778基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1246基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 1063在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2193在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2218JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2241在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 35131.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1429java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4516在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3952在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA之OneToMany和ManyToOne处理
2010-04-18 13:52 18932前面介绍和总结了JPA ... -
JPA2.0的学习一
2010-04-15 17:18 8642Java EE 5平台引入了Java ... -
读取Properties文件的一些方法
2010-03-13 22:53 1169读取Properties文件常见的 ...
相关推荐
**JPA入门(二)** Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的数据。它是Java EE和Java SE环境中的一种ORM(对象关系映射)解决方案,使得开发人员可以使用面向对象的编程模型来...
这篇博客《JPA从入门到精通》的作者Kingpingping在iteye.com上分享了他的学习心得和经验,虽然具体的博客内容无法在这里详述,但我们可以根据JPA的基本概念和常见知识点进行深入探讨。 1. **JPA核心概念** - **...
在"spring boot入门篇demo+ppt"中,我们可以期待学习以下核心知识点: 1. **Spring Boot基础知识**:了解Spring Boot的基本概念,包括其设计目标、主要特性以及与其他Spring框架的关系。 2. **起步依赖(Starter)...
在入门篇的学习中,我们会涉及以下几个核心知识点: 1. **自动配置**:SpringBoot的核心特性之一就是自动配置,它根据项目依赖来自动设置Bean。例如,如果你引入了数据访问相关的库,SpringBoot会自动配置数据源和...
本书可作为《轻量级java ee企业应用实战》的姊妹篇,介绍了Java EE规范的三大主要规范JSF(JavaServer Faces)、EJB 3(Enterprise JavaBeans 3)和JPA(Java Persistence API),并以ejb 3+jpa为基础来构建Java EE...
Spring Data JPA 晋级提升篇:复杂场景实战用法与优化 Session与CompletableFuture的使用遇到的一些坑 SpringDataJpa之Hibernate5.0的Entity判断Dirty的过程 SpringDataJPA之Hibernate加载过程 高级用法学习资料: ...
框架入门学习手册》 Play!框架是一款全栈式的Java Web应用框架,它提供了MVC架构、对象持久化、Groovy模板引擎等一整套构建现代Web应用的工具。作为一款纯Java框架,Play!允许开发者在不改变原有开发工具和类库的...
在【入门阶段】,你将学习到: 1. Hibernate概述:了解ORM的概念,以及Hibernate如何解决传统JDBC编程中的问题。 2. 安装与配置:设置开发环境,包括下载Hibernate库,配置Hibernate的配置文件(hibernate.cfg.xml)...
这个压缩包中的449篇文章,将为学习者提供一个全面而系统的Java学习路径,从入门到精通,逐步提升编程技能。每个主题都可能包含实例代码、解析和实践建议,帮助读者理论结合实践,真正掌握Java编程。对于那些希望在...
根据提供的文档信息,我们可以深入探讨该附赠电子资料中涵盖的主要知识点和技术框架,特别是针对Struts2、JSF、Hibernate、iBATIS以及JPA等内容。 ### 1. Java Web开发基础 #### 1.1 JSP (Java Server Pages) JSP...
入门篇(Basics) SpringBoot(一)_快速实战搭建项目 SpringBoot(二)_项目属性配置 SpringBoot(三)_controller的使用 SpringBoot(四)_SpringDataJPA的使用 SpringBoot(五)_表单验证 SpringBoot(六)_AOP统一处理请求 ...
通过大量的实战编码进行讲解,课程以...第二章:springboot核心功能第三章:热部署的几种模式第四章:Web开发的各种技术第五章:数据访问层:spring data jpa、jdbctemplate、mybatis、redis第六章:异常相关的处理
这篇博文链接(由于实际链接不可用,此处不再提供具体内容)可能涵盖了CXF的基本概念、环境配置、快速入门示例等内容。 【标签】:“源码”意味着该压缩包可能包含CXF的部分源代码,供学习者查看和理解其内部工作...
第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的 使用、如何自定义标签、资源国际化...
第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的 使用、如何自定义标签、资源国际化...
第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的 使用、如何自定义标签、资源国际化...
二、进阶篇 1. **Spring Boot Web 开发**:学习如何使用 Spring Boot 构建 RESTful API,理解 Controller、Model、View 模式。 2. **Thymeleaf 或者 Freemarker**:学习一种模板引擎,用于生成动态 HTML 页面。 3. *...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...