Oraclessh(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:指明要投的接近,如果不写就非能够于程序运行的时刻自动创建数据库被的申。

 

    ⒉在实业类吃补充加注:

        ⑴、在照的实业类及添加注:

           Oracle 1

          @Entity :标识是近乎是一个JPA实体 

              @Table(name=”BookCard”)
:根据是实体类在数据库被指定生成的表名

        ⑵、设置主键:

           Oracle 2

            @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来照这些数据源,从而可以实现不同的数据库中的操作。)       

 


 

      谢谢浏览!

    

 

    

相关文章