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

一、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 transaction-type="RESOURCE_LOCAL"> <!--可选属性:设置persistence的提供者 --> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <!--可选属性:实体类 --> <class>entity.BookCard</class> <!-- 数据库厂商的属性 --> <properties> <property value="org.hibernate.dialect.SQLServer2008Dialect"/> <property value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> <property value="sa"/> <property value="123456"/> <property value="jdbc:sqlserver://localhost:1433;DatabaseName = webLastExam_20160727"/> <property value="true"></property> <property 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:指明要映射的类,如果不写就不能在程序运行的时候自动创建数据库中的表。

    ⒉在实体类中添加注解:

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

           

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

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

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

       ⑵、设置主键:

           

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

            @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; } } 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4099118715b3cb1d84eb844726d6c630.html