嗨,我是hibernate的新手。我阅读了很多关于哪本书以及要阅读的规范的线程和讨论。但问题是有些线程太老了,我不明白从哪里开始。我从开发人员指南中的Hibernate规范开始,我认为这太复杂了。所以我读了一些小教程。 实际上我被分配到一些项目,我被告知使用了Hibernate。但由于对Hibernate知之甚少,我完全迷失了。在代码中我可以看到在Maven pom中使用了Hibernate。我发现META-INF / Persistence.xml包含:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence 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_1_0.xsd" version="1.0">
<persistence-unit name="EmployeeDatabase" transaction-type="JTA">
<jta-data-source>java:EmpDS</jta-data-source>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>entity.Employee</class>
<properties>
<property name="hibernate.connection.password" value="Usha" />
<property name="hibernate.archive.autodetection" value="class" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/Employee" />
<property name="hibernate.connection.username" value="Usha" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="false" />
</properties>
</persistence-unit>
我认为hibernate配置必须通过hibernate.cfg.xml来完成。但我可以在任何地方找到它。在执行查询时代码中没有对hibernate的引用。所有查询都是使用import javax.persistence.Query完成的。所以我猜JPQL用于执行查询。
所以我的问题是:这真的是Hibernate还是JPA还是什么?
我什么时候可以说这是使用Hibernate进行持久化。
何时使用JPQL以及何时使用HQL?
请有人可以指导我完成这件事。要清楚我想首先学习Hibernate,然后深入挖掘我的作业。但我不知道从哪里开始。哪本书或教程最好。
最诚挚的问候, Jeena
答案 0 :(得分:5)
这真的是Hibernate或JPA还是什么?
JPA是一个框架,Hibernate是一个可以使用JPA框架的实现。所以不要把它们混为一谈。
何时使用JPQL以及何时使用HQL?
同样,JPQL是一种标准语言,不仅与Hibernate有关。但是,如果您只使用Hibernate,您可能会发现HQL有更多选项并且更灵活。
http://en.wikipedia.org/wiki/Java_Persistence_Query_Language 参考:
JPQL基于早期的Hibernate查询语言(HQL) Hibernate中包含非标准查询语言 对象关系映射库。
Hibernate和HQL是在JPA规范之前创建的。作为 Hibernate 3 JPQL是HQL的一个子集。
答案 1 :(得分:2)
所以我的问题是:这真的是Hibernate还是JPA还是什么?
这是使用Hibernate作为实现的JPA。
JPA是标准,Hibernate是JPA标准的实现之一
尝试遵循Hibernate文档和教程,然后使用Hibernate EntityManager使您的项目符合JPA
答案 2 :(得分:1)
Hibernate是JPA的实现。但是Hiberante有更多。在hibernate中还有其他方法可以将对象持久化到数据库。如上所述,您可以将JPA与myBatis等其他框架一起使用。
在Hibernate中使用JPA是一种选择。使用JPA选项时,您必须使用EntityManager
和EntityManagerFactory
。您必须使用persistance.xml
建立您的工厂。
另一方面,您可以使用其他选项,例如Criteria API
或HQL
。使用Hibernate特定选项时,您必须使用Session
和SessionFactory
。在创建SessionFactory时必须使用hibernate.cfg.xml
。