一、JPA用来替代hibernate

   ⒈JPA的全称是JAVA Persistence API。指的是JPA通过注解或者是XML描述对象—关系表的映射关系,并且将运行的实体对象持久化数据库中。

   ⒉JPA是一种规范,hibernate是一种实现。同样的mybatis也是jpa中的一种实现。

 

二、构建步骤:

   ⒈创建persistence.xml文件:

     ⑴、首先在你的项目中的src目录下新建一个MATA-INF文件夹,文件夹的名字不可以是任意,必须是MATA-INF:

     ⑵、新建一个xml文件,命名为persistence.xml:

     ⑶、接下来,在persistence.xml文件中进行相关的配置,如下:

<?xml version="1.0" encoding="UTF-8"?>

 <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1"> <!--persistence单元,name属性不可少。 -->
<persistence-unit name="myJpa" transaction-type="RESOURCE_LOCAL">
<!--可选属性:设置persistence的提供者 -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!--可选属性:实体类 -->
<class>entity.BookCard</class> <!-- 数据库厂商的属性 -->
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"/>
<property name="hibernate.connection.driver_class" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value="123456"/>
<property name="hibernate.connection.url" value="jdbc:sqlserver://localhost:1433;DatabaseName = webLastExam_20160727"/>
<property name="hibernate.show_sql" value="true"></property>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties> </persistence-unit>
</persistence>

       ·name:持久化单元的名字,这个属性必须要有,用来后面的EntityManagerFactory生成实例的名字。 

        ·transaction-type:使用的实物类型,默认是RESOURCE_LOCAL事务,还有一个是JTA事务。

        ·provide:EJB Persistence provide 的一个实现类,可以分为不同的ORM,例如MyBatis和Hibernate。

       ·properties:配置数据库厂商的属性,比如SQL-server和mysql、Oracle等。

       ·class:指明要映射的类,如果不写就不能在程序运行的时候自动创建数据库中的表。

    ⒉在实体类中添加注解:

        ⑴、在映射的实体类上添加注解:

           

          @Entity :标识这个类是一个JPA实体 

              @Table(name="BookCard") :根据这个实体类在数据库中指定生成的表名

       ⑵、设置主键:

           

            @Id :设置数据库的表的主键为Id。

            @GeneratedValue : 默认实行自定自定义的主键生成策略。

            @GenericGeneratorHibernate :在JPA的基础上进行扩展,hibernate独自有的主键生成策略。 

   

         

           ⑶、具体获取数据类中的定义:(其中红色的为重要的代码)

      

package dao;
import java.util.List; import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query; import entity.BookCard; //定义数据库操作接口的实现类,实现接口中方法。
public class MyDaoImp implements MyDao { //实现接口中的获取所有的数据的方法
public List<BookCard> getAllBookCard() {
EntityManagerFactory emf =Persistence.createEntityManagerFactory("myJpa");
EntityManager em = emf.createEntityManager(); em.getTransaction().begin();
//查询数据
List<BookCard> list = em.createQuery("from BookCard", BookCard.class).getResultList(); em.getTransaction().commit();
em.close();
emf.close();
return list; } }

       由上面我们可以发现,在JPA中的EntityManagerFactory类似于Hibernate中的SessionFactory;EntityManager类似于Session,EntityManager是实体类管理器,是由EntityManagerFactory创建,每一个EntityManagerFactory称为一个持久化单元,每个持久化单元可以认为是一个数据源的映射(数据源可以理解为一个数据库,我们可以在应用服务器中配置不同的数据源,即使用不同的persistenceUtil来映射这些数据源,从而可以实现不同的数据库之间的操作。)       


      谢谢浏览!

    

 

    

ssh(sturts2_spring_hibernate) 框架搭建之JPA代替hibernate的更多相关文章

  1. ssh(sturts2_spring_hibernate) 框架搭建之hibernate2

    一.今天要进行解答的是对上次hibernate1进行进一步的完善,这次第一是进一步使用spring注入一个SessionFactory实例,避免了自己new实例:第二是应用数据库池(c3p0). 二. ...

  2. ssh(sturts2_spring_hibernate) 框架搭建之hibernate1

    一.hibernate简单了解: ⑴.hibernate一个java领域里面的一个持久化的ORM框架. 持久化:就是对对象的数据修改,hibernate会把修改的数据同步到数据库中. ORM:Obje ...

  3. ssh(sturts2_spring_hibernate) 框架搭建之struts2

    一.struts2完整流程的逻辑(整体的概述) 首先,用户在地址栏中输入你的项目访问路径,然后这个请求会发送到服务器,之后服务器发现在web.xml中配置了一个filter过滤器,并且这个过滤器需要对 ...

  4. ssh(sturts2_spring_hibernate) 框架搭建之spring

    一.spring总结: ⑴.spring是一个轻量级的JAVA开发框架,主要的作用是用来管理实例(可以解决JAVA类中new对象的问题,节省内存资源.)和降低代码之间的耦合性,促进代码模块化. ⑵.促 ...

  5. SSH框架搭建步骤总结以及Hibernate二级缓存,查询缓存

    二级缓存.查询缓存 一级缓存: 默认启动,生命周期是和session同步的,session独享 二级缓存: 需要加载配置信息,生命周期是和应用服务器同步,session共享 1:在hibernate. ...

  6. 新手SSH基础框架搭建

    SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 首先我们先了解SSH的框架所需的包和基本概念: 一.下面我们先来了解一下strut ...

  7. SSH基本框架搭建后的简化

    对于SSh框架的简化,我们可以从下面几个方面来剖析: 1.实体类entity:在这里我们需要将数据库和实体类进行关联,在简化之前,我们需要在entity包里面加入一份.xml配置文件 例如原码---- ...

  8. JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    一.整合原理 二.导包(41个) 1.hibernate (1)hibernate/lib/required (2)hibernate/lib/jpa | java persist api java的 ...

  9. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

随机推荐

  1. socket 通信

    type TWinSocketStringStream = class(TWinSocketStream) public function ReadString(nMaxLength: Integer ...

  2. IE11浏览器:请不要再叫我IE,谢谢

    这篇对自已挺有用的,特mark一下,纯转载. 转载自:nczonline 微软在上周刚刚发布了用于Windows 8.1上 的首个Internet Explorer 11的预览版.我们已经确认Inte ...

  3. KIWI Syslog配置

    日志服务器Kiwi+Syslogd+8.3.7破解版 Window收集服务器日志evtsys_exe_32 默认地,kiwi使用UDP 514端口接收日志数据,安装成功后即可接收日志 使用命令nets ...

  4. 获取google翻译的音频文件_合并音频文件的方法

    1. 把引文输入google 翻译,然后点击"朗读"

  5. .Net Core下如何管理配置文件

    一.前言 根据该issues来看,System.Configuration在.net core中已经不存在了,那么取而代之的是由Microsoft.Extensions.Cnfiguration.XX ...

  6. jquery选择器如何获取父级元素、同级元素、子元素

    一.新建页面 <ul> <li>list item 1</li> <li>list item 2</li> <li class=&qu ...

  7. Storm-源码分析- Storm中Zookeeper的使用

    在backtype.storm.cluster.clj中, 定义了storm对于Zookeeper的使用   ClusterState 首先定义操作Zookeeper集群的interface (def ...

  8. 即时通信系统中如何实现:聊天消息加密,让通信更安全? 【低调赠送:QQ高仿版GG 4.5 最新源码】

    加密重要的通信消息,是一个常见的需求.在一些政府部门的即时通信软件中(如税务系统),对聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新的GG 4.5中,增加了对聊天消息 ...

  9. 【腾讯Bugly干货分享】TRIM:提升磁盘性能,缓解Android卡顿

    Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处.在业内,Android 手机一直有着 ...

  10. AMD加载器实现笔记(二)

    AMD加载器实现笔记(一)中,我们实现了一个简易的模块加载器.但到目前为止这个加载器还并不能称为AMD加载器,原因很简单,我们还不支持AMD规范中的config配置.这篇文章中我们来添加对config ...