iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Hibernate和模型对象怎么理解
  • 317
分享到

Hibernate和模型对象怎么理解

2023-06-17 22:06:56 317人浏览 八月长安
摘要

这篇文章主要讲解了“Hibernate和模型对象怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate和模型对象怎么理解”吧!学习Hibernate时,经常会遇到一些小问题

这篇文章主要讲解了“Hibernate和模型对象怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate和模型对象怎么理解”吧!

学习Hibernate时,经常会遇到一些小问题,这里将介OSGi平台的插件类加载机制使得Hibernate无法正确加载分布在不同插件内部的模型对象与O/R映射文件问题的解决方法。

OpenCore是在OSGi规范上构建的微内核(Microkenerl),基于纯组件(Pure Plugin)开放源码企业应用软件平台。

OpenCore数据层实现OSGi上集成Hibernate,Hibernate及其依赖库作为一个单独的插件,这样带来一个问题,就是OSGi平台的插件类加载机制使得Hibernate无法正确加载分布在不同插件内部的模型对象与O/R映射文件。本文讨论解决方案:

模型对象(Domain Objects)插件

模型对象(Domain Objects)集中到独立的插件(Bundle)内,Hibernate插件依赖这些模型对象插件。这是最简单的,也是比较糟糕的方式,比较小的基于OSGi的项目可以这也作做。

Eclipse-BuddyPolicy与Eclipse-RegisterBuddy方式

Equinox(Eclipse提供的OSGi实现)平台特有的方式,允许插件(Bundle)声明自己的伙伴,让“伙伴插件”来动态加载本插件的类,这也是Hiberate与Equinox集成的官方解决方案。这种方式模型对象无需部署在单独的插件内,与业务插件部署在一起即可,Hibernate插件也无须依赖模型对象。

具体做法如下:

首先,Hibernate插件(名称,例如org.openGoss.ORM.hibernate)声明自身可以作为伙伴插件,自描述文件(MANIFEST.MF) 加入描述:Eclipse-BuddyPolicy: reGIStered

然后,模型对象的业务插件中把Hibernate插件加入为伙伴,自描述文件(MANIFEST.MF) 加入描述:Eclipse-RegisterBuddy:org.opengoss.orm.hibernate

Eclipse Extension Point方式

这是我们目前实现的方式,通过标准的Eclipse扩展点与扩展机制,我们在Hibernate插件中plugin.xml配置文件中声明下述扩展点,在模型对象插件中声明扩展,例如:

Hibernate插件的启动中,用代码配置生成SessionFactory,代码如下:

  1. public void start(BundleContext context) throws Exception {   

  2. Configuration configuration = new Configuration().configure
    (new File ("./etc/org.opengoss.database.hibernate/hibernate.cfg.xml"));   

  3. Class[] domainClasses = getDomainClasses();   

  4. for (Class domainClass : domainClasses) {   

  5. configuration.addClass(domainClass);   

  6. }   

  7. sessionFactory = configuration.buildSessionFactory();   

  8. Dictionarynew Hashtable props.put("scope", "APPLICATION");   

  9. props.put("uid", "Hibernate:SessionFactory");   

  10. registration = context.registerService
    (SessionFactory.class.getName(), sessionFactory, props);  

  11. }   

  12. private Class[] getDomainClasses() throws Exception {   

  13. List domainClasses = new ArrayList();   

  14. IExtensionPoint point = registry.getExtensionPoint
    (IConstants.DOMAIN_OBJECT_EXTENSION_POINT);   

  15. IExtension[] extensions = point.getExtensions();   

  16. for (IExtension extension : extensions) {  

  17. IConfigurationElement[] elements = extension.getConfigurationElements();   

  18. for (IConfigurationElement configurationElement : elements) {   

  19. Bundle bundle = pluginContext.getBundleBySymbolId
    (extension.getNamespaceIdentifier());   

  20. Class domainClass = bundle.loadClass
    (configurationElement.getAttribute("class"));   

  21. domainClasses.add(domainClass);   

  22. }   

  23. }   

  24. return domainClasses.toArray(new Class[domainClasses.size()]);   

  25. }  

注意:Hibernate内部的类加载机制实在无法令人满意,尽管我们在这种方式中已经加载所有的模型类对象,但Hibernate内部仍然会调用Class.forName()去试图加载。

感谢各位的阅读,以上就是“Hibernate和模型对象怎么理解”的内容了,经过本文的学习后,相信大家对Hibernate和模型对象怎么理解这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Hibernate和模型对象怎么理解

本文链接: https://www.lsjlt.com/news/293338.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hibernate和模型对象怎么理解
    这篇文章主要讲解了“Hibernate和模型对象怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate和模型对象怎么理解”吧!学习Hibernate时,经常会遇到一些小问题...
    99+
    2023-06-17
  • ADO.NET对象模型怎么理解
    这篇文章主要讲解了“ADO.NET对象模型怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET对象模型怎么理解”吧!许多VS开发人员似乎都这么想,认为所有的Oracle的东西...
    99+
    2023-06-17
  • Hibernate对象持久化怎么理解
    本篇内容介绍了“Hibernate对象持久化怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Hibernate对象持久化类(persi...
    99+
    2023-06-17
  • 怎么理解Javascript中浏览器对象模型
    本篇内容主要讲解“怎么理解Javascript中浏览器对象模型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Javascript中浏览器对象模型”吧!J...
    99+
    2024-04-02
  • 如何理解C++对象模型和this指针
    本篇内容主要讲解“如何理解C++对象模型和this指针”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解C++对象模型和this指针”吧!对象模型成员变量和成员函数分开存储一、只有非静态成员...
    99+
    2023-06-25
  • C++对象模型和this指针详解
    目录对象模型一、二、三、四、五、this指针一、二、总结对象模型 成员变量和成员函数分开存储 一、 只有非静态成员变量才属于类的对象上 空对象占用字节为1 class Pe...
    99+
    2024-04-02
  • 如何理解DOM文档对象模型
    如何理解DOM文档对象模型,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。向大家描述一下DOM文档对象模型,文档对象模型(DocumentO...
    99+
    2024-04-02
  • 怎么理解JS原型、原型链、对象
    本篇内容主要讲解“怎么理解JS原型、原型链、对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解JS原型、原型链、对象”吧! 一. 普通对象与函...
    99+
    2024-04-02
  • C#中怎么查看对象模型
    C#中怎么查看对象模型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#语言有很多值得学习的地方,这里我们主要介绍C#查看Excel对象模型,包括介绍Range对象的Find(...
    99+
    2023-06-17
  • Hibernate与对象是怎么共事的
    本篇内容介绍了“Hibernate与对象是怎么共事的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Hibernate是完整的对象/关系映射解...
    99+
    2023-06-17
  • JavaScript 对象在面向对象编程中的作用:理解对象模型的力量
    对象作为数据结构 JavaScript 对象是无序的键值对集合。键和值都可以是任何类型,包括其他对象。这使对象成为存储和组织数据的强大容器。例如,您可以使用对象来表示客户信息,其中键是属性(例如姓名、地址),值是相应的值。 方法封装行为 ...
    99+
    2024-03-13
    导言 JavaScript 对象是面向对象编程(OOP)范式的一个基本构建块。理解其在 OOP 中的强大功能至关重要 因为它使您能够创建灵活、可扩展和可维护的代码。
  • Linq数据和对象怎么理解
    这篇文章主要讲解了“Linq数据和对象怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linq数据和对象怎么理解”吧!大家知道在开发数据时,数据一般是关系型数据,然而数据和对象是什么关...
    99+
    2023-06-17
  • C++ 虚拟函数与对象模型:深入理解面向对象设计
    虚拟函数允许子类覆盖基类的函数,实现多态行为。它改变了对象模型,允许子类修改基类方法的实现。实战案例中,shape 基类定义了 draw() 方法,而子类 rectangle 和 cir...
    99+
    2024-04-29
    c++ 面向对象设计
  • 深入理解Go语言的面向对象模型
    go 语言通过对象、类型和接口提供面向对象编程(oop)支持。对象是匿名类型,类型是隐式类,接口定义对象行为,而继承则通过类型嵌入实现。实战案例:使用 oop 创建一个学生管理系统,其中...
    99+
    2024-04-04
    go语言 面向对象
  • Python 和 Linux:如何理解数据类型和对象?
    Python 和 Linux 是两个非常流行的开源项目。Python 是一种动态、面向对象、解释型语言,而 Linux 是一种开源的操作系统。虽然 Python 和 Linux 是两个不同的项目,但是它们之间有一个共同的概念:数据类型和对...
    99+
    2023-11-08
    linux 数据类型 对象
  • Python的对象模型是什么
    在面向对象的理论中,有两个核心的概念:类和实例。类可以看成是一个模板,实例就是根据这个模板创建出来的对象。在Python中,类和实例都被视为对象,即类对象(或类型对象)和实例对象。为了避免后续出现歧义,我们这里把对象分为三种:内置类对象:比...
    99+
    2023-05-18
    Python
  • JavaScript对象内置对象,值类型和引用类型讲解
    目录对象对象的定义遍历对象的成员JS内置对象Math对象Date对象数组对象String对象值类型和引用类型对象 JS中的对象是属性和行为的结合体,其中属性是对象的静态特征,行为又称...
    99+
    2024-04-02
  • 怎么理解C++中的类和对象
    怎么理解C++中的类和对象,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。c++类的由来(或者说为什么要增加类):我们知道c语言是面向过程的语言,c++是即面向过...
    99+
    2023-06-25
  • DOM 和 BOM 的区别:了解浏览器对象模型
    DOM 和 BOM 的区别 DOM 和 BOM 是浏览器对象模型中的两个重要组成部分,它们用于描述和操作网页的内容及其环境。DOM 代表文档对象模型,而 BOM 代表浏览器对象模型。DOM 主要负责处理和操作网页中的 HTML 元素,而 ...
    99+
    2024-02-21
    DOM BOM javascript 网页 浏览器
  • HTML DOM对象模型是怎样的
    本篇文章给大家分享的是有关HTML DOM对象模型是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。这里向大家简单介绍一下HTML DOM...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作