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

/**

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

* @author 晚风工作室 www.soservers.com

*

*/

标签:
Hibernate

[1].[代码] [Java]代码 跳至 [1]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

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配置获取数据库表的具体信息

 *
@author 晚风工作室 www.soservers.com

 *

 */

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;

    }

    

}

时间: 2024-10-01 00:22:56

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

hibernate即时获取数据库信息

由于读取数据的时候,Hibernate将第一次读取的内容放到了缓存中,若此时有别的应用修改了数据库中的数据,程序再次读取的时候,内容是从缓存中直接获取,无法反映数据库中的最新状况. 因此,可以设置读取数据的模式,不用读取缓存,从数据库中直接读取,方法如下: public List queryObjectsByHQL(String hql, boolean queryFromCache) throws HibernateException{Session session = getSession(

百度地图的使用之获取数据库表中信息的坐标点显示在地图上

//通用封装好的js: var map = new BMap.Map("container"); //建树Map实例 var point = new BMap.Point(103.976032, 33.845509); // 建树点坐标 map.centerAndZoom(point, 6); // 初始化地图,设置中心点坐标和地图级别. //地图事件设置函数: map.enableDragging(); //启用地图拖拽事件,默认启用(可不写) map.enableScrollWhe

hibernate动态创建数据库表名几种方式

数据库中数据量很大, 但又不可以删除时同时又要优化程序检索数据时间. 答:方式有很多比如 创建数据库表分区,创建索引, 存储过程等; 我这里采用动态创建数据库表的方式. 完全可以在不创建表分区情况下实行分表管理 例如 日志记录表 将日期(yyyy-MM)作为默认表后缀动态追加, 例如 文章发布表 将用户名作为后缀名进行动态追加 ; 动态创建数据库表的方式要具体问题具体分析, 比如JDBC中直接使用create table 表名_dynamicStr(...); 文章发布系统 dynamicStr

自动获取数据库表结构

Python 将sandman包中的自动获取数据库表结构的部分提取出来 包名auto_get_database __init__.py from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) db = SQLAlchemy(app) models.py from decimal import Decimal from flask import current_app fro

ASP获取数据库表名,字段名以及对字段的一些操作

最近,在ASP论坛上看到很多网友问怎么获取数据库表名,字段名以及如何对字段进行删除,增添的操作故写此文. 本人对SQLServer比较熟一些,故以SQLServer为列: <% SET Conn=Server.CreateObject("ADODB.Connection") Conn.Open "Server=IP地址;Provider=sqloledb;Database=库名称;UID=用户名;PWD=密码;" %> 读SqlServer库中的表名:

【转】MSSQL获取指定表的列名信息,描述,数据类型,长度

/* --作用:根据特定的表名查询出字段,以及描述,数据类型,长度,精度,是否自增,是否为空等信息 --作者:wonder QQ:37036846 QQ群:.NET顶级精英群 ID:124766907 --时间:2011-03-23 11:25 --描述:创建存储过程 --参数:@tableName 表名 */ CREATE PROC sp_GetListsColumnInfoByTableName( @tableName nvarchar(255)) AS BEGIN SELECT CASE

hibernate 自动生成数据库表

只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 <property name="hibernate.hbm2ddl.auto">update</property> update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表:如果表里缺少列,则自动添加列. 还有其他的参数: create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失.

Hibernate自动生成数据库表

在hibernate.cfg.xml中添加: 引用 <properties> <property name="hibernate.hbm2ddl.auto" value="create" /> </properties> value的值可选项如下: 引用 validate  加载hibernate时,验证创建数据库表结构 create  每次加载hibernate,重新创建数据库表结构. create-drop  加载hibern

SQL 获取数据库表信息

一个服务器中所有的数据库 SELECT * FROM Master..SysDatabases ORDER BY Name 一个数据库中所有的表 SELECT * FROM sysobjects  WHERE xtype='u' 一个表的说明信息 SELECT * FROM sys.extended_properties a left JOIN  sysobjects b ON a.major_id=b.id WHERE b.name='Log' --and a.minor_id =0 orde