`
fengsky491
  • 浏览: 30813 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Hibernate动态映射表名

阅读更多
很久以前的文档,今天特记录之

首先定义命名策略:
import java.util.Locale;

import org.hibernate.cfg.DefaultNamingStrategy;
import org.hibernate.cfg.NamingStrategy;
import org.hibernate.util.StringHelper;

public class LocalNamingStrategy extends DefaultNamingStrategy { 

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public static final NamingStrategy INSTANCE = new LocalNamingStrategy(); 

    protected LocalNamingStrategy() { 
    } 

    public String classToTableName(String className) {

    	String name = StringHelper.unqualify(className);
    	
    	
    	String language = Locale.getDefault().getLanguage();
    	
    	return addUnderscores(name + "_" + language);
    } 

    public String tableName(String tableName) { 
        return tableName; 
    } 

    public String columnName(String columnName) { 
        return columnName; 
    } 

    private String addUnderscores(String name) { 
        StringBuffer buf = new StringBuffer(name.replace('.', '_')); 
        for (int i = 1; i < buf.length() - 1; i++) { 
            if ('_' != buf.charAt(i - 1) && Character.isUpperCase(buf.charAt(i)) && !Character.isUpperCase(buf.charAt(i + 1))) { 
                buf.insert(i++, '_'); 
            } 
        } 
        return buf.toString().toLowerCase(); 
    } 

}


配置spring
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <description>xmrz</description> 
    
    <bean id="dataSource"
          class="com.rosy.common.config.SettingDataSource">
    </bean>  
    
    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
            destroy-method="close"  > 
        <property name="namingStrategy" ref="namingStrategy"/><!—加入命名策略-->
        <property name="dataSource">
            <ref local="dataSource"/>
        </property>
        <property name="mappingResources">
……
</bean>
<!—定义命名策略bean -- >
<bean id="namingStrategy" class="com.rosy.common.dao.LocalNamingStrategy"/>
…..


配置hbm文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
	Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
 <class name="com.rosy.system.database.PubBaseCode">
(去掉了映射是的table=” pub_base_code”)
  <id name="code" type="java.lang.String">
   <column length="15" name="code"/>
   <generator class="assigned"/>
  </id>
  <property generated="never" lazy="false" name="codeName" type="java.lang.String">
   <column length="20" name="code_name"/>
  </property>
 </class>
</hibernate-mapping>
0
2
分享到:
评论
3 楼 fengsky491 2011-10-14  
bageer 写道
能给发一个样例吗?第一次用,不太了解怎么用

这是很久之前的文档了,我也没有具体的示例,不过总的思路是第一个动态表映射的策略,在sessionFactory中采用这种策略就好了
2 楼 bageer 2011-10-08  
能给发一个样例吗?第一次用,不太了解怎么用
1 楼 zks518 2011-09-21  
好文章,为了以后查看方便,我转载了,感谢分享。

相关推荐

    Hibernate 注解映射

    * @Entity:映射一个实体类,指定关联的表名。 * @Id:映射 OID,指定主键。 * @GeneratedValue:指定 OID 的生成策略,默认值是 GenerationType.AUTO,相当于 xml 时的 native。 * @Version:映射版本号属性,用于...

    hibernate关联映射的作用和常用属性解释

    - **`table`**:对应数据库中的表名,默认情况下,Hibernate会使用类名的小写形式作为表名。 - **`discriminator-value`**:用于多态映射时区分不同子类的值。 - **`mutable`**:指定是否允许修改对象的状态,默认为...

    Hibernate实体映射

    例如,`@Entity`注解标识一个类为Hibernate实体,`@Table`指定对应的数据库表名,`@Id`标记主键字段,`@GeneratedValue`定义主键生成策略等。此外,`@Column`用于指定列名和类型,`@ManyToOne`、`@OneToMany`、`@...

    hibernate实体映射文件字段设置默认值

    首先,我们需要了解一个基本的Hibernate映射文件结构: ```xml &lt;hibernate-mapping&gt; &lt;!-- 映射类的属性 --&gt; &lt;/hibernate-mapping&gt; ``` 这里的`&lt;class&gt;`标签表示映射到特定的Java类,其属性`name`指定了对应的...

    hibernate映射和查询

    **hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...

    hibernate的映射表生成器

    映射文件包含了类名、表名、属性到列的映射、主键设置等详细信息。这个“映射表生成器”工具可以帮助我们自动生成这些映射文件。 5. **GUI工具的优势**: 这个GUI小工具允许开发者通过图形界面拖拽字段,自动生成...

    hibernate组建映射代码

    在这个映射文件中,`&lt;class&gt;`标签定义了实体类与数据库表的对应关系,`name`属性是实体类的全限定名,`table`属性是数据库中的表名。`&lt;id&gt;`标签表示主键,`name`属性是实体类中的属性名,`column`属性是数据库表中的...

    生成hibernate映射文件工具

    hibernate映射文件是Java开发中用于对象关系映射(ORM)的重要组成部分,它将数据库表与Java类之间的关系进行定义,使得开发者无需编写大量的SQL语句,就能实现对数据库的操作。`生成hibernate映射文件工具`是为了...

    hibernate map 集合映射

    - `table`: 所映射的数据库表名。 - `inverse`: 是否为反向关系,用于多对一或一对多关系。 - `key`: 关键字,用于指定关联的外键字段。 - `index`: 对于List或Map,定义索引字段。 - `column`: 定义列名,用于映射...

    java根据实体类生成Hibernate映射文件

    首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    Hibernate关系映射XML生成工具

    用户只需要指定数据库连接信息,Middlegen就能够解析数据库中的表结构,并生成对应的Hibernate映射文件。对于MySQL数据库,Middlegen通常会处理诸如表名、字段、主键、外键等信息,将其转换为符合Hibernate规范的XML...

    常用 Hibernate 映射配置说明.doc

    ### 常用Hibernate映射配置详解 #### 1. hibernate-mapping节点解析 `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库...

    hibernate映射文件生成数据库

    Hibernate映射文件,通常以`.hbm.xml`为扩展名,是Hibernate用来定义Java类与数据库表之间关系的配置文件。它包含了关于实体类与数据库表的字段对应、主键生成策略、关联关系等信息。通过这些映射文件,Hibernate...

    hibernate动态数据库进化版

    例如,使用`org.hibernate.boot.model.naming.PhysicalNamingStrategy`接口来自定义表名生成策略,或者利用`Session.createSQLQuery()`方法直接执行原生SQL。 2. **多数据库支持**:为了适应不同的数据库,如MySQL...

    Hibernate继承映射的第一种策略:每个具体类一张表

    假设有一个抽象的`Animal`类,以及它的两个子类`Dog`和`Cat`,在Hibernate映射文件中可能会这样配置: ```xml ``` 这样,`Animal`类的`name`属性会被映射到`ANIMAL`表,`Dog`和`Cat`的...

    hibernate 映射关系学习入门 多对多实体映射

    本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...

    Hibernate继承映射的第一种策略:每个类对应一张表

    在这些映射文件中,`table`属性指定了对应的数据库表名,`extends`属性用于指定继承关系。 使用此策略时,查询子类对象时,Hibernate会自动进行JOIN操作以获取父类属性。因此,数据库查询性能可能会受到影响,尤其...

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

    3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...

    Hibernate教程20_关系映射案例三

    3. **实体类和注解**:在Java类上使用Hibernate的注解,如`@Entity`表示这是一个数据库中的表,`@Table`定义表名,`@Id`标识主键,`@GeneratedValue`处理主键生成策略,`@ManyToOne`, `@OneToOne`, `@OneToMany` 和 ...

Global site tag (gtag.js) - Google Analytics