在hibernate中如何通过对象找到对应的表呢?

问题描述

当然POJO和表是通过.hbm.xm映射文件实现的 那我如何获取到对象对应的表呢? 问题补充:AngelAndAngel 写道

解决方案

public class HibernateConfigurationHelper { private static Configuration hibernateConf = new Configuration(); private static PersistentClass getPersistentClass(Class clazz) { synchronized (HibernateConfigurationHelper.class) { PersistentClass pc = hibernateConf.getClassMapping(clazz.getName()); if (pc == null) { hibernateConf = hibernateConf.addClass(clazz); pc = hibernateConf.getClassMapping(clazz.getName()); } return pc; } } public static String getTableName(Class clazz) { return getPersistentClass(clazz).getTable().getName(); } public static String getPkColumnName(Class clazz) { return getPersistentClass(clazz).getTable().getPrimaryKey() .getColumn(0).getName(); } } 这样可以
解决方案二:
hibernate的底层是用PersistentClass来真正做映射的,你只要把握一点,你想要得到原生态的东西,得到PersistentClass对象就可以了。欢迎采纳 有不懂的站内问我。
解决方案三:
你是要在程序中使用这个表名么?为何不给POJO加个属性
解决方案四:
不是还有hibernate.cfg.xml嘛?从这个配置文件中找到数据库连接,用户名和密码再根据.hbm.xm映射文件中<class name="XxxPO" table="XXX">这个table就是表名

时间: 2024-12-15 03:28:24

在hibernate中如何通过对象找到对应的表呢?的相关文章

第四章 Hibernate中的持久化对象的生命周期

4.1提供对象状态管理的目的      使开发者不再需要理会底层数据库系统的细节      使用Hibernate的开发者应该总是关注对象的状态(state),不必考虑SQL语句的执行 4.2 Hibernate 仅仅定义了三种状态:瞬时(临时).持久和脱管(游离),对客户端代码隐藏了其内部实现的复杂性 4.2.1 瞬时对象(Transient Object):Hibernate中的持久化对象的生命周期         使用new操作符初始化的对象不是立刻就持久的.它们的状态是瞬时的,也就是说它

java中Hibernate中的数据库对象详解

1.hibernate.cfg.xml  代码如下 复制代码 <!DOCTYPE hibernate-configuration PUBLIC         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuratio

在Hibernate框架中编写持久对象类实现外键关联的几点注意事项

关系数据库系统本身就比较复杂,加上Hibernate的O/R映射层,复杂度加重了,很容易出现问题,本人将最近遇到的问题和解决方法做一个总结,整理在下面的一系列文章中 正确理解Hibernate的聚合类型(collection)的使用 在Hibernate中正确实现关联关系中的级联操作(cascading) 在Hibernate框架中编写持久对象类实现外键关联的几点注意事项 本文是第三篇,讲解在one-to-many(一对多)关联关系中的对象类的几个关键方法的实现.主要是equals(),hash

Hibernate中Session的缓存及对象的状态

对于session这个接口的学习可以说是最痛苦也是最复杂的,因为它所涉及的方面太多了,一些隐藏的机制也很多,谁让它是Central API呢. 对于它的几个最基本的方法如save().delete().flush()等的学习都花了我一定的时间.在深入了解这些这些方法前,了解session的缓存机制以及Hibernate中Java对象的状态对我们是很有帮助的. 一.Session的缓存 Java是纯面向对象的语言,因此不可能像C语言那样直接操纵内存,例如声明一段可用的内存空间.在Java里面,缓存

图片-String类型在Hibernate中Get()查询的时候 对象为null

问题描述 String类型在Hibernate中Get()查询的时候 对象为null 解决方案 1--1001对应的数据有没 2--这个表是否和这个Studen对应了映射关系 检查下 解决方案二: 是怎么执行的,要么你数据库没配置好,要么就是数据库没数据,再要么就是连接没获取到. 解决方案三: 弄好了 数据库里面的数据有空格

深入解析Java的Hibernate框架中的持久对象_java

一.持久对象生命周期应用程序在使用Hibernate框架后,创建的持久对象会经历一整套生命周期来完成数据库的操作,其中主要的三个状态分别是瞬态(Transient).持久化(Persistent).脱管(detached).这三种状态的转换是能够在应用程序中控制的,如下图: 为了能清楚的了解这几种状态,这里使用一个实例来查看下这几种状态下对象的不同,下面状态内的代码,具体步骤如下: (1)创建Hibernate_session程序集,并添加像相应的jar包: (2)配置Hibernate,添加相

关于hibernate中对象的三种状态分析

一.首先Hibernate中对象的状态有三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate().get().load():持久态到瞬态的方法有delete():游离态到持久态的方法有update().saveOrUpdate().lock():持久态到游离态的方法有:session.close().session.evict().session.clear(). 二.Hibernate的状态 hibernate的

Hibernate学习(二)Hibernate中Session之get和load方法的真正区别

最近在学习SHH框架中的Hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入很大.主要是对get方法的说法跟实际运行的结果不一致. 先说一下观点吧: get不支持lazy,load支持lazy: 数据不存在时,get返回null,load则抛出ObjectNotFoundException异常. load方法可以返回实体的代理类实例,而get方法直接读取数据库,所以直接返回

Hibernate中load和get的区别

Hibernate中Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象.其区别在于: 1.get()方法直接返回实体类,load()方法可以返回实体的代理类实例. 2.hibernate load是采用延迟机制(当lazy属性为true时) 而get不采用延迟机制(get语句马上读库) 3.找不到符合条件的数据 get方法将返回null load将会报出ObjectNotFoundExcepion 4.get支持多态查询,load只有在la