什么是托管和非托管环境意味着在休眠?

时间:2011-05-29 05:50:30

标签: hibernate

我是hibernate的新手。 当我们说'Hibernate在托管和非托管环境中工作'时,有人可以解释一下这意味着什么吗?

什么是托管和非托管环境?

提前致谢,

-Uday

3 个答案:

答案 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。