`

hiberate通过类字段获取表字段

 
阅读更多
package com.jiesuan.common.hibernate3;

import java.util.Iterator;

import org.hibernate.cfg.Configuration;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;

import com.jiesuan.core.entity.User;
/**
 * 
* @ClassName: HibernateConfigurationHelper    
* @Description: TODO(通过类字段拿到表字段)    
* @author Administrator    
* @date 2011-12-8 下午12:00:24    
*
 */
public class HibernateConfigurationHelper {
    private static Configuration hibernateConf;

    @SuppressWarnings("unused")
    private static Configuration getHibernateConf() {
     if (hibernateConf == null) {
      return new Configuration();
     }
     return hibernateConf;
    }

    @SuppressWarnings("unchecked")
    private static PersistentClass getPersistentClass(Class clazz) {
     synchronized (HibernateConfigurationHelper.class) {
      PersistentClass pc = getHibernateConf().getClassMapping(
        clazz.getName());
      if (pc == null) {
       hibernateConf = getHibernateConf().addClass(clazz);
       pc = getHibernateConf().getClassMapping(clazz.getName());

      }
      return pc;
     }
    }

    /**
     * 功能描述:获取实体对应的表名
     *
     * @param clazz
     *            实体类
     * @return 表名
     */
    @SuppressWarnings("unchecked")
    public static String getTableName(Class clazz) {
     return getPersistentClass(clazz).getTable().getName();
    }

    /**
     * 功能描述:获取实体对应表的主键字段名称
     *
     * @param clazz
     *            实体类
     * @return 主键字段名称
     */
    @SuppressWarnings("unchecked")
    public static String getPkColumnName(Class clazz) {
     return getPersistentClass(clazz).getTable().getPrimaryKey()
       .getColumn(0).getName();

    }

    /**
     * 功能描述:通过实体类和属性,获取实体类属性对应的表字段名称
     *
     * @param clazz
     *            实体类
     * @param propertyName
     *            属性名称
     * @return 字段名称
     */
    @SuppressWarnings("unchecked")
    public static String getColumnName(Class clazz, String propertyName) {
     PersistentClass persistentClass = getPersistentClass(clazz);
     Property property = persistentClass.getProperty(propertyName);
     Iterator it = property.getColumnIterator();
     if (it.hasNext()) {
      Column column = (Column) it.next();
      return column.getName();
     }
     return null;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
   //  System.out.println(getTableName(IntelligenceNetVPNAndSCP.class));
    System.out.println(getColumnName(User.class,
      "id"));
    }
}
 
分享到:
评论

相关推荐

    Hibernate_query查询数据表中的一个字段.

    Hibernate是Java领域的一个开源ORM框架,它简化了数据库操作,通过映射Java类到数据库表,可以将数据库操作转化为对Java对象的操作。Hibernate提供了一种灵活的查询语言——HQL(Hibernate Query Language),以及 ...

    通过groovy自定义函数实现提取明细表字段至主表字段.rar

    通过观看"通过groovy自定义函数实现提取明细表字段至主表字段.mp4"视频教程,我们可以深入学习如何在实际环境中应用这些知识点,逐步构建并优化这个功能。学习和掌握Groovy自定义函数的使用,不仅可以提升工作效率,...

    java提取数据库表字段信息的工具类.docx

    在Java开发中,有时我们需要获取数据库表的字段信息,例如字段名称、字段类型等,以便在编程时创建对应的Java实体类。为了简化这一过程,我们可以编写一个工具类来实现这个功能。下面是一个简单的示例,展示了如何...

    自定义生产数据表字段说明文档

    综上所述,"自定义生产数据表字段说明文档"涉及到的知识点包括用户认证、数据库连接、数据库操作、元数据获取、文件生成、扩展性设计以及权限管理等多个方面。这些技术的掌握和应用,对于构建高效、安全的数据库管理...

    Hibernate使用hbm.xml配置映射关系解析

    在使用 Hibernate 时,经常需要配置与类对应的 hbm.xml 文件,并在其中指明数据库表的具体细节。因为映射关系的配置比较繁琐,故总结了模板代码如下: * 多对一:本类中的属性名" class="对方类" column="本类中的...

    Hibernate5教程文档大纲

    - 根据映射文件和实体类,获取数据库表字段。 - 使用反射技术为PreparedStatement的参数赋值。 - 执行SQL更新操作。 2. Hibernate简介: - Hibernate是一个开源的ORM框架,提供了对JDBC的轻量级封装,让开发者...

    如何使用Hibernate Tools生成Entity Bean

    同时,类上会有`@Entity`注解表明这是一个Hibernate管理的对象,字段上会有`@Id`、`@Column`等注解来指定它们与数据库表字段的对应关系。 5. **整合到项目中** 将生成的`User`类添加到你的项目中,配置...

    Hibernate的框架的总结

    - `<property>` 元素用于指定实体类属性与数据库表字段之间的映射关系。 - `name` 属性:表示实体类中的属性名称。 - `column` 属性:表示对应的数据库表字段名称。 - `length` 和 `sql-type` 属性:分别指定...

    用MyEclipse自动生成hibernate映射文件和实体类

    而映射文件`.hbm.xml`则描述了这些属性与数据库表字段的对应关系,包括类型、长度、是否可为空等属性。 使用这种方式,开发者可以快速地将数据库结构转换为Java对象模型,无需手动编写大量的代码,极大地减少了工作...

    Hibernate 用法实例

    2. **注解映射**: 使用Java注解在实体类上直接声明属性与表字段的映射。 ### 五、对象的持久化 1. **保存(Save)**: 将瞬时状态的对象转换为持久化状态。 2. **更新(Update)**: 修改持久化对象的属性,并更新到...

    hibernate大纲

    2. **属性映射**:实体类中的字段通过 `@Column` 等注解与数据库表字段对应。 3. **主键映射**:使用 `@Id` 和 `@GeneratedValue` 注解定义主键生成策略。 4. **关联映射**:`@OneToOne`, `@OneToMany`, `@ManyToOne...

    精通Hibernate第四章

    映射文件通常使用XML格式,其中包含了实体类的属性、访问方法以及它们与数据库表字段的对应关系。通过这些配置,Hibernate可以自动地将对象的状态转换为SQL语句,从而实现数据的增删改查。 创建对象关系映射时,...

    使用Hibernate开发租房系统 (笔记)

    - `column`元素:作为`property`元素的子元素,用于进一步指定实体类属性对应的数据库表字段的细节,如字段名、长度和是否允许为null等。 #### Hibernate核心配置与操作 在使用Hibernate进行数据库操作前,需要...

    用Hibernate做的例子

    - 实体类应包含与数据库表字段相对应的属性,并使用JavaBeans规范定义getter和setter方法。 - 使用@Entity注解标记实体类,表明它是一个Hibernate管理的对象。 - 使用@Id注解标识主键字段,可选择@GeneratedValue...

    Hibernate课程的总结

    2. 属性映射:通过`@Id`指定主键,`@GeneratedValue`管理自增策略,其他属性对应表字段,如`@Column`。 3. 关系映射:处理一对一、一对多、多对多关系,如`@OneToOne`、`@OneToMany`、`@ManyToOne`和`@ManyToMany`。...

    Hibernate3开发.pdf

    7. 对象属性的个数和名称可以与表字段不同,通过映射描述文件来定义二者对应关系。 Hibernate的主要功能包括实现Java对象和数据库表之间的映射,提供数据查询和获取数据的方法,从而减少直接使用SQL和JDBC的操作。...

    java根据数据库自动生成vo 类

    在Java开发中,VO(Value Object)类通常用于在应用程序的不同层之间传递数据,比如从数据库获取的数据到前端展示。自动生成VO类可以大大提高开发效率,避免手动编写大量的getter、setter方法和其他样板代码。本篇将...

    hibernate连接Orcale

    如果你选择使用注解,那么在实体类上使用`@Column`、`@ManyToOne`、`@OneToMany`等注解来定义属性与表字段的对应关系。如果使用XML映射文件(`.hbm.xml`),则需在文件中详细描述这些关系。 5. **SessionFactory的...

    hibernate映射的注解配置

    5. **@Basic(fetch=FetchType, optional=true)**:这个注解表示一个简单的属性映射到数据库表字段。`fetch`属性定义了数据获取策略,可以选择`EAGER`(即时加载)或`LAZY`(延迟加载)。`optional`参数表示字段是否...

    hibernate小试

    每个实体类通常会继承Hibernate的`Serializable`接口,并包含与数据库表字段相对应的属性。例如,`Customer`类可能包含`id`、`name`、`email`等字段,而`Order`类可能有`id`、`customerId`、`product`、`quantity`等...

Global site tag (gtag.js) - Google Analytics