hibernate 读取mysql表结构_Hibernate根据持久化对象获取对应数据库表信息(表名,主键等)...

Hibernate根据持久化对象获取对应数据库表信息(表名,主键等)

这几天要写个DAO层自动记录数据库操作日志的功能,兼容Hibernate及JDBC。

Hibernate开发中需要根据持久层对象获取所映射的数据库表相关信息,如表名,主键,外键对象等相关系。

一、核心的几个方法如下:

获取对象映射缓存管理类

AbstractEntityPersister classMetadata= (AbstractEntityPersister)super.getSessionFactory().getClassMetadata(object.getClass());//表名

String tableName=classMetadata.getTableName();//对象名称

String entityName=classMetadata.getEntityName();//主键列映射属性

String pkPropertyName=classMetadata.getIdentifierPropertyName();//数据库主键列

String[] pkColumns=classMetadata.getIdentifierColumnNames();//反射调用获取主键值

String pkPropertyValue=BeanUtils.getProperty(object, pkPropertyName);

hibernate自带反射取值函数

classMetadata.getPropertyValue(object, propertyName, org.hibernate.EntityMode.POJO);

非主键属性

String[] propertyNames=classMetadata.getPropertyNames();

非主键数据库列

String[] propertyColumns=classMetadata.getPropertyColumnNames(propertyName);

非主键属性是否可修改bool值有序集合boolean[] isUpdateFalgs =classMetadata.getPropertyUpdateability();

非主键属性是否可添加bool值有序集合boolean[] isInsertFlags =classMetadata.getPropertyInsertability();

获取属性数据类型

Type propertyType=classMetadata.getPropertyType(pkPropertyName)

是否是集合类型

propertyType.isCollectionType()

是否是对象类型

propertyType.isEntityType()

是否是时间类型

propertyTypeinstanceofDateType

获取外键对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值