如何在jpa中创建会话和火灾查询

时间:2014-03-09 09:47:59

标签: java hibernate jpa

我是JPA 2.0的新手。 有人可以告诉我如何创建新会话然后在JPA中执行查询的步骤吗?

请做好。

1 个答案:

答案 0 :(得分:0)

我希望您创建了一个带持久性单元标记的persistence.xml。如果你还没有,那么你需要一个例子

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="JPASamplePU" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>org.cksoft.jpasample.entity.Person</class>
        <class>org.cksoft.jpasample.entity.Profile</class>
        <class>org.cksoft.jpasample.entity.Department</class>
        <class>org.cksoft.jpasample.entity.Skills</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/MyApp_DB" />
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
            <property name="hibernate.connection.username" value="root" />
            <property name="hibernate.connection.password" value="" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <!-- <property name="hibernate.cache.use_second_level_cache" value="true" 
                /> -->
            <!-- <property name="hibernate.cache.use_query_cache" value="true" /> -->
        </properties>
    </persistence-unit>
</persistence>

之后,您需要创建EntityManagerFactory(如果您从main方法访问它)

EntityManagerFactory emf = Persistence.createEntityManagerFactory("PERSISTENCE_UNIT_NAME");
EntityManager em = emf.createEntityManager();

以下是我们如何获取交易并开始并提交它。

em.getTransaction().begin(); 
em.getTransaction().commit();

在此之后,您可以继续使用EntityManager或关闭它

em.close();

Session是hibernate特定的类,几乎和EntityManager一样。 如果我错了或者缺少某些东西,请纠正我们。谢谢。