2012-2-13至2012-2-15日
利用了三天的空闲时间研究了下JPA的相关知识
使用JPA的原因:
考虑到要做一个重新度高的模块代码,对于后台数据处理最好也能形成统一。我把目光看准了JPA。本来是相用JDO的,因为其能兼容关系型和非关系型的所有数据库,然而,数据库产家对于免费的东西兴趣欠缺,都在大力鼓吹收费的关系性数据库。终于把JPA给搞活了。
对于数据库的操作有多各框架,hibernate/toplink等。各种语法也不同,使用JPA,它是规范标准,可以在一定程序上统一数据库操作代码。这样,重要的可能性会更大。
对于JPA个人认为最主要的是搞清楚以下几点
1.JPA使用的环境
2.对实体bean的定义
3.对数据源工厂类的取值和数据操作管理器的取值
4.CURD的语法
简单解释下,这里不是长篇大论,只做精简的关键词
1.JPA使用的环境
最好的体验是使用在j2ee5以上的企业环境中
JPA只要有了具体实现包。则其可以用在J2EE/J2SE环境中。对于实体类的使用在两种环境都相同。但对于数据源工厂和数据管理器的使用,则有很微妙的不同
在j2se环境中,工厂类只能是通用Persistence.createEntityManagerFactory来取
在j2ee中可以使用容器注入PersistenceUnit也可以使用Persistence.createEntityManagerFactory来取
不过在使用PersistenceUnit注入时有个细节,很多人都注入失败而不知为何。
对于j2ee环境中要想使用注入就要知道容器注入是在什么时候进行的(这可是我花了不少时间才研究出来的)。我研究出来的结果是,注入是发生在j2ee环境中请求发生所到达的第一个servlet类中。换句话说,你在action类中接收请求,则你就可以在这个action类中使用容器自动注入,而你在这个action类的方法里new一个service类,那么在那个service类中是不会被注入的。
我们一般都习惯了SSH的这种MVC架构,一写的话就把action和dao层分开,然后就在action里调用servce,再是service调用doa层的,一般我们就在service层中的代码里进行了注释想让容器进行自动注入,结果,注入的为null.如果非要在service层中注入,一般也就使用spring来注入,不过这就不是j2ee容器管理的了
2.定义实体类
主要是对标注的的理解。知道了每个标注的含义与数据库表的相对关系就没大问题了。这里标注可以在属性字段上也可以在getXXX方法上。个人认为在属性上标注会好点。因为考虑到以后代码的重用。在下一次的项目中这个实体类不一定会要那么多的属性。你直接删除所有get/set方法代码和不必要的属性再利用IDE的自动生成set/get代码功能就能很快速的完成代码重用,而如果是在get方法体上,则浪费时间和精力去仔细删除代码了
3.对于数据源工厂EntityManagerFactory和EntityManager的取值
对于这两个类的取值已经提过了,可以用代码createEntityManagerFactory,也可以让j2ee容器自动注入,还可以利用第三方工具,如spring进行依赖注入.对于容器自动注入是最好的,但要了解,这种注入只能是在j2ee5以上的环境中,且要注意类的位置
4.CURD语法
这个看文件就行了。一般的语法够用了。而且其语法与HQL的语法极为相似,很简易上手。
重点差不多就是以上几点。今天就写这么多,明天继续加上JPA的细节
分享到:
相关推荐
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-jpa-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-data-jpa...
BootDo-JPA是在SpringBoot基础上搭建的一个Java基础开发平台,SpringDataJPA为数据访问层,ApacheShiro为权限授权层,Ehcahe对常用数据进行缓存。 BootDo-JPA主要定位于后台管理系统学习交流,已内置后台管理系统的...
### JAVA -- JPA注解详解 #### 1. @Entity 注解 - **定义**:`@Entity` 是 Java Persistence API (JPA) 中用于标识一个类作为持久化实体类的关键注解。它告诉 JPA 提供商(如 Hibernate)这个类将会映射到数据库表...
java运行依赖jar包
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
java运行依赖jar包
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
`hibernate-jpa-2.1-api-1.0.0.final.jar`是Hibernate对JPA 2.1规范的实现库,它使得开发者能够使用Hibernate的高效功能同时遵循JPA规范。 **1. Hibernate与JPA的关系** Hibernate最初作为一个独立的ORM框架,后来...
**JPA(Java Persistence API)学习——JPA Demo工程** JPA是Java平台上的一个标准,用于处理对象关系映射(ORM),它提供了一种在Java应用中管理和持久化对象的方式,简化了数据库操作。本篇文章将围绕JPA的基础...
赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-jpa-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-data-jpa...
hibernate-jpa-2.0-api-1.0.1.Final.jar
spring-data-jpa
java运行依赖jar包
Java Persistence API (JPA) 是Java企业级应用中用于对象关系映射(ORM)的标准框架。ORM的主要目标是解决在关系数据库与面向对象编程之间的不匹配问题,使得开发者可以更自然地使用对象而不是直接操作表格数据。JPA...
java运行依赖jar包
java运行依赖jar包
SpringBoot与Spring Data JPA是Java开发中常用的两个框架,它们极大地简化了Web应用和数据库交互的复杂性。...通过这个练习,开发者可以系统地掌握Spring Boot和Spring Data JPA的结合使用,提升对Java Web开发的理解。