ssh(sturts2_spring_hibernate) 框架搭建之JPA代替hibernate
一、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的更多相关文章
- ssh(sturts2_spring_hibernate) 框架搭建之hibernate2
一.今天要进行解答的是对上次hibernate1进行进一步的完善,这次第一是进一步使用spring注入一个SessionFactory实例,避免了自己new实例:第二是应用数据库池(c3p0). 二. ...
- ssh(sturts2_spring_hibernate) 框架搭建之hibernate1
一.hibernate简单了解: ⑴.hibernate一个java领域里面的一个持久化的ORM框架. 持久化:就是对对象的数据修改,hibernate会把修改的数据同步到数据库中. ORM:Obje ...
- ssh(sturts2_spring_hibernate) 框架搭建之struts2
一.struts2完整流程的逻辑(整体的概述) 首先,用户在地址栏中输入你的项目访问路径,然后这个请求会发送到服务器,之后服务器发现在web.xml中配置了一个filter过滤器,并且这个过滤器需要对 ...
- ssh(sturts2_spring_hibernate) 框架搭建之spring
一.spring总结: ⑴.spring是一个轻量级的JAVA开发框架,主要的作用是用来管理实例(可以解决JAVA类中new对象的问题,节省内存资源.)和降低代码之间的耦合性,促进代码模块化. ⑵.促 ...
- SSH框架搭建步骤总结以及Hibernate二级缓存,查询缓存
二级缓存.查询缓存 一级缓存: 默认启动,生命周期是和session同步的,session独享 二级缓存: 需要加载配置信息,生命周期是和应用服务器同步,session共享 1:在hibernate. ...
- 新手SSH基础框架搭建
SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 首先我们先了解SSH的框架所需的包和基本概念: 一.下面我们先来了解一下strut ...
- SSH基本框架搭建后的简化
对于SSh框架的简化,我们可以从下面几个方面来剖析: 1.实体类entity:在这里我们需要将数据库和实体类进行关联,在简化之前,我们需要在entity包里面加入一份.xml配置文件 例如原码---- ...
- JAVAEE——SSH三大框架整合(spring+struts2+hibernate)
一.整合原理 二.导包(41个) 1.hibernate (1)hibernate/lib/required (2)hibernate/lib/jpa | java persist api java的 ...
- SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>
此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...
随机推荐
- td标签内的内容过长导致的问题的解决办法
问题描述:在开发过程中,td标签中的有一个cell格中的内容过长,导致td标签高度增加,从而导致整个页面内容的不协调:
- 关于div弹出层的实际应用心得
今天本人要做一个点击弹出的功能,因为这个功能是最后做的,所以写的时候很纠结, 因为本人小菜一枚, 开始尝试用 position:relative:来做一试不行呀 ,因为用这个来做的话 会打乱原有的布局 ...
- 记录HttpWebRequest辅助类
最近因为工作关系,需要通过HttpWebRequest去请求API,所有就写了个简单的辅助public sealed class HttpRequestHelper { private static ...
- Linux下Crontab命令用法
第1列分钟1-59第2列小时1-23(0表示子夜)第3列日1-31第4列月1-12第5列星期0-6(0表示星期天)第6列要运行的命令 下面是crontab的格式:分 时 日 月 星期 要运行的命令 这 ...
- 如何在ASP.NET 5上搭建基于TypeScript的Angular2项目
一.前言 就在上月,公司的一个同事建议当前的前端全面改用AngularJs进行开发,而我们采用的就是ASP.NET 5项目,原本我的计划是采用TypeScript直接进行Angular2开发.所以借用 ...
- MySQL7:视图
什么是视图 数据库中的视图是一个虚拟表.视图是从一个或者多个表中导出的表,视图的行为与表非常相似,在视图中用户可以使用SELECT语句查询数据,以及使用INSERT.UPDATE和DELETE修改记录 ...
- 记一次Url重写_发布之后iis 404
把api封装完,客户要求app的url能不能不变(客户之前用的php的api开发app,已经开发了很多了,所以希望不改动url).但是这个规则要求是:xx/api.php?s=/{controller ...
- TW2015技术雷达中文版发布
今天thoughtworks 2015新版技术雷达pdf发布了,你可以从这里下载http://engage.thoughtworks.com/HQ0000Q0QOf5pE70nbD00GP,在这里你可 ...
- Javascript事件模型系列(四)我所理解的javascript自定义事件
被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...
- [转]quick-cocos2d-x 多分辨率适配详解
http://cn.quick-x.com/?p=1436 多种分辨率的适配一直都是一个蛋疼的问题,各家公司可能都有自己的一套方案.今天我为大家介绍的是我们在多款游戏里实践后的解决方案,相对来说成本和 ...