`

通过Hibernate配置获取数据库表的具体信息

    博客分类:
  • Java
阅读更多
/**
 * 通过Hibernate配置获取数据库表的具体信息
 *
 *
 */
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.hibernate.cfg.Configuration;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.PersistentClass;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
 * 通过Hibernate配置获取数据库表的具体信息
 * 
 *
 */
public class HibernatePluginsUtil extends HibernateDaoSupport {

	// public static String getTablenameByObject(Class c){
	// SingleTableEntityPersister
	// entityPersister=(SingleTableEntityPersister).getSessionFactory().getClassMetadata(POJO.class).
	//
	// //获得pojo对应表名:
	// String tableName = entityPersister.getTableName();
	// //entityPersister中还包含pojo的属性、属性值、以及属性对应的数据库表字段等配置信息。
	//
	// }
	private static Configuration hibernateConf = new Configuration();

	/**
	 * 获得Hibernate持久化类
	 * @param clazz
	 * @return PersistentClass
	 */
	@SuppressWarnings("unchecked")
	private static PersistentClass getPersistentClass(Class clazz) {
		synchronized (HibernatePluginsUtil.class) {
			PersistentClass pc = hibernateConf.getClassMapping(clazz.getName());
			if (pc == null) {
				hibernateConf = hibernateConf.addClass(clazz);
				pc = hibernateConf.getClassMapping(clazz.getName());
			}
			return pc;
		}
		
	}

	/**
	 * 获得表名
	 * 
	 * @param clazz 映射到数据库的po类
	 * @return String
	 */
	@SuppressWarnings("unchecked")
	public static String getTableName(Class clazz) {
		return getPersistentClass(clazz).getTable().getName();
	}

	/**
	 * 获得列名
	 * 
	 * @param clazz 映射到数据库的po类
	 * @param icol 第几列
	 * @return String
	 */
	@SuppressWarnings("unchecked")
	public static String getColumnName(Class clazz, int icol) {
		// return getPersistentClass( clazz
		// ).getTable().getPrimaryKey().getColumn( 0 ).getName(); //獲取主鍵名
		return getPersistentClass(clazz).getTable().getColumn(icol).getName();
	}

	/**
	 * 获得所有列名
	 * 
	 * @param clazz 映射到数据库的po类
	 * @return List<String> 列名
	 */
	@SuppressWarnings("unchecked")
	public static List<String> getColumnNames(Class clazz) {
		Iterator<Column> itr = getPersistentClass(clazz).getTable().getColumnIterator();
		List<String> columns = new ArrayList<String>();
		while (itr.hasNext()) {
			Column tmp = itr.next();
			columns.add(tmp.getName());
		}
		return columns;
	}

	

}
 
0
0
分享到:
评论

相关推荐

    hibernate多数据库配置

    在 Hibernate 配置文件中,我们可以使用 DynamicDataSource 来配置多数据库连接信息,例如: ```xml &lt;hibernate-configuration&gt; &lt;property name="connection.datasource"&gt;dataSource &lt;!-- 其他 Hibernate 配置...

    hibernate反向生成数据库程序

    首先,我们需要了解Hibernate的配置文件`hibernate.cfg.xml`,这个文件包含了数据库连接信息、数据源设置、实体类映射等关键配置。在代码中,我们创建了一个`Configuration`实例,并通过`configure("hibernate.cfg....

    根据hibernate反向生成数据库的java代码

    在反向工程过程中,Hibernate首先获取数据库的元数据,包括表名、字段名、数据类型、约束条件等。这些元数据是生成Java代码的基础,确保了Java类与数据库表结构的一致性。 4. Java持久化接口: Hibernate逆向工程...

    hibernate配置数据库连接池的三种方法

    连接池通过预先创建并维护一定数量的数据库连接,当程序需要连接数据库时,可以从池中获取一个已存在的连接,而不是每次都创建新的。使用完毕后,连接不会被关闭,而是返回到连接池中供其他线程复用。这样,连接的...

    Hibernate 映射数据库表插件

    3. **配置文件(Configuration Files)**:如hibernate.cfg.xml,用于配置数据库连接信息、Hibernate会话工厂设置等。 4. **SessionFactory和Session接口**:SessionFactory是创建Session对象的工厂,Session是与...

    Hibernate配置文件加载后修改配置信息

    本文介绍了如何利用反射机制来修改Hibernate配置文件中的数据库连接信息,并通过自定义`ConnectionProvider`实现了对敏感信息的加密处理。这种做法不仅增强了应用程序的安全性,还提高了配置信息的管理效率。开发者...

    基于hibernate的简单数据库实现

    Hibernate的配置文件(hibernate.cfg.xml)包含了数据库连接信息,而映射文件(.hbm.xml)定义了每个实体类与数据库表的映射。在程序启动时,通过SessionFactoryBuilder创建SessionFactory实例,之后就可以进行...

    hibernate同时配置多个数据库连接

    - **使用DataSource**:如果使用Java的JNDI数据源,可以将多个数据库的连接信息配置在应用服务器中,然后在Hibernate配置文件中引用这些数据源。 6. **性能优化** - **连接池管理**:为了提高性能,建议为每个...

    hibernate数据库相关操作步骤

    总结起来,使用Hibernate进行数据库操作主要包括配置、实体定义、映射、操作数据库、事务管理、缓存和优化等方面。通过理解并熟练掌握这些步骤,开发者可以更高效地在Java应用中实现数据库操作。

    JAVA通过实体生成数据库表

    这些工具可以解析实体类,利用反射获取字段信息,然后根据配置生成对应的DDL(Data Definition Language)语句,比如`CREATE TABLE`,进而创建数据库表。在执行这些DDL语句后,数据库中就会出现与实体类匹配的表。 ...

    hibernate分页查询 数据库连接

    这样,Hibernate只会从数据库中获取第11到第20条记录,而不是所有的数据。 在使用这些方法之前,我们需要创建一个HQL(Hibernate Query Language)查询,或者使用Criteria API来定义我们的查询条件。HQL是Hibernate...

    Hibernate通过配置文件自动生成表

    本篇将详细讲解如何通过Hibernate配置文件自动生成数据库表,以及相关的知识点。 **一、Hibernate概述** Hibernate是Java平台上的一个开源框架,它的主要功能是提供一种映射机制,将Java类与数据库表进行对应,...

    Spring+Hibernate下的数据库连接动态切换

    1. 从用户的会话中获取数据库名称。 2. 如果没有指定数据库,则使用默认值。 3. 使用`ThreadLocal`将数据库名称绑定到当前线程。 4. 在请求结束时移除线程局部变量。 #### 七、数据源配置 在Spring配置文件中,我们...

    java使用hibernate操作数据库jar

    在实际开发中,我们首先需要在hibernate.cfg.xml中配置数据库连接信息,然后创建实体类,并通过注解@Entity、@Table等定义与数据库表的映射关系。接着,编写DAO层,利用SessionFactory和Session进行数据库操作,例如...

    JAVA 使用hibernate配置实例

    Hibernate是一个开源的ORM框架,它可以将Java类与数据库表进行映射,通过对象的方式来操作数据库,从而避免了繁琐的SQL语句编写。Hibernate提供了Session接口,它是与数据库交互的主要接口,支持CRUD(创建、读取、...

    Hibernate 显示数据库数据

    2. Hibernate配置:在项目中,首先需要配置Hibernate的`hibernate.cfg.xml`文件,包括数据库连接信息(如URL、用户名、密码)、JDBC驱动、方言等。 3. 实体类:实体类代表数据库中的表,每个属性对应表的一列。例如...

    HIbernate与oracle数据库应用例子

    通过上述步骤,开发者可以在Java应用中高效地使用Hibernate与Oracle数据库进行数据操作。实践过程中,应不断优化和调整,以适应不同场景的需求。在实际项目中,还需要关注性能监控、异常处理、安全防护等方面,确保...

    hibernate自动重新连接数据库proxool的使用

    在Java的持久层框架Hibernate中,数据库连接管理是至关重要的。`Proxool`是一个开源的连接池实现,它能够帮助我们...在`hibernate配置自动连接数据库.docx`文档中,可能会有更详细的配置示例和使用说明,建议参考学习。

    hibernate3.0 和数据库生成pojo类的工程方法

    本篇文章主要关注的是如何在Hibernate 3.0版本中,通过它提供的工具自动生成POJO(Plain Old Java Object)类,这些类可以直接映射到数据库表,实现数据的存取。 1. **什么是POJO类**: POJO类是Java中简单、无...

Global site tag (gtag.js) - Google Analytics