你好,游客 登录 注册 搜索
背景:
阅读新闻

SSH(Sturts2+Spring+Hibernate) 框架搭建之JPA代替Hibernate

[日期:2016-11-16] 来源:Linux社区  作者:demoMeng [字体: ]

一、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来映射这些数据源,从而可以实现不同的数据库之间的操作。)       

Hibernate3.1.2_中文文档PDF  http://www.linuxidc.com/Linux/2016-02/128462.htm

Hibernate学习入门教程  http://www.linuxidc.com/Linux/2015-08/121498.htm

在Hibernate中开启日志 http://www.linuxidc.com/Linux/2015-07/120499.htm

Hibernate+JUnit测试实体类生成数据库表  http://www.linuxidc.com/Linux/2015-07/120161.htm

Hibernate整体理解 http://www.linuxidc.com/Linux/2014-07/104405.htm

Hibernate的映射机制  http://www.linuxidc.com/Linux/2014-12/110265.htm

Hibernate 的详细介绍请点这里
Hibernate 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-11/137185.htm

linux
相关资讯       JPA代替Hibernate  SSH框架搭建 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款