关于Jpa的问题,jpa是规范没有底层实现,那么

发布于 2021-11-20 19:07:15 字数 1547 浏览 797 评论 5

既然JPA没有底层实现,我在使用persistence.xml  如下配置时:

<persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.driver_class"
value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost:3306/test" /> <!-- ?characterEncoding=UTF-8  -->
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password"
value="" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<!-- 
<property name="hibernate.hbm2ddl.auto" value="update" />
-->
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>


用的是hibernate的实现吧,但是我并没有引用hibernate的jar包,

在servlet里面:

public void init() throws ServletException {
if (emFactory == null) {
emFactory = Persistence.createEntityManagerFactory("jpa");
}
}

//可以直接用了,好奇怪
EntityManager em = emFactory.createEntityManager();
em.getTransaction().begin();
Student stu = em.find(Student.class, id);
em.getTransaction().commit();
em.close();

这是肿么回事呢,难道javaee.jar内部集成了hibernate么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

心舞飞扬 2021-11-26 23:35:21

所有的这些东东(规范啊,模式啊),目的就是解耦,比如,可以让你的Serverlet不依赖hibernate就能访问数据库,也可以不依赖tomcat,换个resin也能跑起来。

终陌 2021-11-26 21:22:42

恩,我跑去 classpath下面去找了,还是没有hibernate的包,请问还有可能藏在哪里呢

睫毛上残留的泪 2021-11-26 14:48:25

所谓规范,就是一系列的规定和约定。

在容器中,按JPA的规定处理persistence.xml 中配置参数
<provider>org.hibernate.ejb.HibernatePersistence</provider>时,就会在它所有的class-path中找这个类(注意这个class-path不是你定义的环境变量,它有可能是某个目录下所有的jar文件),所以,只要在class-path中有hibernate的jar,类工厂就能正常工作,比如:EntityManager em = emFactory.createEntityManager(); 

这同时也是设计模式中的一种。

坐在坟头思考人生 2021-11-26 00:52:45

用maven missing了许多jar包,所以直接拷贝jar包到lib下面去了,没有拷hibernate的包

牵你的手,一向走下去 2021-11-25 22:51:13

看错问题。。

用了maven了吗? 检查依赖。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文