我是hibernate的新手。 当我们说'Hibernate在托管和非托管环境中工作'时,有人可以解释一下这意味着什么吗?
什么是托管和非托管环境?
提前致谢,
-Uday
答案 0 :(得分:6)
我不确定您听到的具体情况。但通常当我们说'托管环境'时,这意味着有一些外部容器代表您运行事物。在'非托管'的情况下,你自己也可以自己管理对象生命周期。
例如,如果您只是单独使用Hibernate,则需要创建会话,执行操作并关闭会话。所以它是unmanaged
,因为你必须自己管理它。
但是,如果你在Spring容器中使用Hibernate,Spring会为你打开会话打开和关闭。在这种情况下,对您来说是managed
。
答案 1 :(得分:5)
编写Java代码时,它很有用 区分两种类型 目标:一个“正常”的环境和一个 “管理”的环境。该 两者之间的区别很简单。 在正常的环境中,你( 写代码的人)打电话给 main()方法。在管理中 环境,你没有。管理 环境有时被称为 容器环境因为它们 通常遵循遏制或 托管模式。在这个模型中,主机 container是包含的代码 main()方法,独立 第三方代码单位(以下简称 插件)由管理 容器
看看这里: http://benpryor.com/blog/2007/10/14/managed-environments/
答案 2 :(得分:0)
托管环境是指由应用程序服务器或托管资源(如外部第三方JTA api,如JBossTM)完成事务管理,安全性和数据库连接池的环境。从而减轻了冬眠对这些责任的影响。 要使hibernate在托管环境中工作,您需要指定要在休眠配置中使用的基础事务管理器。
非托管环境是应用程序使用资源适配器连接到底层数据库连接,事务管理和安全功能而不使用应用程序服务器的环境。 您不必在hibernate配置中指定事务管理器,使用默认的hibernate的JDBCTransaction。