`
m635674608
  • 浏览: 5028821 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

hibernate动态表名映射

 
阅读更多

方法一

        

ibernate怎么实现一个类对象map多个表名
1) 映射文件

在一个映射文件中定义class和table的对应关系,用entity-name来区分不同的映射:

<class=”MyClass” entity-name=”testA” table=”mytable_A”>

<property name=”name” column=”st_name”/>

……

</class>

 

<class=”MyClass” entity-name=”testB” table=”mytable_B”>

<property name=”name” column=”st_name”/>

……

</class>

 

(2)在API调用、HQL语句中使用entity-name,而不是class名称。

get(“testA”, id)

delete(“testA”, object)

save(“testA”, object)

saveOrUpdate(“testA”, object)

 

from testA t where t.name = ‘hello’

 方法二

  

近用Hibernate做一个项目的时候遇到这么一个问题: 
用一个配置文件,一个类去映射多个表,(每个表的结构相同)。按照平时的做法,有多少个表就要 
写多少个配置文件,岂不是很麻烦。怎样才能只写一个配置文件就能达到上述目的呢? 

经过研究,发现Hibernate中的NamingStrategy可以达到这个目的。它是用来定义表名和列名映射规 
则的一个接口。我们要通过实现这个接口来实现自己的命名策略。这个接口中包含的十个方法,其中的 
public String classToTableName(String className)是通过类名来映射表名的。实现我们的想法就要用 
到这个方法。好了,下面来看怎么做: 

1、自定义一个类MyNamingStrategy来实现NamingStrategy。(这样你要实现10个方法,如果其他方法 
不需要,我们可以通过继承它的一个适配器类DefaultNamingStrategy来只实现我们需要的方法)好了,我 
们就继承DefaultNamingStrategy 吧。 
2、实现public String classToTableName(String className)方法来实现自己命名策略。 
我这的业务需要是每隔一个月就要换一个表。比如1月用biz_1,那么2月就用biz_2....但是这些表的结构是相同的。我们要做的就是通过获得月份来动态的选择表。我们从这个方法中这样写: 
public class MyNamingStrategy extends DefaultNamingStrategy { 
public static final MyNamingStrategy INSTANCE = new MyNamingStrategy(); 
public String classToTableName(String className) { 
return "biz_" + Calendar.getInstance().get(Calendar.DAY_OF_MONTH); 
} 
} 

好了,这样就可以根据月份来动态的选择表名了。 
3、使用命名策略。 
要使用这个命名策略可以这样: 
Configuration cfg = new Configuration() 
.setNamingStrategy(MyNamingStrategy.INSTANCE) 
.configure("hibernate.cfg.xml") 
.addFile("biz.hbm.xml"); 
ok,这样就可以实现我们的动态表名映射啦! 

 

分享到:
评论

相关推荐

    hibernate map 集合映射

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

    hibernate多对多关联映射

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

    Hibernate 注解映射

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

    Hibernate实体映射

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

    hibernate映射和查询

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

    hibernate list集合映射

    **标题:“Hibernate List集合映射”** 在Java的持久化框架Hibernate中,集合映射是将数据库中的表与Java对象的集合属性关联的过程。List集合映射是其中常见的一种方式,它允许我们将数据库中的一组相关记录映射到...

    Hibernate中单一映射笔记

    在实际开发中,Hibernate提供了多种映射方式,如注解映射、XML映射和基于Java API的动态映射。单个映射只是基础,更复杂的应用场景可能涉及一对多、多对一、多对多的关系映射,以及更复杂的查询和事务管理。理解这些...

    hibernate注解处理映射关系共14页.pdf.zip

    《Hibernate注解处理映射关系》是一份深入探讨Hibernate框架中注解应用的教程,共有14页内容,旨在帮助开发者更好地理解和运用Hibernate在数据库映射中的注解技术。Hibernate作为Java领域广泛使用的对象关系映射...

    hibernate动态数据库进化版

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

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

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

    生成hibernate映射文件工具

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

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

    这里的`&lt;class&gt;`标签表示映射到特定的Java类,其属性`name`指定了对应的Java类全名,而`table`和`schema`分别指定了数据库表名和模式名。 #### 设置默认值的方法 要设置字段的默认值,可以利用`&lt;property&gt;`标签内...

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

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需关心底层SQL语句。映射文件是Hibernate中的关键元素,它定义了Java实体类与数据库表之间的...

    hibernate映射文件生成数据库

    映射文件中,你需要指定表名、列名、数据类型以及主键生成策略等。例如: ```xml &lt;hibernate-mapping package="com.example"&gt; &lt;/hibernate-mapping&gt; ``` 3. 配置Hibernate:在Hibernate的配置文件(如...

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

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

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

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

    常用 Hibernate 映射配置说明.doc

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

    Hibernate关系映射XML生成工具

    对于MySQL数据库,Middlegen通常会处理诸如表名、字段、主键、外键等信息,将其转换为符合Hibernate规范的XML格式。 在Middlegen-Hibernate-r5这个压缩包中,用户可以找到Middlegen针对Hibernate r5版本优化的版本...

Global site tag (gtag.js) - Google Analytics