很久以前的文档,今天特记录之
首先定义命名策略:
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>
分享到:
相关推荐
* @Entity:映射一个实体类,指定关联的表名。 * @Id:映射 OID,指定主键。 * @GeneratedValue:指定 OID 的生成策略,默认值是 GenerationType.AUTO,相当于 xml 时的 native。 * @Version:映射版本号属性,用于...
- **`table`**:对应数据库中的表名,默认情况下,Hibernate会使用类名的小写形式作为表名。 - **`discriminator-value`**:用于多态映射时区分不同子类的值。 - **`mutable`**:指定是否允许修改对象的状态,默认为...
例如,`@Entity`注解标识一个类为Hibernate实体,`@Table`指定对应的数据库表名,`@Id`标记主键字段,`@GeneratedValue`定义主键生成策略等。此外,`@Column`用于指定列名和类型,`@ManyToOne`、`@OneToMany`、`@...
首先,我们需要了解一个基本的Hibernate映射文件结构: ```xml <hibernate-mapping> <!-- 映射类的属性 --> </hibernate-mapping> ``` 这里的`<class>`标签表示映射到特定的Java类,其属性`name`指定了对应的...
**hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...
映射文件包含了类名、表名、属性到列的映射、主键设置等详细信息。这个“映射表生成器”工具可以帮助我们自动生成这些映射文件。 5. **GUI工具的优势**: 这个GUI小工具允许开发者通过图形界面拖拽字段,自动生成...
在这个映射文件中,`<class>`标签定义了实体类与数据库表的对应关系,`name`属性是实体类的全限定名,`table`属性是数据库中的表名。`<id>`标签表示主键,`name`属性是实体类中的属性名,`column`属性是数据库表中的...
hibernate映射文件是Java开发中用于对象关系映射(ORM)的重要组成部分,它将数据库表与Java类之间的关系进行定义,使得开发者无需编写大量的SQL语句,就能实现对数据库的操作。`生成hibernate映射文件工具`是为了...
- `table`: 所映射的数据库表名。 - `inverse`: 是否为反向关系,用于多对一或一对多关系。 - `key`: 关键字,用于指定关联的外键字段。 - `index`: 对于List或Map,定义索引字段。 - `column`: 定义列名,用于映射...
首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
用户只需要指定数据库连接信息,Middlegen就能够解析数据库中的表结构,并生成对应的Hibernate映射文件。对于MySQL数据库,Middlegen通常会处理诸如表名、字段、主键、外键等信息,将其转换为符合Hibernate规范的XML...
### 常用Hibernate映射配置详解 #### 1. hibernate-mapping节点解析 `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库...
Hibernate映射文件,通常以`.hbm.xml`为扩展名,是Hibernate用来定义Java类与数据库表之间关系的配置文件。它包含了关于实体类与数据库表的字段对应、主键生成策略、关联关系等信息。通过这些映射文件,Hibernate...
例如,使用`org.hibernate.boot.model.naming.PhysicalNamingStrategy`接口来自定义表名生成策略,或者利用`Session.createSQLQuery()`方法直接执行原生SQL。 2. **多数据库支持**:为了适应不同的数据库,如MySQL...
假设有一个抽象的`Animal`类,以及它的两个子类`Dog`和`Cat`,在Hibernate映射文件中可能会这样配置: ```xml ``` 这样,`Animal`类的`name`属性会被映射到`ANIMAL`表,`Dog`和`Cat`的...
本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...
在这些映射文件中,`table`属性指定了对应的数据库表名,`extends`属性用于指定继承关系。 使用此策略时,查询子类对象时,Hibernate会自动进行JOIN操作以获取父类属性。因此,数据库查询性能可能会受到影响,尤其...
3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...
3. **实体类和注解**:在Java类上使用Hibernate的注解,如`@Entity`表示这是一个数据库中的表,`@Table`定义表名,`@Id`标识主键,`@GeneratedValue`处理主键生成策略,`@ManyToOne`, `@OneToOne`, `@OneToMany` 和 ...