- 浏览: 293634 次
- 性别:
文章分类
- 全部博客 (105)
- windows (6)
- spring (5)
- hibernate (6)
- log4j (3)
- html (8)
- Servlet (2)
- mysql (4)
- java (18)
- tomcat (5)
- 数据库 (4)
- eclipse (5)
- css (2)
- word (1)
- javascript (8)
- 手机 (5)
- 日志 (1)
- linux (9)
- ssh (1)
- 线程 (1)
- dom (2)
- 算法 (1)
- android (4)
- xp (1)
- http (4)
- web (3)
- 生活 (6)
- oracle (9)
- shell (4)
- plsql (2)
- ubuntu (9)
- 网络配置 (1)
- 编辑器 (2)
- C (1)
- C++ (2)
- cygwin (1)
- CDT (2)
- ios (1)
- g++ (1)
- gcc (2)
- 魔方 (1)
- chrome (2)
- 购物 (1)
- 游戏 (1)
- 模拟器 (1)
- weblogic (3)
- OSGi (1)
- transaction (2)
- fusioncharts (1)
- jta (1)
- 加密 (1)
- RSA (1)
- jBPM (2)
- jboss (1)
- wildfly (1)
- 电子书 (1)
- example code (1)
- redis (1)
- jemalloc (1)
- libc (1)
- sokect (1)
- nio (1)
- office (1)
- elastic-job (1)
- zookeeper (1)
- quartz (1)
- webservice (3)
- axis (1)
- CentOS7 (1)
- VM (1)
- hbase (3)
- maven (1)
- 硬件 (1)
- 单片机 (1)
- 电路图 (1)
- axis2 (1)
- jaxws (2)
- vpn (1)
- pptp (1)
- CKFinder (1)
- utf-8 (1)
- jdk (2)
- tail (1)
- cmd (2)
- srvany (1)
- rktool (1)
- python (1)
- tensorflow (1)
- 字符编码 (2)
- wget (1)
- ftp (1)
- jsp (0)
- nginx (1)
- openlayer (1)
- GEO (1)
- geojson (1)
- wgs84经纬度坐标系 (1)
- wgs84 墨卡托投影坐标系 (1)
- 连接池 (1)
- jdbc (1)
- druid (1)
- 文档 (0)
- iso week (1)
- date (1)
- golang (0)
- vscode (0)
- fiber (0)
最新评论
-
cybersnow:
恩不错,谢谢
The 'manifest_version' key must be present and set to 2 (without quotes). -
LinApex:
这样效率很低哦
在js、css中嵌入java/jsp代码 -
bnmnba:
<div class="quote_title ...
hibernate 获取实体的表名、主键名、列名 -
黄浦江:
Mysql 5.6.5 noInstall 版本下没有my.i ...
Can't connect to MySQL server on 'localhost' (10061) -
369485270:
楼主在吗 你这个注解方式根本就不行 报错啊 org.hibe ...
hibernate 获取实体的表名、主键名、列名
修改自网络:http://blog.csdn.net/fhwbj/article/details/3267787
import java.util.Iterator; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.hibernate.mapping.Column; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.PrimaryKey; import org.hibernate.mapping.Property; /** * 功能描述:根据实体类得到对应的表名、主键名、字段名工具类 * </p> * 注:po类名须与对应映射文件名一致,即Student.java与Student.hbm.xml<br> * //修改为主注解方式,此hbm文件已经不需要 * * * @Date:Nov 10, 2008 * @Time:3:13:07 PM * */ public class EntityUtil { private static Configuration hibernateConf; private static Configuration getHibernateConf() { if (hibernateConf == null) { // hibernateConf=new Configuration();//*.hbm.xml方式 hibernateConf=new AnnotationConfiguration().configure();//注解方式 hibernateConf.buildSessionFactory();//注解方式必须的 } return hibernateConf; } private static PersistentClass getPersistentClass(Class<?> clazz) { synchronized (EntityUtil.class) { PersistentClass pc = getHibernateConf().getClassMapping( clazz.getName()); if (pc == null) { // hibernateConf = getHibernateConf().addClass(clazz);//*.hbm.xml方式 pc = getHibernateConf().getClassMapping(clazz.getName()); } return pc; } } /** * 功能描述:获取实体对应的表名 * * @param clazz * 实体类 * @return 表名 */ public static String getTableName(Class<?> clazz) { return getPersistentClass(clazz).getTable().getName(); } /** * 功能描述:获取实体对应表的主键字段名称,只适用于唯一主键的情况 * * @param clazz * 实体类 * @return 主键字段名称 */ public static String getPrimaryKey(Class<?> clazz) { return getPrimaryKeys(clazz).getColumn(0).getName(); } /** * 功能描述:获取实体对应表的主键字段名称 * * @param clazz * 实体类 * @return 主键对象primaryKey ,可用primaryKey.getColumn(i).getName() */ public static PrimaryKey getPrimaryKeys(Class<?> clazz) { return getPersistentClass(clazz).getTable().getPrimaryKey(); } /** * 功能描述:通过实体类和属性,获取实体类属性对应的表字段名称 * * @param clazz * 实体类 * @param propertyName * 属性名称 * @return 字段名称 */ public static String getColumnName(Class<?> clazz, String propertyName) { PersistentClass persistentClass = getPersistentClass(clazz); Property property = persistentClass.getProperty(propertyName); Iterator<?> it = property.getColumnIterator(); if (it.hasNext()) { Column column = (Column) it.next(); return column.getName(); } return null; } }
hibernate.cfg.xml:需要这个文件,这是唯一的缺点。
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/managerdb</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/shop</property> <property name="connection.username">root</property> <property name="connection.password">ynb</property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> --> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">10</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> <!-- <mapping package="pp.entity"/> --> <mapping class="pp.entity.Department"/> <mapping class="pp.entity.Element"/> <mapping class="pp.entity.Employee"/> <mapping class="pp.entity.EmployeeType"/> <mapping class="pp.entity.Goods"/> <mapping class="pp.entity.GoodsType"/> <mapping class="pp.entity.GoodsFactoryType"/> <mapping class="pp.entity.ProductAssembleRecord"/> <mapping class="pp.entity.PersonalInfo"/> <mapping class="pp.entity.Product"/> <mapping class="pp.entity.SalaryType"/> <mapping class="pp.entity.Storage"/> <!-- <mapping class="pp.entity.StoreroomKeeper"/> --> <mapping class="pp.entity.CheckRecord"/> <mapping class="pp.entity.CheckRecordType"/> <mapping class="pp.entity.EncourageRecord"/> <mapping class="pp.entity.EncourageRecordType"/> <mapping class="pp.entity.MonthSalaryRecord"/> <mapping class="pp.entity.MonthSalaryType"/> <mapping class="pp.entity.MonthSalary"/> <mapping class="pp.entity.StorageRecord"/> <mapping class="pp.entity.TradeRecord"/> <mapping class="pp.entity.TradeRecordType"/> <mapping class="pp.entity.FundRecordType"/> <mapping class="pp.entity.FundRecord"/> <mapping class="pp.entity.Fund"/> <mapping class="pp.entity.SalaryCareInfo"/> <mapping class="pp.entity.StaticInfo"/> <mapping class="pp.entity.SaleAchievementTakePercent"/> <mapping class="pp.entity.ProductionRecord"/> <!-- <mapping class="pp.entity.EmployeeProductionRecord"/> <mapping class="pp.entity.DepartmentProductionRecord"/> --> <mapping class="pp.entity.ProductionRecordType"/> <mapping class="pp.entity.TestEntity"/> </session-factory> </hibernate-configuration>
评论
2 楼
bnmnba
2012-04-19
369485270 写道
楼主在吗 你这个注解方式根本就不行 报错啊 org.hibernate.HibernateException: /hibernate.cfg.xml not found 晕死 很急啊 能加个QQ 帮我看看嘛 谢谢了 QQ369485270
呵呵,忘了说明了,hibernate.cfg.xml文件是必须的。
1 楼
369485270
2012-03-20
楼主在吗 你这个注解方式根本就不行 报错啊 org.hibernate.HibernateException: /hibernate.cfg.xml not found 晕死 很急啊 能加个QQ 帮我看看嘛 谢谢了 QQ369485270
发表评论
-
hibernate报错:Cannot add or update a child row: a foreign key constraint fails
2012-02-12 21:40 14172我遇到这个问题的原因是:把主键作为外键关联到了其他表的主键。 ... -
hibernate+mysql float类型无法插入小数
2012-02-09 16:43 2653往数据库里面插入小数,结果被四舍五入为整数。当时看见这个情况让 ... -
Hibernate3的DetachedCriteria支持
2012-02-07 17:47 943转:http://dev.yesky.com/241/2033 ... -
hibernate获得实体的主键、表明、列名
2012-01-15 17:13 0转:http://blog.csdn.net/fhwb ... -
hibernate报错:Use of @OneToMany or @ManyToMany targeting an unmapped class:
2012-01-15 10:47 4412报错如下: org.hibernate.Annotat ... -
Hibernate @Column(s) not allowed on a @ManyToOne property
2012-01-15 02:16 9471在写一个自关联的实体时报错:org.hibernate.Ann ...
相关推荐
默认表名为`hibernate_unique_key`,列名为`next_hi`。主键生成通过以下步骤: - 获取Hi值:从数据库表中读取`next_hi`,加1后保存回表。 - 获取Lo值:在0到`max_lo`范围内循环取值。 - 通过公式`hi * (max_lo + ...
例如,`@Entity`注解标识一个类为Hibernate实体,`@Table`指定对应的数据库表名,`@Id`标记主键字段,`@GeneratedValue`定义主键生成策略等。此外,`@Column`用于指定列名和类型,`@ManyToOne`、`@OneToMany`、`@...
2. @Table:指定实体对应的数据库表名,可以设置别名、序列化等属性。 3. @Id:标识实体的主键字段,可以与@GeneratedValue结合使用自动生成主键。 4. @GeneratedValue:定义主键生成策略,如.AUTO、.IDENTITY、....
开发人员可以通过查阅`hibernate-mapping-3.0.dtd`文档来获取更详细的属性定义和使用方法,以便在实际开发中灵活运用。 总之,`hibernate.hbm.xml`文件是Hibernate的核心配置文件,它清晰地定义了Java对象和数据库...
1. **实体类(Entity)与表映射**:Hibernate通过`@Entity`注解定义一个Java类为数据库中的表,`@Table`注解指定对应的表名。实体类的属性对应表中的列,`@Column`注解用于定义列名。 2. **属性映射(Field Mapping...
使用JPA的注解,如`@Entity`(标识实体类)、`@Table`(指定表名)、`@Id`(主键)、`@GeneratedValue`(主键生成策略)、`@Column`(指定列名和属性)等,可以让转换过程更简单,因为这些信息可以直接被工具读取。...
1. 连接数据库:工具会首先连接到指定的数据库,获取数据库的元数据信息,如表名、列名、约束等。 2. 分析表结构:根据数据库中的表结构,工具会解析出每个表的字段类型、主键信息以及可能存在的关联关系。 3. 生成...
2. @Table:指定实体对应的数据库表名。 3. @Id:定义实体的主键字段,对应表中的主键列。 4. @GeneratedValue:控制主键的生成策略,如自增、UUID等。 5. @Column:定义字段属性,如长度、是否允许为空等。 6. @...
5. `<property>` 元素表示实体类的属性,`name` 是 Java 中的字段名,`column` 是对应数据库表中的列名。 `TestHibernate` 类是一个简单的测试类,展示了如何在 Hibernate 中进行数据库操作: 1. 静态初始化块中,...
2. `@Table`: 定义实体类对应的数据库表名及属性。 3. `@Id`: 标识类中的主键字段,每个实体类至少有一个`@Id`注解的字段。 4. `@GeneratedValue`: 配合`@Id`注解,定义主键生成策略,如自动增长、UUID等。 5. `@...
- `<id>`:主键字段名、列名。 - `<generator>`:定义主键生成策略,如increment、sequence、identity、native、uuid、hilo等。 **Hibernate的主键生成策略** - `increment`:在内存中自增,不适合集群环境。 - `...
比如,@Entity表示这是一个数据库表映射的类,@Table指定对应的表名,@Id标识主键字段,@Column定义列名等。 数据持久化是Hibernate的核心功能之一。通过Hibernate,我们可以通过CRUD(Create、Read、Update、...
例如,`@Entity`表示该类为一个数据库实体,`@Table`指定对应的数据库表名,`@Id`则标识类中的主键字段。 2. **实体类映射** - `@Column`: 用于字段,映射到数据库表的列,可以设置列名、长度、是否可为空等属性。...
`@Entity` 注解表示这是一个实体类,`@Table(name = "students")` 指定对应的数据库表名,`@Id` 标记主键字段,`@GeneratedValue` 用于自动生主键值,而 `@Column` 注解用于标记普通字段并指定其在数据库表中的列名...
例如@Table、@Column、@Id等注解分别用于指定表名、列名和主键。 5. **主键生成策略**: Hibernate提供了多种主键生成策略,如.AUTO(由数据库自动生成)、.TABLE(通过独立的表生成)、.SEQUENCE(使用序列号)等。...
- `<property>`元素用于配置普通属性映射,其`name`属性指定了类中的属性名,如果没有指定`column`属性,则默认使用属性名作为数据库列名。 #### 四、总结 通过以上步骤,我们已经完成了使用Hibernate实现Java对象...
例如,@Table、@Column、@Id等注解分别用于指定实体对应的表名、列名和主键。 3. Session:Session是Hibernate的主要工作单元,它负责对象的持久化操作。创建、更新、删除和查询数据库记录都通过Session接口完成。 ...
如`@Table`定义表名,`@Column`定义列名,`@ManyToOne`、`@OneToMany`等表示关联关系。 在"第一个手写Hibernate"项目中,你可以亲手实践上述步骤,通过编写代码来了解Hibernate的每一个环节,加深对ORM的理解。同时...
注解如`@Table`定义表名,`@Column`定义列名,`@OneToMany`, `@ManyToOne`, `@OneToOne`和`@ManyToMany`定义关联关系。 5. Session接口: Session是Hibernate的核心接口,它负责对象的持久化操作,如保存、更新、...